[과학의 달 특별 칼럼] 왜 아이들은 코딩(Coding)을 배워야 하는가?

김석희 교사|경기호암초등학교
미국 오바마 대통령은 미국역사에서 처음으로 흑인대통령이기도 하지만 처음으로 코딩을 한 대통령으로 남을 것 같다. 그는 2014년 Hour of Code 라는 기념행사에 참여하여 코딩을 배우는 학생들을 격려하며 코딩교육의 중요성을 강조하였다.
왜 코딩교육인가?
코딩이란 간단하게 컴퓨터에게 명령을 내리는 것으로 정의할 수 있다. 그러나 코딩을 그리 간단하게 정의하기에는 뭔가 석연치 않다. 원래 코딩은 힐버트가 제안한 위대한 문제중에 하나와 관련이 있다.
독일 수학자 힐버트는 1928년 세계적인 수학자 회의에서 23개의 인류가 해결해야할 문제를 거론하였다. 그 중에 하나는 ‘원칙적으로 수학의 모든 문제를 순서대로 해결할 수 있는 일반적인 기계적 절차가 있는가?’ 라는 문제를 제기했다. 이 문제를 해결하기 위해 튜링이라는 수학자가 내놓은 해결책이 튜링 머신인데, 이 머신에서 수행하는 명령, 절차가 바로 오늘날에 프로그래밍이다. 그러니 컴퓨터 프로그래밍은 사실 수학문제를 푸는 것이나 다름없는 것이다.
코딩이란 말과 비슷하게 사용되는 말 중에서 프로그래밍이란 말이 있다. 많은 맥락에서 두 개의 용어는 같은 의미로 사용되고 있다. 코딩이라는 말에 포함된 의미는 하나의 언어를 다른 언어로 번역하다는 의미를 포함하고 있다. 예를 들어 영어를 모스부호로 바꾸거나, 혹은 자바 코드로 바꾸는 등을 의미한다. 이러한 번역에 의미에만 치중하여 컴퓨터 프로그램을 만드는 사람을 “Code Monkey” 라고 낮추어 부르기도 한다.
컴퓨터 프로그래밍을 단지 번역한다, 흉내 낸다고 낮춰 부르는 것은 억울한 면이 많이 있다. 프로그래밍 또는 코딩을 하기 위해서는 문제 분석하고 이해한 후에, 알고리즘을 만들고, 알고리즘 구현을 위한 구현 환경(예를 들어 컴퓨터의 메모리, CPU 속도, 네트워크 환경)을 검토해야한다. 이러한 것은 그저 시작에 불과하다. 그 후에 실제의 컴퓨터 언어( 예를 들어 C++,PHP, JAVA 등)에 맞추어 코딩을 해야 한다. 코딩을 한후에는 디버깅이라고 하는 과정을 거쳐 야만 최종적으로 완성해야 한다.
프로그래밍 또는 코딩은 문제를 해결하는 유한한 자동화를 위한 기계적 절차를 찾는 과정이다. 이 과정은 수학 문제에서 유래되었으며 유한한 절차를 찾기 위해서는 해결한 문제와 관련한 많은 지식과 알고리즘 훈련과 모델링이 필요하다. 그러므로 단지 “Coding Monkey” 라고 부르는 것은 이해의 부족에서 온 것으로 생각할 수 있다.
프로그래밍이 튜링이전에는 없었던 것은 아니었다. 고대 그리스에서는 대수적 계산을 자동으로 하기 위해서 일종의 계산기를 고안하였다. 이 기계는 다양한 크기의 기어를 여러 방향으로 배치하여 계산을 수행한다. 그 외에도 여러 수학자들에 의해 기계적 계산을 위해 기어와 같은 기계적 장치를 이용하는 계산기들이 사용되었다.
1800 년대에 와서 유명한 찰스 바베지는 그의 분석 기계를 조정하기 위해 구멍이 뚫린 카드를 사용하였다. 어떤 사람은 찰스 바베지의 분석 기계를 이용하여 베르누이 수를 계산하기 위해 구멍카드를 만든 Ada Lovelace 가 첫 번째 컴퓨터 프로그램을 만든 사람이라고도 한다. 수학적 계산에 미리 정의된 계산 방법과 출력에 대한 정의, 이러한 방법들을 사람이 인식할 수 있는 방법으로 조직화 하는 것이 현대의 컴퓨터로 발전 되었다.
튜링은 이러한 컴퓨터의 프로그래밍에 대해 메모리를 제안한 사람이였다. 즉 명령과 데이터를 메모리라는 곳에 저장하고 하나씩 명령을 처리기계(CPU)로 불러와 처리하도록 하는 아이디어를 제안한 사람이다. 이러한 처리방법은 현대의 컴퓨터의 모체가 되었다.
컴퓨터에 명령을 내리는 언어는 여러 종류가 있다. 코딩 입문자를 위한 그래픽 블록 기반의 스크래치, 엔트리 등이 있고, 텍스트를 직접 입력하는 자바, C++ 등과 같은 언어들도 있다. 이러한 언어들의 기본적인 작동 방법은 아래 그림과 같다. 사람에게 친숙한 언어나 그림으로 기술된 언어 규칙이 있다. 이것을 규칙에 맞게 작성하면 번역 프로그램은 이것을 기계가 이해할 수 있는 형태로 번역한다. 그러면 컴퓨터가 기계어로 번역된 명령을 하나씩 실행하게 된다.

