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

[개발자 아빠의 교육실험]③컴퓨터와 대화하는 법

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

2019년 02월 11일 13:30 프린트하기

 

 “헬로, 월드(Hello, world)!”를 출력하는 간단한 C 프로그램과 실행 과정. 1978년  출판된 《The C Programming Language》의 첫 예제로 소개됐다. 전산학 교과서로 널리 사용되는 이 책의 저자 데니스 리치는 C 언어 창시자이기도 한데, 2011년 그의 죽음을 맞이한 전 세계 개발자들은 “굿 바이, 월드(Good bye, world)!”라며 그의 죽음을 애도했다.
“헬로, 월드(Hello, world)!”를 출력하는 간단한 C 프로그램과 실행 과정. 1978년  출판된 《The C Programming Language》의 첫 예제로 소개됐다. 전산학 교과서로 널리 사용되는 이 책의 저자 데니스 리치는 C 언어 창시자이기도 한데, 2011년 그의 죽음을 맞이한 전 세계 개발자들은 “굿 바이, 월드(Good bye, world)!”라며 그의 죽음을 애도했다.

“헬로, 월드(Hello, World)!”

 

태초에 빛이 있었다면, 코딩에는 “헬로 월드!”가 있다. 누구나 프로그래밍 언어를 배울 때 가장 처음 작성해보는 프로그램이 위 두 단어를 출력하는 것이다. 간단해 보이는 프로그램이지만, 문제 정의 및 코드 작성, 컴파일과 실행이라는 코딩의 모든 과정을 경험할 수 있다. 코딩 교육의 전부를 담고 있다해도 과언이 아니다. 모든 프로그래밍 언어 교재에 빠지지 않는 이유다. 아이의 코딩 교육에 있어 “헬로 월드!”는 어떤 것이고, 무엇을 가르쳐야 할까?

 

코딩 교육은 코딩의 모든 과정을 배우는 것이다. 코딩이란 어떤 것일까? 위키피디아에서 코딩은 “하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술”로 정의돼 있다. 일반인 입장에서 보면 외계어가 따로 없다. 어려울 땐 차근차근 따라가 볼 필요가 있다. 일단 ‘추상 알고리즘’ 및 ‘프로그래밍 언어’, ‘구현’이라는 단어가 눈에 띈다. 세 가지 단어만 파악하면 코딩 교육의 윤곽을 보다 구체적으로 그릴 수 있을 것 같다. 쉽게 풀어나가 보자.

 

알고리즘은 문제 해결을 위한 일련의 절차를 말한다. 굳이 수학으로 공식화한 형태를 가질 필요는 없다. 일상 언어로 충분히 쓰여질 수도 있다. ‘파인만의 문제 해결 알고리즘’이란 게 있다. 3단계로 구성되어 있는데, 내용은 다음과 같다. 첫째, 문제를 적는다. 둘째, 깊이 생각한다. 셋째, 답을 쓴다. 말은 참 쉽다. 역대급 물리학자인 리처드 파인만에게만 적용될 수 있다는 한계만 제쳐둔다면, 일상 언어로 이해하기에 모자람이 없다. 명령이 있고, 그것들의 순서가 있다. 이게 알고리즘의 전부다. 대상으로서 문제, 그리고 해결 과정으로서 명령과 순서.

 

세상에 풀어야 할 문제는 무궁무진하다. 문제의 가짓수 만큼 알고리즘도 무한하다고 볼 수 있다. 문제 해결에는 추상화와 모델링이 필요하다. 바꿔 말하면, 잔머리가 필요하다는 것이다. 인류가 지금까지 켜켜이 쌓아올린 잔머리의 역사를 모두 배울 수 있을까? 그것도 초등 2학년 수준의 아이가? ‘외판원 순회 문제(Travelling Salesman Problem)’가 대표적인 NP문제(용어설명 참고)임을 지금 당장 배울 필요는 없다. 요리 초보자에게 맛있는 스테이크를 만들기 위해 당장 필요한 것은 유명 셰프 고든 램지의 레시피가 아니다. 가스레인지를 켜거나 프라이팬을 다루는 방법이다. 해결 대상으로서 문제는 교육에서 제외할 것이다. 이제 남은 것은 명령과 순서다.

 

