
코딩교육의 목표는
자신이 원하는대로
컴퓨터를 다루고,
복잡한 문제를 단순화하는
컴퓨팅 사고를
익히는 것입니다.
유아코딩교육, 안해도 괜찮아요
전 세계가 코딩교육 열풍입니다. 오바마 전 미국 대통령과 고 스티브 잡스 등 전세계 유명인사들도 코딩교육의 중요성을 강조했습니다. 우리나라도 2018년부터 학교현장에 소프트웨어 교육이 도입됐습니다.
이처럼 국내를 포함한 전세계가 코딩교육에 열풍인 데는 분명히 이유가 있습니다. 코딩교육으로 얻는 장점이 뚜렷하기 때문입니다. 코딩교육은 창의적인 문제해결력, 컴퓨팅 사고력을 길러주는 좋은 교육입니다. 4차 산업혁명시대를 살아가야 할 아이들이 익혔을 때 유용한 교육이 분명합니다.
그러나 저는 미취학아동, 유아기에 실시하는 코딩교육은 반대합니다. 수년간 코딩교육 현장을 취재하고, 전문가를 만나 조언을 구한 뒤 내린 결론입니다.
첫째, 유초등학생을 대상으로 하는 코딩교육은 현재 대부분 온라인 게임방식입니다. 너무 일찍 게임방식에 노출되고, 중독확률도 자연히 높아집니다. 또 코딩교육을 이유로 너무 어린 나이부터 컴퓨터를 자주 접하게 됩니다. 현재의 유아들은 이미 생활 속에서 전문가들이 과도하다고 지적할 만큼 스마트폰과 태블릿PC, TV에 충분히 노출되고 있습니다. 여기에 더해 코딩교육을 이유로 추가적인 노출을 하게 되면 일상노출량이 더욱 늘어나게 됩니다.
둘째, 유아기엔 굳이 코딩교육말고도, 아이의 창의력을 향상시키거나 뇌발달을 돕는 다른 놀이방법이 충분히 많습니다. 즉 가성비가 떨어집니다.
컴퓨터를 사용해야 한다는 코딩교육의 단점을 해소하기 위해, 언플러그드로, 즉 컴퓨터를 사용하지 않고 작은 칩이나 그림지도 등을 활용해 코딩교육을 하는 방식도 있습니다. 코딩교육의 핵심인 '알고리즘(순서도)' 이해를 시키기 위해 다양한 화살표 모양의 칩을 사용해 <입력>과 <실행>의 개념을 이해시킨다는 취지입니다.
이 정도의 학습은 수학동화, 과학실험 등의 다른 체험으로 충분히 대체가 가능합니다. 또, 유아기엔 장시간을 투자해야 알고리즘의 개념을 힘들게 이해시킬 수 있지만, 초등학생이 됐을 땐 훨씬 적은 시간을 투자해 쉽게 개념을 이해할 수 있습니다.
초등학생부터 시작하는 코딩교육
우리나라에서 제가 생각하는 코딩교육의 시작 적기는 초등학교 3학년 내외, 또는 최소 초등학교에 입학한 이후입니다.
실제 우리나라 학교현장에 코딩교육(소프트웨어SW교육)은 2018년부터 중학교, 2019년부터 초등학교 고학년 위주로 시작되고, 사교육 범람을 방지하기 위해 매우 쉬운 수준으로 구성됐습니다. 공교육 코딩교육의 적응을 위해서라면 사교육을 고민할 필요는 없습니다.
따라서 유아자녀를 둔 부모님의 자세는, 코딩교육에 대한 전체적인 개념을 이해한 상태에서 아이가 초등학생이 된 이후에 어떤 방식으로 수년간 장기적으로 코딩교육에 대한 방향을 잡아줄 지 감을 잡고 있는 상태면 충분할 것입니다. 저는 지금 이것을 알려드리려고 합니다.
컴퓨터를 다스려라, 코딩교육의 목표
코딩교육 대체 왜 해야 하는 걸까요? 아이가 엄마에게 “엄마, 코딩교육은 왜 하는 거예요?” 라고 물으면 먼저 어떻게 대답을 해야 할지부터 생각해야 할 것입니다.
코딩교육을 하는 이유는 컴퓨터를 내 마음대로 만들고 움직이기 위해서입니다.
예를 들면 엄마는 아이의 질문에
“코딩교육을 왜 해야 되냐면 컴퓨터를 네 마음대로 다스리려고 필요한거야. 미래사회는 컴퓨터가 너무 많이 사용되고, 컴퓨터를 잘 모르면 나 대신 컴퓨터를 잘 다루는 사람에게 여러 가지 부탁을 해야 하고, 돈을 너무 많이 내야 하거든. 그러니까 컴퓨터를 적당히 다룰 줄 알아야 불편함 없이 살 수 있어. 그래서 네 생각에 컴퓨터를 어느 정도 다룬다 싶을 때까지 한번 배워보는 거야.”라고 말해줄 수 있을 것입니다.
컴퓨터를 다스리기 위해서는 컴퓨터에게 명령하는 방법을 알아야 합니다. 즉 코딩교육은 사전적으로는 컴퓨터에게 명령하는 법을 배우는 교육입니다.
그렇다면 컴퓨터에게 명령하기 위해서 어떤 교육을 해야 할까요?
컴퓨터는 지구인과 전혀 다른 외계인과 같습니다. 얘는 지구인과 완전히 다른 존재에요. 지구의 말도 모르고, 지구인처럼 음식을 먹지도 않죠. 전기가 들어오지 않으면 그저 플라스틱 상자에 불과하니까요. 이런 외계인을 내 마음대로 다스리려면 가장 먼저 어떻게 해야 할까요?
얘 말을 알아야겠죠. 얘 말을 알아야 내가 원하는대로 얘를 다스릴 수가 있겠죠. 이 외계인이 알아들을 수 있는 언어로 명령을 해야 얘가 이해하고 내가 시키는 대로 움직일 수 있을 테니까요.
그래서 코딩교육의 첫 번째 목표는 얘 말을 아는 것, 즉 컴퓨터 언어를 익히는 거예요. 컴퓨터에게 명령하려면, 컴퓨터가 알아들을 수 있는 말, 컴퓨터의 언어를 써야 하는 거죠. 이 컴퓨터 언어가 자바스크립트, 파이썬, C언어와 같은 컴퓨터 언어들이에요. 영어로 이뤄져있고, 각각의 컴퓨터 언어들은 마치 지구인의 프랑스어, 독일어, 영어처럼 컴퓨터를 다스리는 다양한 목적에 따라 문법도 다르고 말도 달라요. 사용목적에 적합한 컴퓨터 언어를 골라 만든 명령어가 ‘코드’, 이 코드를 입력하는 행위를 ‘코딩’이라고 합니다.
1) 스크래치의 원리
그런데 이 컴퓨터 언어들은 어려워요. 어려워서, 영어를 모국어로 쓰는 외국 아이들도 처음부터 바로 이 컴퓨터 언어들을 배우지는 않아요. 대신 ‘스크래치’라는 아이들도 쉽게 사용할 수 있는 컴퓨터 언어를 사용해요.
이 스크래치의 특징은 무엇이냐, 컴퓨터 언어가 어렵다고 했잖아요. 이 어려운 컴퓨터 언어들을 사탕알맹이를 포장지로 감싸듯이 노란색 레고 블록 안에 집어넣었어요. 그리고 그 블록 위에 아이들이 이해하기 쉽게 적어뒀어요. 예를 들면 ‘moveforward(100);’과 같은 컴퓨터 언어를 블록으로 감싼 뒤 그 위에‘앞으로 100 가기’라고 적어둔 거예요.
컴퓨터 언어가 복잡해요. 자바스크립트와 같은 컴퓨터 언어는 문자를 사용하는 컴퓨터 언어에요. 그래서 ‘moveforward(100);'과 같은 모든 명령어를 키보드로 직접 한자 한자 입력해야 해요. 이런 컴퓨터 언어는 철자가 하나라도 틀리면 안돼요. 컴퓨터가 이해하지 못하거든요. 이렇게 컴퓨터 언어의 철자를 틀렸을 때 우리는 ‘버그’가 일어났다고 해요.
스크래치는 이러한 버그를 근본적으로 차단해요. 즉, 모든 컴퓨터 언어는 미리 다 완벽하게 작성돼 있어요. 우리가 할 일은 그저 마우스를 움직여서 미리 만들어진 컴퓨터 언어들을, 레고 블럭 조립하듯이 하나씩 쌓기만 하면 돼요. 그래서 아이는 일일이 키보드로 ‘moveforward(100);’와 같은 수많은 컴퓨터 언어들을 외우고, 철자를 틀릴까 키보드로 입력하면서 신경쓰지 않아도 되는거죠. 원하는 컴퓨터 언어를 쌓기 위해 마우스만 움직이면 되니까요. 그래서 쉽게, 컴퓨터를 내 마음대로 움직여보는, 다스려보는 경험을 하는 거죠.
이러한 스크래치를 우리는 블록 기반형 프로그래밍 언어라고 해요.
2) 스크래치로 익히는 알고리즘과 컴퓨팅사고
그렇다면 여기서 우리는 두 번째 질문이 생기게 돼요.
‘컴퓨터 언어를 배워야 한다면서 블록으로 다 감싸버리면 아이는 뭘 배우나?’라는 질문 말이죠.
일단은 스크래치도, 엄연히 초급 단계의 컴퓨터 언어 중 하나라, 스크래치를 이용해서 간단한 프로그램을 만들 수 있어요. 다만 모든 명령어를 키보드로 입력하는 파이썬과 같은 문자 기반형 컴퓨터 언어를 사용하면 더욱 정교하고 뛰어난 프로그램을 빨리 만들 수 있는거죠. 그래서 질문에 대한 첫 번째 답을 하자면, 스크래치도 컴퓨터 언어라서 간단하게 컴퓨터를 내 마음대로 움직여 볼 수 있다, 이고요.
두 번째 답은, 이게 중요한데, 스크래치로 코딩교육의 가장 중요한 목표인 컴퓨팅 사고를 기를 수 있어요. 컴퓨팅 사고는 알고리즘을 짜는 훈련을 반복하면서 길러지거든요. 그리고 스크래치는 아이들이 알고리즘을 훈련하는데 가장 유용한 도구 중 하나예요.
알고리즘은 무엇일까요?
컴퓨터는 완전한 백지 상태와 같아서, 어떤 행위를 하라고 명령하기 위해서는 모든 단계를 순서에 맞게 빠짐없이 설명해줘야 해요. 이러한 단계를 ‘알고리즘’이라고 해요. 일종의 순서도라고 볼 수 있죠. 즉 컴퓨터에게 명령하기 위해서는 알고리즘을 먼저 짜고 코딩해야 해요.
이러한 알고리즘을 짜는 것이 어떻게 컴퓨팅사고력을 키우는 걸까요? 알고리즘을 익히면 두 가지 컴퓨팅 사고를 익힐 수 있어요. 첫 번째는 ‘어떤 중요한 요소도 빠지면 안된다’는 점이에요.
‘BBC와 함께 배우는 소프트웨어 기초 개념’의 알고리즘 편을 보면 양치질에 비유해 쉽게 설명해 줘요.
컴퓨터에게 양치질하는 법을 가르친다고 가정할게요.
‘치약뚜껑을 연다-> 칫솔에 치약을 조금 짠다->입을 연다->이를 잘 닦는다->물로 입을 헹군다->양치질 끝’ 여기서 양치질의 모든 단계를 순서대로 구성하는 것을 ‘알고리즘’, 그리고 ‘입을 연다’와 같은 각각의 명령어가 ‘코딩’이에요.
무엇 하나라도 빠지면 실패해요. ‘입을 연다’는 코딩이 빠진 알고리즘을 짰다고 가정해볼게요. 컴퓨터는 융통성이 없어요. 열리지 않은 입에 무조건 칫솔질을 할 거예요.
알고리즘을 짜면서 익히는 두 번째 컴퓨팅사고력은, ‘어떤 복잡한 문제도 최대한 단순화해 처리하라’예요. 똑같은 결과를 가져오는 명령을 컴퓨터에게 할 때, 어떤 학생은 100줄의 코딩으로 명령하는 반면, 어떤 학생은 단 2줄의 코딩만으로 명령한다면, 후자의 학생이 훨씬 컴퓨팅 사고력이 높은 거겠죠? 컴퓨터가 데이터를 처리하는데 드는 에너지도 훨씬 줄일 수 있고요.
예를 들면 컴퓨터가 가상현실의 정원에 가득 핀 100송이의 꽃에게 물을 주라고 명령하는 코딩을 작성할 때, ‘1번째 꽃에 물주기, 2번째 꽃에 물주기, 3번째 꽃에 물주기...’처럼 100번째 꽃까지 물을 주기 위해 100줄의 코딩을 하는 대신, ‘100회 반복; 0번째 꽃에 물주기’처럼 단 2줄로 코딩할 수 있는 능력을 말합니다.
이처럼 백지 상태의 컴퓨터에게 내가 원하는 행동을 실수 없이 순서대로 할 수 있도록 최대로 단순화해서 알고리즘을 짜는 과정에서 아이는 창의력이 길러지고 논리적으로 생각하게 되는거죠.
즉 창의적 문제해결력을 키우는 데 효과적인 코딩 교육에는 두 가지 목적이 있어요.
그 첫 번째는 컴퓨터 언어인 코드를 사용해 프로그램을 만드는 법을 배우는 것,
또 하나는 이러한 프로그램을 효율적으로 만들기 위해 정보를 연결, 융합해 복잡한 문제를 논리적으로 단순화해 해결하는 과정과 방법을 익히는 컴퓨팅 사고의 함양이에요. 컴퓨터적 사고, 코딩적 사고도 모두 같은 말입니다. 교사는 이 후자에 아이가 집중해서 배울 수 있도록 노력을 기울여야 해요.
코딩 교육의 본질이 프로그램의 완성과정에서 키울 수 있는 컴퓨팅 사고 기르기라는 사실을 모르면 자칫 복잡한 명령어만 기계적으로 외우는 무의미한 암기식 학습으로 빠질 우려가 있기 때문이에요.
코딩 교육의 핵심은 컴퓨팅 사고를 익히는 거라는 거죠. 스티브 잡스와 오바마 전 대통령이 강조하는 핵심도 컴퓨팅 사고를 하는 인간입니다.