[그림] 컴퓨터 언어의 역활
코딩 교육의 열풍이 불며 컴퓨터 언어를 무료로 배울 수 있는 여러 사이트들이 생겨나고 있다. 그 중에서 가장 유명한 곳 중에 하나가 바로 Code.org 이다. 이 교육 사이트는 글자를 모르는 어린이들도 이용할 수 있으며 다양한 연령대에 맞는 어린이들을 위한 코딩 교육 프로그램을 제공하고 있다. 미국에서 만들어진 사이트임에도 불구하고 50여개의 언어로 번역하여 제공하고 있다.

[그림] Code.org 코딩교육 프로그램
또, 하나의 빼놓을 수 없는 곳이 있다. MIT 미디어 랩에서 만든 스크래치 사이트이다. 2014년 10월 기준으로 한달에 천만명이 방문하고 있으며, 등록된 회원이 3,726,565이며 6,100,000 이상의 프로젝트가 업로드 되어 있다.

[그림] 스크래치 프로그래밍 사이트(scratch.mit.edu)
어린이들을 위한 코딩 사이트만 있는 것은 아니다. 최근에 한글 서비스를 시작한 코드아카데미가 있다. 생활코딩이라는 개념을 내세우며 프로그래밍을 처음 배우는 어른들을 위해 HTML & CSS, JAVA script, Python 등을 배울 수 있게 하고 있다.

[그림] 코드아카데미 한글 사이트(www.codecademy.com)
오바마 대통령이 역사적인 코딩 명령은 무엇이었을까? 바로 아래와 같은 명령이다.
moveForward(100); “ 앞으로 100칸 전진! ”
미국과 영국등을 비롯한 여러 나라에서 코딩교육에 대한 사회적 합의를 이뤄내고 많은 투자를 하고 있다. 우리나라도 이제 바야흐로 코딩하는 사회, SW 중심 사회로 전진하려고 하고 있다.
우리 모두 “moveForward(100);” 했으면 좋겠다.
![]() |
김석희 (경기 호암초등학교 교사) |
---|---|
(현) 고려대학교 연구교수, 컴퓨터교육학회 이사 | |
고려대학교 대학원 이학 박사 | |
2012년 STEAM 교육 우수교원, 올해의 과학교사상 수상 |
- 다음
- [과학의 달 특별 칼럼] 소행성 탐험대 미국의 돈(Dawn) 무인 탐사선 2015.04.21
- 이전
- [과학의 달 특별 칼럼] 풀꽃, 봄의 교향악을 그리다 2015.04.19