<캡션2> 8일부터 10일까지 서울 강남구 SETEC에서 열린 ′2019 초등교육 박람회′에서 아이가 피지컬 코딩 교구에 대한 소개를 듣고 있다. 로봇이 목적지에 도착하도록 전진 및 후진, 좌우 회전 명령을 순서대로 조합하는 방식으로 코딩이 이뤄진다. 단순한 명령과 직관적인 아이콘 블록은 컴퓨터와 대화를 쉽게 만들지만, 할만한 게 별로 없어 보이는 것도 사실이다.
8일부터 10일까지 서울 강남구 SETEC에서 열린 '2019 초등교육 박람회'에서 아이가 피지컬 코딩 교구에 대한 소개를 듣고 있다. 로봇이 목적지에 도착하도록 전진 및 후진, 좌우 회전 명령을 순서대로 조합하는 방식으로 코딩이 이뤄진다. 단순한 명령과 직관적인 아이콘 블록은 컴퓨터와 대화를 쉽게 만들지만, 할만한 게 별로 없어 보이는 것도 사실이다.

프로그래밍 언어는 명령과 순서를 기술하는 데 필요한 특별한 약속에 불과하다. 사람과 컴퓨터가 이해할 수 있는 형식이면 충분하다. 사람과 컴퓨터 사이에 인식적 연결고리라는 것이다. 사실 컴퓨터는 그리 영리하지 못하다. 단지 계산 속도가 광속에 가까울 뿐이다. 그런 까닭에 컴퓨터에게 내릴 수 있는 명령은 크게 세 가지 종류 밖에 없다. 판단과 분기, 그리고 계산이다. 모든 프로그래밍 언어는 나름대로의 목적과 형식에 따라 이 3가지를 정의하고 조합한 것일 뿐이다. 대동소이하게 말이다.

 

이 세 가지는 코딩 교육에서 아이에게 가장 중요하게 가르쳐야 할 것들이라 봐야 한다. 순차적 절차와 작업 흐름 제어에 대한 논리력이 만들어지면, 그제서야 컴퓨터와의 원활한 소통이 가능해질 것이다.

 

일단 컴퓨터와 소통이 가능해지면, 드디어 컴퓨터는 사고의 놀이터로 변할 수 있다. 세상에 풀어야 할 문제는 가득하다. 도구적 인간으로서 제작 욕구를 자극하는 대상도 넘쳐난다. 다만, 이에는 항상 위험과 비용이 필요하다는 게 문제다. 예컨대, 레고 시리즈 가운데 하나를 만들고 나면, 다른 시리즈가 지갑이 열리기 기다린다. 울음이란 협박과 애교라는 회유 스킬을 시전하여 천신만고 끝에 획득한 레고 시리즈가 별다른 재미를 주지 않을 수도 있다. 억지로 한 번이라도 만드는 모습을 아빠에게 보여줘야 다음 기회가 있다는 것 정도는 아이들도 이미 알고 있다.

 

반면, 코딩은 큰 비용이 필요치 않은 실패 경험을 제공한다는 장점이 있다. 코드를 작성하고, 컴파일한 후 실행하면 그만이다. 필요한 비용은 프로그래밍 언어를 배우고 개발 환경을 익히는 데 필요한 노력 정도다. 프로그래밍 언어의 형식과 개발 환경에 대한 교육도 필요하다는 말이다.

 

