코드란?
프로그래밍은 프로그램을 만드는 행위를 의미합니다. 프로그램을 만들기 위해서는 우선 설계도가 필요합니다. 이 설계도에 해당하는 것을 프로그래밍에서는 코드(code) 혹은 소스(source)라고 합니다. 코드에는 만들고자하는 프로그램이 어떤 모양이고 어떤 기능이 있어야 하는지가 적혀 있습니다. 이 코드를 컴퓨터에게 제출하면 컴퓨터는 마법처럼 프로그램을 만들어 줍니다. 그런데 컴퓨터의 설계도인 코드는 건축의 설계도와는 다릅니다. 건축은 설계도만으로 건물이 만들어지지 않지만 프로그래밍은 코드만 작성하면 나머지 작업은 모두 컴퓨터가 알아서 처리하기 때문입니다. 바로 이런 이유 때문에 코드는 설계도일 뿐 아니라 만들려는 제품 자체라고 할 수 있습니다.
언어란?
그런 점에서 프로그래밍에서 코드란 매우 중요합니다. 일반적으로 코드는 아래와 같이 생겼습니다. Hello world를 화면에 표시하는 코드들 입니다.
JavaScript
alert('Hello world');
Java
System.out.println("Hello world");
PHP
echo 'Hello world'
Python
print "Hello, World!"
여기서 JavaScript, Java, PHP와 같은 것들을 프로그래밍 언어라고 합니다. Hello world를 화면에 표시하는 똑같은 기능임에도 조금씩 방법이 다르죠? 이러한 것들(JavaScript, Java, PHP)을 프로그래밍 언어라고 합니다.
정리해봅시다. 여러분이 하고자하는 일은 Hello world를 화면에 출력하는 것입니다. 다시말해서 컴퓨터에게 화면에 Hello world를 출력하라고 명령을 하는 것이죠. 이 명령은 그냥 하면 안되고 컴퓨터가 알아들을 수 있는 방법으로 하셔야 합니다. 바로 이 방법이 언어(Language)입니다. 그리고 컴퓨터가 알아들을 수 있는 언어는 꽤 많습니다. 위에서 JavaScript, Java, PHP는 그런 언어 중의 하나 입니다.
스크래치란?
스크래치는 바로 그 수많은 프로그래밍 언어 중의 하나 입니다. 그런데 이 언어의 특징은 코드가 조금 다르게 생겼다는 점입니다. 아래 링크를 클릭하시면 고양이가 Hello world를 말하고 있을 것입니다.
http://scratch.mit.edu/projects/24398322/
즉 고양이가 Hello world를 말하라고 컴퓨터에게 명령 한 것이죠. 그 명령은 아래와 같습니다.
어떤가요? 조금 이상하게 생겼죠? 이것은 스크래치가 다른 프로그래밍 언어와 구분되는 매우 중요한 특징입니다. 같은 기능을 하는 자바스크립트의 코드를 살펴보죠.
alert('Hello world');
스크래치는 블럭(block)이라고 블리는 상자 모양의 명령을 마우스로 드래그해서 조립하는 것을 통해서 프로그램을 만듭니다. 이런 점 때문에 스크래치에서는 자신이 필요한 명령을 따로 기억할 필요가 없습니다. 명령을 찾아서 마우스로 드래그하면 됩니다. 그런 점에서 문서 작성이나 추상적인 사고가 아직 발달하지 않은 아이들이나 프로그래밍을 처음 시작하는 초심자에게 매우 좋은 프로그래밍 교재라고 생각합니다.
스크래치와 아이들을 어떻게 만나게 할 것인가?
지금까지 필자가 설명한 내용은 선생님들을 위한 내용입니다. 필자는 이러한 내용을 아이들에게 말하지 말 것은 보통 당부드립니다. 프로그래밍은 고도로 추상화된 개념들을 사용하는 분야이기 때문에 이러한 개념을 아이들에게 노출시키면 자칫 '나는 프로그래밍을 할 수 없는 사람이야'라는 인식을 심어줄 수 있기 때문 입니다. 이런 이유로 너무 저학년(초등학교 2학년 이하)을 대상으로 프로그래밍을 가르치는 것도 필자는 주의해야 한다고 생각합니다. 다시 말해서 필자는 스크래치를 사용해볼 수 있는 적정 연령을 초등학교 3학년 이상으로 생각합니다. 추상적인 개념을 노출시키는 것 보다는 아이들이 흥미를 느낄만한 것을 먼저 제공하는 것이 바람직하다고 생각합니다. 저의 경우는 수업을 시작할 때 바로 스크래치로 만들어진 프로그램들을 아이들이 직접 사용해보도록 합니다.
저의 경우 처음 만나는 스크래치 수업에서는 스크래치로 제작된 잘 만들어진 프로그램의 링크가 있습니다. 이 링크의 프로그램을 아이들이 직접 사용해봄으로서 스크래치를 통해서 무엇을 할 수 있는지를 직접 체험할 수 있도록 유도하고 있습니다. 아이들이 적당히 몰입 되었을 때 하고 있던 게임을 마무리하도록 시간을 주세요. 그리고 이런 게임을 우리도 만들어 볼 수 있다고 이야기를 해줍니다.
"우리가 해본 것들이 바로 이 스크래치로 만든 것입니다."
사족. 게임과 프로그래밍
필자도 게임에 과몰입되는 아이들이 걱정이 됩니다. 그 중에도 필자가 제일 걱정하는 것은 한참 생산자 기질이 왕성한 나이에 너무 일찍 소비자로 전락하게 된다는 점입니다. 게임 만들기를 통해서 단순한 소비자가 아니라 생산자의 입장에 설 수 있도록 도와줄 수 있었으면 좋겠습니다. 이를 통해서 자신을 표현하는 표현욕을 유도할 수 있다면 아이들은 이 욕구를 충족시키기 위해서 노력하게 될 것입니다. 그 과정에서 학교에서 배우는 지식들이 단지 좋은 성적을 거두기 위한 것이 아니라 현실의 문제를 해결하는데 사용되는 소중한 것이라는 것을 스스로 이해하게 될 것이라고 생각합니다.
수업준비
스크래치는 웹을 통해서 프로그래밍을 할 수 있는 도구입니다. 그런 이유로 컴퓨터가 바뀌어도 자신이 하던 작업을 계속 이어서 할 수 있는 장점이 있습니다. 하지만 인터넷이 원활하지 않은 환경에서는 수업을 진행할 수가 없습니다. 선생님은 이런 상황에 대비를 해야 합니다. 아래 링크를 클릭하시면 스크래치 오프라인 버전을 다운 받을 수 있습니다.
http://scratch.mit.edu/scratch2download/
영어로 되어 있어서 간단하게 번역을 해서 옮기면 아래와 같습니다.
1. 스크래치를 사용하기 위해서는 어도브 에어가 필요합니다. 어도브 에어는 아래 링크를 통해서 다운받을 수 있습니다.
http://get.adobe.com/kr/air/otherversions/
2. 스크래치를 설치합니다. 스크래치는 아래 링크에서 다운받을 수 있습니다.
http://download.scratch.mit.edu/Scratch.air
위의 파일을 운영체제별로 다운받고 USB 메모리와 같은 외장 저장 장치에 보관해서 준비해주세요. 인터넷이 작동하지 않는 환경에서는 큰 도움이 될 것입니다.
회원가입
초등학교 3학년 이상은 보통 회원가입 절차를 경험해본 경우가 있습니다. 하지만 그렇지 않을수도 있기 때문에 회원가입 절차를 상세하게 설명할 필요가 있습니다. 하지만 회원가입은 우리 수업의 핵심이 아니기 때문에 기계적으로 설명하고 자신의 아이디 비밀번호는 기억하기 쉽게 수첩등에 적어서 보관하도록 해주세요. 또한 다른 사람에게 알려주면 안된다는 것도 함께 이야기해주세요. 1:1 강의라면 보호자가 직접 계정을 만들어주는 것도 무관하다고 생각합니다.