컴퓨터프로그래밍교육과 언어(외국어)의 벽, 사고와 글쓰기

범용적인 프로그래밍 언어로 아이들에게 컴퓨터프로그래밍을 교육하는데 가장 큰 걸림돌은 역시 ‘외국어’이다. 변수와 상수, 배열, 프로시져, 함수, 객체를 명명하는데 영어는 큰 장해물이 된다. 초등에서는 사고와 글쓰기를 통해 준비의 단계로, 중등에서 영어와 함께 본격적으로 시도해 보는 것은 어떨까?

각인효과

BASIC이 프로그래밍 언어로 우리에게 다가와 오타쿠 초호기들의 모니터 형광물질을 초록으로 불태우던 시절…

사실, 지금까지도 빌 게이츠 형님이 버리지 못한 이유를 이해할 수 있을 것 같은 ‘각인’ 효과와… (빌 형이 살아있을 동안에는 절대로 BASIC이라는 언어가 사라지지 않을 것이라는 예언도 있었지;;;)
프로그래밍에서 아이들은 일단 언어의 벽에 부딪히게 된다.

흔히들 명령어셋을 이야기하지만… 알고리즘을 구현하는데 실제로 명령어셋은 몇 개 안된다. 몇 개 안된다는 것은 시간이 지나면 저절로 익혀지는 것이라는 뜻인지라, 이 보다 변수/상수의 명명이 훨씬 아이들에게 어렵게 다가오는 것이고, 무척이나 중요한 습관이다.

이름붙이기

일전에, 상용 소프트웨어의 코드를 (루트는 비밀) 받아서 자연어처리를 위해 분해해 재가공한 적이 있다. 놀라운 사실은… 이 코드가 꽤 여러 차례 버전업을 했음에도 불구하고…

변수와 배열 정의가 $aa, $abc, $jaum(자음), $sajeun(사전) 이런 식으로 되어 있었다… 함수와 프로시져도 open_sajeun(사전열어?), nanum_munja(문자나눔?) 너무 놀라서 전체 코드를 다 봤는데… 부분부분 이런 식이었고, 다른 사람이 손댄 부분은 또 알아보기 쉬운 사전적 단어들이 이용되어 있었다.

프로그래밍 중 코딩교육에서 절대로 가볍게 생각해서는 안되는 부분이
$a=1
$b=2
$c=$a+$b
이런 것이라 생각한다.

일시적으로 사용하는 변수는 일시적이라는 의미의 단어tmp/temp등을 변수명 앞에 붙인다거나, 변수의 목적에 맞는 단어를 앞에 붙이고, 대소문자를 적절히 활용하고, 특수한 목적에 따라 언더바(_)를 이용하는 등의 룰이 있다. 이런 룰이 시작부터 각인되어야 할 부분이고, 기본적인 약속이므로 지키도록 해야 한다. 우리 아이들에게는 한글로 코딩할 수 있는 인터프리터가 나오지 않는이상… 결코, 쉽지 않은 부분이다.

생각하기와 글쓰기

그래서 초등학교에서 프로그래밍의 시작은 생각하기와 글쓰기와 생각하기와 글쓰기다. 이게 완성되어 중등학교에서 영단어와 매칭시키는 단계로 연결되어야 하지 않나 생각해본다. (영재아들 이야기는 일단 생략)

하고자 하는 알고리즘과 동작을 글로 남기고, 글을 읽어가며 문단문단을 순서에 맞게 재배열하고, 문장과 문장을 나열하여 연결하기 쉽도록 단어를 고치고, 처음부터 끝까지 함께 읽어가며 동작과 알고리즘을 정확히 이해하도록 하는 것이 시작이다.

교사와 함께 코딩하기

프로그래밍의 백미, 컴파일되어 실행되는 코드를 보면서 느끼는 성취감과 희열이다. 아이들에게도 물론 필요할 것이다. 어렵지 않다. 코딩은 교사가 해주면 된다. 아이와 옆에 앉아서 네가 내린 명령은 이렇게 작성하면 되고… 실행하면 이렇게 되는거야~ 실행해보자! 손으로 도화지에 그려온 오브젝트를 스캔해서 이미지로 변환시키고 코드에 넣는 활동이 바로 교사가 해야 할 역할이고, 보조교사가 도와야 할 부분이 아닌가 생각한다. 이런 활동 속에 스스로 해보고 싶은 아이들이 탄생할 것이고, 소양을 키워나가는 것은 그들의 몫으로 남겨두는 것은 어떨까?

우리 반에서 아이들과 시도해 본 것들에 대한 시행착오와 나름의 시도를 개선해 나가고 있지만, 항상 어려움에 부딪히는 것들이 저런 사고와 글쓰기 부분이고, 이런 활동이 선행되지 않으면 프로그래밍이라는 것이 그저 새로운 경험과 놀이 정도로 끝나게 되어 안타까움을 느끼고 있다.

(가르치는 사람이 컴맹이라 그런 것일지도 모르겠다… ㅠㅠ;;)

한국형 저작도구들은 어디로?

최근 영국을 비롯한 일부 선진국에서 컴퓨터 프로그래밍 원리를 수업에 활용하거나 컴퓨터 프로그래밍을 교육과정으로 진행하고자 한다는 소식이 들린다.

1. GREAT, KAS, 새빛

교육대학교 90년대 학번들은 한번쯤 들어봤거나 현장에서 각종 자료전을 통해 활용해 본 저작도구들이다.