코딩 교육 소프트웨어 엔트리는 프로그래밍 언어와 구현, 개발 환경을 모두 포함하고 있다. 코딩하는 데 엔트리로만 충분하다. 언어적 형식은 레고 블록과 같은 모양으로, 개발 환경은 웹에서 바로 접속 가능하다는 점에서 매우 훌륭하다. 다만, 코딩 언어에 있어 명령과 순서가 모호한 것이 흠이다. 자칫 잘못하면 판단과 분기, 연산에 대한 그릇된 개념을 가지게 할 수도 있을 것이다. 지나치게 아동 친화적으로 만들어진 한계라 생각한다. 개발자로서, 그리고 교육 실험자로서 필자에게 한계에 대한 보완의 몫은 남겨졌다.

 

다양한 종류의 코딩 교육 관련 교구들. 컴퓨팅 사고력 함양이란 코딩 교육의 목적에 부합하는지 의문이다. 체험 위주의 따라 하기만으론 4차 산업 혁명을 준비하기에 역부족으로 보인다.
다양한 종류의 코딩 교육 관련 교구들. 컴퓨팅 사고력 함양이란 코딩 교육의 목적에 부합하는지 의문이다. 체험 위주의 따라 하기만으론 4차 산업 혁명을 준비하기에 역부족으로 보인다.

엔트리가 가지는 또 다른 문제는 객체 지향 언어의 특성과 다중스레딩 방식에 기대고 있다는 점이다. 전공자도 처음 접할 때 사람에 따라 매우 혼란스러워하는 개념들이다. ‘먼 길’이란 시가 있다. "아기가 잠드는 걸 보고 가려고 아빠는 머리맡에 앉아 계시고. 아빠가 가시는 걸 보고 자려고 아기는 말똥말똥 잠을 안 자고"라는 싯구가 나오는데 다중스레딩 방식에서 피해야 할 대표적인 교착 상태를 잘 나타낸다. 정교한 설계가 필요한데, 아이 수준과 거리감이 느껴진다. 사실 순차적 프로그래밍 사고력을 갖추고 난 후 접해야 할 부분이지만, 엔트리가 기왕에 그렇게 설계된 마당에 어찌할 도리가 없다. 아이의 이해도를 살펴보며 전진과 후진을 조절할 필요가 있다.

 

교재는 실습의 소재로만 사용하기로 마음 먹었다. 차라리 교재를 응용해 판단 및 분기, 연산이라는 논리적 흐름 제어에 대해 단계적 학습이 가능하도록 교안을 재구성하기로 했다.

 

교육은 총 17 시수로 진행해 보려고 한다. 정규 교육 과정이 1년 17 시수 이상으로 설계됐기 때문이다. 거기에 수업 시간도 40분 이내로 맞추고자 한다. 학교와 동일한 기준으로 해보고 어떤 결과를 가져오는지 확인하기 위해서다.   

 

지난해 여름 방문한 초등교육 박람회의 장면들이 떠오른다. 천편일률적인 저가 키트와 “와, 신기하다” 이상의 반응을 보이지 않던 아이들. 바로 체험 위주 교육의 한계다. 지난 주말 열린 2019 초등교육 박람회 모습도 크게 다르지 않았다. 무작정 절차를 외워 따라 하는 것으로는 코딩 교육 원래의 목적을 만족시킬 수 없을 것이다. 뭐라도 스스로 만들어 볼 수 있는 컴퓨팅 논리력을 지닐 수 있게 하는 게 교육 실험의 1차적인 목표다. 고기도 먹어 본 사람이 잘 먹는다. 해본 만큼 느는 게 코딩이다. 백문이 불여일타(打)임을 아이에게 끊임없이 전달할 것이다.

 

“Keep Calm and Write Code!”

 

용어설명

NP 문제.  다항 시간 안에 답을 찾는 법은 모르지만 답이 옳은지 확인하는 데 얼마의 다항 시간이 필요한지는 알 수 있는 문제를 말한다. 

 

※필자소개

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


 


김기산

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

2019년 02월 11일 13:30 프린트하기

 

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

네이버밴드 구글플러스

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

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

관련 태그뉴스