소프트웨어가 정해진 일을 처리하기 위해서는 여러 종류의 명령어가 정의되어야 합니다. 어떤 명령어는 간단하고 쉬운 일 처리를 하고, 어떤 명령어는 복잡하고 어려운 일 처리를 하지요. 수없이 다양한 명령어가 있지만 모든 명령어는 약속한 방법에 따라 정의됩니다. 여기에서 ‘약속한 방법’이란 ‘소프트웨어 구조’를 말하지요.
따라서 소프트웨어 구조에 대한 이해를 바탕으로 코딩을 시작해야 합니다. 그 중에서도 소프트웨어 구조의 핵심인 ‘순차 구조’를 이해하는 것이 중요하지요. ‘순차 구조’란 말 그대로 명령어들이 정해진 순서대로 실행되는 구조입니다. 우리가 어떤 작업을 수행하기 위해 가장 먼저 하는 것은 해야 할 일들의 순서를 결정하는 것입니다. 여기에서 ‘해야 할 일’은 ‘명령어’라고 볼 수 있습니다. 따라서 해야 할 일(명령어)을 순서대로 정리하여 표현할 수 있다면 코딩뿐만 아니라 일상에서의 일도 잘 처리할 수 있게 되지요.
순차 구조를 단순하게 여기고 쉽게 생각할 수도 있지만 사실은 그렇지 않습니다. 누구나 순서를 생각할 수 있지만, 순서가 뒤죽박죽이면 일 처리가 제대로 되지 않습니다. 반면, 매끄럽게 처리되는 일들은 순서가 잘 잡힌 경우가 대부분이지요. 아이들은 최적의 절차를 떠올리고 표현하는 연습을 통해 문제 해결 능력을 키우게 됩니다.
코딩은 아이들이 순서대로 사고하고 표현하는 역량을 계발하는 데 큰 도움이 됩니다. 이것이 코딩 교육이 지향해야 할 본질이며 코딩이 중요한 이유이지요.
아이들이 소프트웨어의 순차 구조에 대한 이해를 바탕으로 자기가 맞닥뜨린 일의 절차를 스스로 고민하고 해결할 수 있는 지혜를 키워 가길 바랍니다.
소프트웨어가 정상적으로 동작하기 위하여 미리 약속한 방법을 ‘소프트웨어 구조’라고 합니다. 그중 첫 번째 구조는 일을 순서대로 처리하는 ‘순차 구조’이지요. 그리고 두 번째 구조인 ‘선택 구조’가 있습니다. ‘조건’에 따라 처리해야 할 일의 내용이 달라지는 구조이지요.
선택 구조는 순차 구조보다는 복잡하고 어렵게 보입니다. 사람들이 어떤 일을 처리하는 것은 대부분 조건에 따라서 하게 되나, 이때 확인해야 하는 다양한 조건들은 숨어 있는 경우가 많습니다. 그렇기 때문에 숨어 있는 조건을 찾아내어 적절히 표현하는 것은 단순하지 않은 일이지요.
집을 나서려고 하는데 비가 오면, 우산을 챙겨야 합니다. 그리고 비가 많이 내릴 경우, 신발이 젖지 않도록 장화를 신을 수 있으며, 옷이 젖지 않도록 비옷을 입을 수도 있지요. 우산을 챙기고 장화를 신으며 비옷을 입는 것은 “비가 오는가?”와 “비가 많이 오는가?”의 조건을 만족할 때 행하는 것입니다. 이와 같이 우산을 챙기고 경우에 따라서는 장화를 신고 비옷을 입도록 하는 것은 자연스럽게 할 수 있는 것입니다. 그러나 이러한 행동을 할 수 있도록
조건을 찾아서 글로 표현하는 것은 쉬운 것이 아니지요. 조건을 잘 못 찾거나, 조건에 따른 행동을 잘못 표현할 경우에는 엉뚱한 결과를 초래할 수 있으니까요.
코딩의 경우도 마찬가지입니다. 의도하는 일을 처리하기 위하여 숨어 있는 조건을 찾은 후에, 조건에 따라 처리할 일(명령어)을 구분하여 표현해야 합니다. 이때 사용하는 명령어가 ‘조건문’이지요. 프로그램 구조 중 하나인 선택 구조를 표현하는 조건문을 자유자재로 사용할 수 있다면 코딩이 쉬워질 것입니다.
숨어 있는 조건을 찾고, 조건에 따라서 처리할 내용을 구분하며, 이러한 내용들을 표현하는 코딩은 아이들에게 생활 속의 안목도 심어 줄 것입니다.
요사이 코딩에 대한 관심과 열기가 대단합니다. 초등학교에서 ‘소프트웨어 교육’이 정규 교과목으로 편성되기도 했고, 우리 아이들이 소프트웨어로 무장한 기계(로봇)와 경쟁해야 하는 미래 사회에 대한 걱정도 점점 커지기 때문일 것입니다.
암을 진단하는 ‘인공지능(AI) 의사’는 ‘사람 의사’보다 오진율이 낮다고 합니다. 실제로 암 환자들은 인공지능 의사의 의견을 사람 의사의 의견보다 신뢰한다고 하고요. 바둑에서도 인간 최고수들은 인공지능 바둑 기사에게 연패하였습니다. 이런 상황에서 소프트웨어 코딩 교육의 열기가 뜨거운 것은 당연한 결과입니다.
하지만 코딩 교육의 현실은 어떨까요? 올바른 방향으로 코딩 교육이 이루어지고 있는지 짚어 볼 필요가 있습니다. 초등학교에 편성된 코딩 교육 시간은 지금의 상황을 고려할 때 턱없이 부족합니다. 다양한 현장에서 이루어지는 코딩 교육의 형태도 염려스럽습니다. 코딩 교육을 시행하는 핵심 목표는 ‘사고력 계발’에 있습니다. “생각이 먼저다.”라는 것이지요. 그러나 현재 이루어지고 있는 코딩 교육의 상당 부분은 사고력을 키워 주는 과정 없이 코딩 기술만을 교육하는 형태가 대부분입니다. 이것은 코딩 교육의 본질에서 벗어난 것입니다.
조기교육 현상은 코딩 분야도 예외가 아닙니다. 키즈 코딩 교육 분야에 관심이 집중되고 있지요. 하지만 어린아이들이 흥미를 가지고 재미있게 코딩의 본질을 이해할 수 있는 교재는 찾아보기 힘듭니다.
《준비땅! 코딩》 시리즈는 미래 사회 주인공인 아이들이 소프트웨어의 본질과 원리를 자연스럽게 채득할 수 있게 구성되어 있습니다. 이 책은 총 4권으로 이루어진 시리즈 중 첫 권으로, 소프트웨어와 코딩의 기본 개념을 잡아 주는 책입니다. 우리가 매일 맞닥뜨리고 사용하는 물건 중 하나인 ‘신호등’에 숨어 있는 소프트웨어 코딩 관련 내용을 재미있는 그림과 이야기로 이해하기 쉽게 조목조목 설명하고 있지요. 아이들은 책을 읽으면서 소프트웨어와는 전혀 관련이 없을 것 같은 물건에도 소프트웨어가 숨어 있다는 사실을 자연스럽게 이해하고 받아들이게 됩니다.
《준비땅! 코딩》은 세상에 존재하는 소프트웨어를 찾을 수 있는 역량, 이해하고 개선할 수 있는 역량, 더 나아가 새로운 아이디어를 창조할 수 있는 역량 등을 계발하도록 도와줄 것입니다.
《준비땅! 코딩》이 코딩 교육의 본질을 찾아가는 지침서 역할을 하리라 기대합니다.
소프트웨어가 정상적으로 작동하기 위하여 ‘미리 약속한 방법’을 소프트웨어 구조라고 합니다. 그중 첫 번째 구조는 일을 순서대로 처리하는 순차 구조였으며, 두 번째 구조는 조건에 따라 처리해야 할 일의 내용이 달라지는 선택 구조였지요. 이제는 마지막 구조인 반복 구조를 살펴볼 차례입니다.
반복 구조는 순차 구조와 조건에 따라 동작하는 내용이 달라지는 선택 구조를 모두 포함하는 구조입니다. 반복은 순차적으로 진행되어야 하며, 얼마나 반복할 것인가는 조건에 따라 선택적으로 진행되기 때문입니다. 결과적으로 반복 구조는 가장 복잡한 소프트웨어 구조라고 할 수 있지요. 반복 구조는 반복해야 하는 ‘횟수’의 개념이 포함됩니다. 즉, 몇 번 반복을 할 것인가에 대한 내용이 포함되는 것이지요. 이러한 반복 횟수는 미리 정해질 수도 있으나, 그렇지 않을 수도 있습니다. 특정 조건에 따라 반복할 것인지 아닌지를 결정할 수 있는 것이지요.
사실 우리는 반복 구조를 매일 경험하고 사용합니다. 체육 시간에 선생님이 달리기 연습을 위하여 운동장을 ‘다섯 바퀴’ 돌라고 하셨다면, ‘다섯 바퀴’라는 반복 횟수가 지정된 반복 구조를 사용한 것입니다. 반복 횟수가 지정되지 않는 반복 구조도 있습니다. 수학 시간에 선생님이 모든 학생은 평가 점수가 ‘80점 이상’이 될 때까지 수학 공부를 반복해야 한다고 말씀하셨다면, 반복 횟수는 지정되지 않고 반복을 시행할지 말지를 결정하는 기준인 ‘80점 이상’만을 제시한 것이지요.
이처럼 반복 구조의 개념을 이해하고, 자신들의 일을 해결하기 위하여 반복 구조를 자유자재로 이용하는 것은 쉽지 않습니다. 꾸준한 연습이 필요하지요. 해결해야 하는 일들의 순서를 결정한 후에, 조건에 따라 해야 할 일들을 정리하고, 반복 구조를 이용하기 위하여 반복 횟수나 조건 등을 찾아서 글로 표현할 수 있다면 코딩은 완성됩니다. 아이들이 세 가지 프로그램 구조를 이해하고 생활 속에서 자연스러운 코딩을 할 수 있는 날이 오기를 희망합니다.