주메뉴바로가기.. 본문바로가기

[개발자 아빠의 교육실험]⑤두 번째, 코딩 걸음마 떼기

카카오스토리 네이버밴드 구글플러스

2019년 03월 11일 17:06 프린트하기

삑삐비빅, 척. 아이가 현관문을 여는 소리다. 6시 15분. 아이가 돌아오는 시간이다. 태권도 학원 버스를 이용하기에 그 시간은 괘종시계의 종소리 마냥 정확하다. 교육은 6시 20분부터 7시까지, 40분 동안 진행된다. 저녁 식사 후 진행하는 것도 가능하지만, 아무래도 배가 채워지면 집중도가 떨어질 수밖에 없다. 게다가 아이에게 저녁 식사 후 30분은 다양한 어린이 티브이 채널의 트렌드의 조사, 분석에 할당된 소중한 시간이다. 저녁 식사 전에 진행해야 하는 이유다. 식탐이 앞서는 아이라면 문제 될 소지가 있지만, 아이는 아빠와 다르게 먹는 것을 그리 좋아하지 않는다. 다행이라면 다행이다.

 

필자의 첫 번째 컴퓨터인 대우 IQ-1000. MSX 호환 기종으로, 기본 탑재한 MSX BASIC을 배울 수 있었다. 넥슨 컴퓨터 박물관에서 오랜만에 볼 수 있었는데, 빠져 버린 오른 방향 키마저 무척이나 반가웠다. MSX 기종은 당시로서는 그래픽 성능이 우수했기 때문에 목적과 달리 게임 용으로도 많이 이용됐다. 그래서 위 사진과 같이 방향 키가 망가지는 일은 무척 흔했다. 게임에 있어 방향 키 조작은 필수이기 때문이다.
필자의 첫 번째 컴퓨터인 대우 IQ-1000. MSX 호환 기종으로, 기본 탑재한 MSX BASIC을 배울 수 있었다. 넥슨 컴퓨터 박물관에서 오랜만에 볼 수 있었는데, 빠져 버린 오른 방향 키마저 무척이나 반가웠다. MSX 기종은 당시로서는 그래픽 성능이 우수했기 때문에 목적과 달리 게임 용으로도 많이 이용됐다. 그래서 위 사진과 같이 방향 키가 망가지는 일은 무척 흔했다. 게임에 있어 방향 키 조작은 필수이기 때문이다.

“이 컴퓨터는 이제부터 네 것이야.” 교육을 시작하기 전, 아이에게 귀띔했다. 일종의 선물인 셈인데, 컴퓨터에 대한 아이의 관심을 증폭시키기 위함이었다. 누구나 첫 번째 경험이란 것이 있다. 특히, 처음으로 갖게 되는 물건은 기억을 깊게 흡수하곤 한다. 컴퓨터를 처음 갖게 된 것이 30여 년 전이지만, 아직도 그떄의 느낌은 여전히 생생하다. 아톰 CPU를 탑재한 태블릿 피씨 정도면 아이의 첫 번째 컴퓨터로 모자람이 없을 것이다.

 

문제 해결 과정을 세분화하는 체험을 시도했다. 지난 시간과 마찬가지로 연습장부터 가지고 오라고 했다. 아이는 어제의 의아함을 보이지 않았다. 어디까지 하는지 해볼 테면 해보라는 것일까.

 

문제를 주고, 조건을 제시했다. 문제는 초코 잼 바른 크래커가 먹고 싶은 상황이고, 초코 잼과 크래커의 위치 및 잼 바르는 칼 등 각종 도구의 존재가 조건이다. 명령은 아빠가 수행한다는 것도 덧붙였다. 대신 아빠는 연습장의 명령대로만 움직인다는 조건을 추가했다.

 

명령의 순서를 연습장에 써보라 했다. “크래커를 집어”, “잼을 집어”, “칼을 들어”, “잼을 칼에 발라” 등 아이는 어제보다 구체적인 명령을 써 내려갔다. 어제의 성가신 질문이 싫긴 싫었나 보다. 그럼에도 불구하고, 빈 틈은 많다. 어제보다 조금 더 괴롭혀 보기로 했다.

 