뭐, 지금은 우리의 기억속에서 완전히 사라졌다.

GREAT는 알고리즘이나 복잡한 수치연산이 필요한 코드를 만드는 도구는 아니지만, 비교적 짧은 시간내에 효율적으로 학습용 소프트웨어를 개발할 수 있던 MS-DOS기반의 저작도구’였다’. 완성도는 별 다섯개 중 세개 반 정도?

KAS는 GREAT와는 다른 방식의 저작도구였다. 그래픽 도구도 제공되었고, 왠만큼 활용가능한 수치연산이 가능하고 화면 표현이 뛰어났던 것으로 기억된다. 솔직히 KAS를 오픈소스로 전환했거나, 다양한 플랫폼으로 개발되었다면 스크래치 정도는 뭐 우습게 볼 수 있을 정도의 강력한 도구로 탄생했을 것이다. 혹시나 해서 KAS를 찾아보았더니 http://www.kasnara.com 에서 KAS2010을 공개배포 중이다. ActiveX로 익스플로러 기반의 웹으로 실행이 가능하고, Server-Client 프로그래밍까지 지원 가능한 상태다.

새빛은 윈도우 기반의 플로어차트식 저작도구였다. 뭐 완성도는 가장 낮았지만, 윈도우기반에서 접할 수 있는 편리한 기능들이 돋보였었었었었다. 편리한 저작 인터페이스를 KAS와 합쳤으면 대박이었을지도…

2. 국산 저작도구들은 어디로?

한창 각종 연구대회들이 저작도구를 기반으로 제작되어 다양한 교육컨텐츠들이 탄생하고 세계 최고의 IT교육강국으로 뻗어나갈 도약기를 맞이하나 싶었는데, 갑자기 인터넷이 보급되고 윈도우가 사용되고 웹서비스가 급속도로 퍼져나가면서,  온통 웹과 HTML이 대세일 것이라는 심리가 생기기 시작했다.

물론, 저작도구들이 새로운 운영체제와 사용환경 변화에 발빠르게 대처하지 못한 문제도 있었겠지만, 웹서비스 예찬론자들로인해 저작도구들은 하나 둘 자취를 감추기 시작한다. 물론, 나도 웹이 대세가 될 것으로 예상하고 PERL로 CGI 만들어서 웹페이지 제작 알바도 했었지만, 그래도 꾸준히 비주얼베이직, 툴북, 오소웨어같은 도구들을 이용해 무언가를 만들어내고 있었다.

3. KAS 2014 발표!!

[KAS 2014] 윈도우7,맥OSX, 리눅스지원

  • 2D 벡터 그래픽 지원, 3D 오브젝트 활용 가능!
  • 플로어차트 형태의 손쉬운 프로그래밍
  • 학생들을 위한 명령어 100% 한글화
  • 모든 웹브라우저에서 HTML5로 실행!
  • 강력한 네트워크 서버-클라이언트 프로그래밍을 지원!
  • 라즈베리파이용 ‘라즈비안’ 탑재 및 하드웨어 제어 가능!

물론, 나름대로 생각해 본 광고다. 이렇게 우리나라에서 발표만 된다면 얼마나 좋을까.

이미 15년 전에 우리는 초등학교 실과시간에 저작도구를 이용한 프로그래밍을 가르쳤고, BASIC은 동네 컴퓨터학원에서 공짜로 가르쳐줬었다. C는 동네 형들 집에 놀러가서 배우던 중딩들의 비기(?)였다.

4. 뒷북이라도 제대로

뒷북이 분명하다. 하지만, 이제라도 제대로 울리면 된다. 교육에서 이야기하는 컴퓨터 프로그래밍이라는건 산업 인력을 양성하기 위한 기술교육 같은 한 부분이 결코 아니다.

  • 합리적인 순서대로 – 순차 실행
  • 자주 하는 일은 한 곳에서 – 함수와 프로시져를 통한 모듈화
  • 필요에 따라 나눠서 – 조건과 분기
  • 매일매일 규칙적으로 – 반복

인간만사를 크게 넷으로 구분하고, 삶을 설계하는 것을 블럭맞추기 연습을 해 보는게 컴퓨터 프로그래밍 교육이다. 학문적 연구나 공부는 말할 것도 없고, 요리, 건축, 제조, 예술 모든 분야에 컴퓨터 프로그래밍의 원리가 들어 있기 때문에, 어릴적 부터 이런 감각을 키워 디지털 시대에 적응과 복잡다단한 미래사회에 대비하자는 것이 목적인 것이다.

예상컨데, 지금까지 해온 행태를 보면 분명 교육부로부터

  1. MIT에서 만든 Scratch나 SUN의 Java 같은 언어 몇 가지를 찍어서,
  2. 컴퓨터프로그래밍교육 선도요원을 뽑고,
  3. 교사들을 열심히 연수시킨 다음에,
  4. 각 학교에 1년 10시간 필수적으로 프로그래밍교육을 실시하라! 지침을 내려보내고,
  5. 모든 교사를 대상으로 프로그래밍 직무연수 16시간 받도록 강요하고,
  6. 아이들은 프로그래밍 대회를 만들어서 마구 상주고
  7. 지도교사 표창을 주면서 독려

시퀀스대로 프로그래밍하고 컴파일하여 실행할 것 같다. 그저 기우였으면 좋겠다.

앞으로 여러 조각에 걸쳐 한국형(?) 컴퓨터 프로그래밍 교육에 대해 나름의 생각을 이야기 해볼까 한다.

 

:맥노턴.