명령이 가지는 빈틈을 차례대로 보여줬다. 오른손으로 먼저 크래커를 집었다. 왼손으로는 잼을 들었다. 다음으로 칼을 잡아야 하는 순서인데, 손이 모자라 칼을 잡을 수 없는 상황을 보여줬다. 난감해 하는 표정도 아이에게 일부러 보여줬다. “크래커를 내려놓고 칼을 잡으면 되잖아.”라며 어이없어하는 아이에게 “그것도 명령 순서에 넣었어야지.”라고 꼬집었다. 뚜껑을 열지 않으면 잼을 바를 수 없다는 것도 놀리 듯 보여줬다. 아이의 표정이 좋지 않다. 금방 울 것 같은 분위기다. 몇 가지를 더 지적하려다 멈춰야만 했다. 아이의 울음에서 비롯할 아내의 치솟는 분노와 경천동지할 ‘등짝 스매싱’을 피하기 위함이다.

 

지금까지 일종의 ‘정확한 설명서 시험(Exact Instructions Challenge)’을 한 셈인데, 그다지 기대했던 효과는 보이지 않는 듯하다. 코딩의 개념 정립을 실생활의 예에서 거두고자 했던 바인데, 교육적 효과는 둘째치고 아이의 흥미를 이끌어내는 것조차 어렵다는 게 타당할 듯하다. 2일차 교안에 크누스(Knuth) 알고리즘 조건 중 명확성 개념 전달이라고 거창하게 끄적인 자신이 부끄러워졌다.

 

필자의 교육 기술이 박약하다는 것이 큰 이유일 수 있다. 그리고, 그 기술이 하루아침에 만들어질 수 있는 성질의 것도 아니기에 지금의 문제가 두고두고 반복될 것임은 쉽게 예측할 수 있다. 언플러그드 코딩 방식 유지 여부에 대해 고민이 필요한 이유다.

 

초코 잼 바르기 문제에 대한 아이의 명령 기술서. 필자가 포괄적인 명령의 헛점을 지적할 때마다 명령을 추가한 흔적이 보인다. 인간의 행위에 대한 명령 세분화는 사실 그 끝을 알 수 없다는 한계가 있다. 행위자 각각의 의지와 지식이 모두 동일하지 않기 때문이다. 인간의 행위가 컴퓨터 명령과 같이 원자적으로 환원될 수 없는 이유다. 김기산 제공
초코 잼 바르기 문제에 대한 아이의 명령 기술서. 필자가 포괄적인 명령의 헛점을 지적할 때마다 명령을 추가한 흔적이 보인다. 인간의 행위에 대한 명령 세분화는 사실 그 끝을 알 수 없다는 한계가 있다. 행위자 각각의 의지와 지식이 모두 동일하지 않기 때문이다. 인간의 행위가 컴퓨터 명령과 같이 원자적으로 환원될 수 없는 이유다. 김기산 제공

한두 번 더 진행해본 후 이 방식의 지속 여부를 판단하기로 했다. 명령에 대한 추가적인 보완은 숙제로 내줬다. 나중에 작성된 숙제를 보고 판단할 것이지만, 크게 달라지지 않을 듯 하다는 게 지금의 솔직한 심정이다.  

 

컴퓨터를 켰다. 지난 시간에 마무리 못한 엔트리 환경 소개에 앞서 복습부터 진행했다. 윈도우 로그인부터 엔트리 접속, 기본 코드 생성 및 실행까지 아이가 직접 하는 것을 지켜봤다. 큰 무리 없이 아이가 해내는 것을 보며 대견함이 느껴졌다. 필자가 봐도 팔불출이 따로 없다.

 

생성된 기본 코드로 엔트리 기초를 설명하려고 했다. 기본 코드에는 엔트리봇이란 객체가 있고, 객체는 코드를 포함하고 있다. 이와 같이 엔트리 코드는 객체와 이에 포함된 코드로 구성되는데, 먼저 이 둘의 관계를 인식하는 게 필요하다. 객체 지향 언어인 파이선(Python)에 기반하고 있기 때문이다. 당장 9살 아이에게 객체의 개념을 이해시키는 것부터 쉽지 않아 보인다. 그런데, 엔트리는 한 단계 더 건너뛰었다. 맙소사! 객체를 대신하여 오브젝트란 이름을 사용한다. 객체도 쉬이 와닿지 않는데, 그보다 더 멀게 느껴지는 오브젝트라니! 엔트리 제작자의 고심을 이해하지 못하는 바 아니지만, 적어도 필자가 느끼기에 객체보다 불친절한 작명이다.

 

오브젝트 추가부터 시작하기로 했다. 실제로 객체를 만들고 지우다 보면 객체와 코드의 관계를 어렴풋이나마 느낄 수 있을 것이라 생각했다. 오브젝트 추가하기 버튼을 누르면 갖가지 모양의 엔트리봇 오브젝트들이 보인다. 아이에게 맘에 드는 엔트리봇을 고르고 생성해보라고 했다. ‘해변에 간 엔트리봇’이란 오브젝트가 선택됐고, 공기 튜브를 끼고 있는 엔트리봇 그림이 화면에 나타났다. 아이는 자기가 원하는 그림이 화면에 추가된 것만으로도 즐거워했다. 보시기에 참 좋았다고 하지 않았던가. 창조자의 희열을 아이도 약간이나마 느끼고 있을 것이다.  

 

두 오브젝트를 번갈아 클릭하면서 코드의 유무를 비교하도록 했다. 한 쪽은 이미 생성된 코드가 있고, 다른 쪽은 빈 창만 나온다. 새로 만든 오브젝트에는 코드를 아직 작성하지 않아서 아무것도 없는 것이라고 설명했다. 반면 기존 오브젝트에는 원래부터 오른쪽으로 이동하는 코드가 들어있다고 설명했다. 아이는 반신반의했다. 다른 방법이 필요했다. 시작하기 버튼을 이용해 실행시켜 보라고 했다. 아이가 시작하기 버튼을 누르자 기존 엔트리봇은 오른쪽으로 움직였다. 반대로 추가한 오브젝트는 가만히 멈춰있다. 두 오브젝트의 코드가 있고 없음이 그 이유임을 강변했다. 친절한 설명이 아닌, 될 대로 되라는 식의 자포자기였음을 고백한다. 다행히 아이는 “아하!”라며 이해가 된다는 듯 표정을 지었다. 이렇게 또 한고비를 넘겼다.

 

40분의 시간이 얼마 남지 않았다. 코드 이름 바꾸고 저장하는 방법을 알려줬다. 그리고, 저장한 코드를 불러오는 방법을 알려줬다. 한글 입력 타이핑이 더딘 듯하여 대신해주려 했으나, 아이는 자기가 직접 하겠단다. 그래. 맞다, 잊고 있었다. 백문이 불여일타(打)다.
아이가 오브젝트를 추가하고 시작버튼을 이용해 엔트리봇을  움직이게 하고 있다. 

40분의 시간이 얼마 남지 않았다. 코드 이름 바꾸고 저장하는 방법을 알려줬다. 그리고, 저장한 코드를 불러오는 방법을 알려줬다. 한글 입력 타이핑이 더딘 듯하여 대신해주려 했으나, 아이는 자기가 직접 하겠단다. 그래. 맞다, 잊고 있었다. 백문이 불여일타(打)다.

 

 

도움자료

제가 작성한 2일차 교안 (초코잼 바르기 문제)을 공유합니다.

https://drive.google.com/open?id=1t5HdlnfnZWpAs9YHXDXaZnlDz2_2vhqw

 

※필자소개

김기산(calculmount@gmail.com) 기업에서 IT 디바이스 소프트웨어 개발자로 일하고 있다. 대학에서 전자공학을 전공하고 20년 가까이 리눅스 개발자로 지내다가 뜻밖의 계기로 육아휴직을 냈다. 지난해 한층 강화된 '아빠의 달' 제도의 수혜자로, 9살 아이와 스킨십을 늘리며 복지 확대의 긍정적인 면을 몸소 깨닫고 있다.


김기산

calculmount@gmail.com

카카오스토리 네이버밴드 구글플러스

2019년 03월 11일 17:06 프린트하기

 

혼자보기 아까운 기사
친구들에게 공유해 보세요

네이버밴드 구글플러스

이 기사가 괜찮으셨나요? 메일로 더 많은 기사를 받아보세요!

17 + 7 = 새로고침
###
과학기술과 관련된 분야에서 소개할 만한 재미있는 이야기, 고발 소재 등이 있으면 주저하지 마시고, 알려주세요. 제보하기

관련 태그뉴스