SW칼럼 | 소프트웨어 중심사회

SW이야기 이동 SW칼럼 이동 SW칼럼

코딩이 소프트웨어 교육의 전부일까?

SW중심사회 2017-09-11 10280명 읽음

 

서점에 가서 소프트웨어교육 관련 도서를 찾아보면, ‘코딩’, ‘프로그래밍’이라는 단어가 들어가거나 특정 프로그래밍 언어를 활용하는 내용의 책이 대부분이다. 과연 코딩과 프로그래밍이 소프트웨어교육의 전부일까.

 

❚<Hello, World!> VS <Hello, Software!>

코딩은 사람의 명령어를 컴퓨터나 시스템이 이해할 수 있는 언어나 문법으로 바꾸는 것을 의미한다. ‘채널 9번으로!’라는 사람의 말 대신 리모컨 버튼 ‘9’를 누르는 것도 광의의 코딩이라고 할 수 있다. 비록 사람이 만들었지만 기계와의 의사소통을 위해 만든 언어이기에, 그 문법과 어휘, 용법은 사람의 언어와 크게 다르다. 마치 머나먼 타국의 언어 또는 태양계 저편의 외계언어로 보이기도 한다.
재미있는 것은, 거의 모든 프로그래밍 언어 학습에 있어 처음 나오는 예제는 바로 이것이다

 

puts("Hello, world!");    // C언어 기준, Hello world!가 최초로 언급된 언어

 

프로그래머는 기계에게 기계가 이해할 수 있는 언어로 코딩을 하지만, 정작 코딩이 하고 싶은 말은 인간 세계를 향한 인사, “Hello, World!”인 것이다.

 

 

코딩은 기계와 인간의 의사소통을 위한 프로그래밍으로, 소프트웨어교육이 강조되는 지금보다 훨씬 오래전부터 연구되었고 작업되었고 사용되었다. 어린 시절 컴퓨터학원(그때는 전산학원이라고 불렀다)에서 검은색 화면에 흰글씨, GW-BASIC을 배웠고, PRINT "Hello, World!" 코딩과 구구단 계산 코딩을 배웠던 기억이 있다. 교실 앞 칠판에 선생님께서 (동일하게 검은 칠판에 흰 분필로) 숫자와 알파벳으로 적은 무언가를 ‘틀리지 않고’ 그대로 ‘타이핑’하면 선생님께서 말씀하신 결과화면이 나왔다. 15줄이 넘는 코딩을 힘들게 타이핑했는데 결과가 나오지 않으면 모니터화면에 눈을 가까이 대고 무엇이 틀렸나 살펴봐야 했고, 십중팔구 쉼표나 알파벳 대・소문자, 알파벳 O를 숫자 0으로 쓴 경우였다. 재미가 없었다.

 

소프트웨어교육을 한다고 하면서 코딩교육만을 강조하는 것을 잘못되었다고 생각한다. 코딩교육이 소프트웨어교육은 아니다. 소프트웨어교육은 실생활의 다양한 문제를 컴퓨팅의 지식과 기술, 기능을 활용하여 효율적으로 해결하는 컴퓨팅 사고력을 신장시키는 교육이다. 컴퓨팅 지식을 활용하여 인간과 인간 사이의 의사소통을 통해 문제를 해결한다면 기계와의 대화인 코딩 과정은 필요없게 된다. 또한 문제 해결의 필요성과 해결 과정에서의 컴퓨팅 활용 방안이 계획되어 있지 않은 코딩은 의미가 없다. 2개의 영단어를 출력할 때에도 의미와 이유가 있어야 진짜 인사인 “Hello, World!”가 되는 것이다.

 

코딩이 소프트웨어교육의 전부는 결코 아니다. 오히려 코딩교육이 소프트웨어교육을 통해 이루어질 때 진정한 의미를 갖는다고 본다. 기계어로 단순 번역하는 과정이 아닌, 문제해결 과정의 하나로 다양한 프로그래밍 언어 가운데 가장 알맞은 언어를 선택하고 코딩의 오탈자보다는 문법과 용도를 알아가는 것이 진짜 코딩교육이라고 본다.

또한 코딩교육을 위한 프로그래밍 언어가 개발됨으로(교육용 프로그래밍 언어;EPL), 이제는 쉼표 하나, 알파벳 소문자 하나에 신경쓰지 않고 해결해야 하는 문제와 그 방법에 집중하게 되었다.

 

❚Hello, Scratch! Hello, Entry!

코딩을 쉽게 하기 위하여 개발된 여러 가지 교육용 프로그래밍 언어 가운데 우리가 주목할 것은 블록 기반의 언어이다. 장난감 블록을 틀에 맞게 순서대로 쌓는 것처럼, 텍스트 언어의 어휘와 문법이 블록 형태로 제공되고, 마우스포인터의 드래그&드롭으로 문법에 적합한 블록끼리 조립이 가능하다. 쉼표, 대・소문자의 헷갈림 없이 컴퓨터와 의사소통을 할 수 있는 것이다. 모국어를 기반으로 구현하고자 하는 내용대로 블록쌓기만 할 수 있다면, 모든 사람이 코딩을 할 수 있다.

 

학생교육에서 많이 쓰이는 교육용 프로그래밍 언어로는 스크래치와 엔트리가 있다.

 

 

스크래치Scratch는 MIT 미디어랩(Media Lab) 그룹이 2003년 개발한 교육용 프로그래밍 언어이다. 사용자는 화면상에서 도깨비sprites들의 행동을 결정하는 블록 연결을 통해 코딩한다. 스크래치라는 이름은 힙합 디제이들이 레코드판을 턴테이블에서 비비면서 새로운 소리를 만드는 디제잉 기술에서 유래되었다고 한다. 아마 새로운 창조의 의미를 담은 것으로 보인다.

엔트리Entry는 네이버 엔트리교육연구소에서 2013년에 개발된 블록 기반 코딩 프로그래밍 언어이다. 엔트리라는 이름은 ‘입장’, ‘시작’ 등으로 해석되는 영어 단어 entry에 소프트웨어교육의 첫걸음이라는 의미를 담았다고 한다.(엔트리교육연구소 답변)

 

두 교육용 프로그래밍 언어를 간단하게 비교해보자면 다음과 같다.

<지원언어>
스크래치는 미국에서 개발되었지만 한국어 지원이 가능하다(40개 이상 언어 지원). 엔트리는 한국에서 개발되었고 한국어, 영어, 베트남어가 지원되고 있다(2017.9월 현재)

<개발언어>
스크래치는 플래시로 개발되었다. 이미지 효과, 미디어 처리 등의 기능이 뛰어난 반면, 플래시 지원이 되지 않는 모바일 및 태블릿 디바이스와의 호환에는 어려움이 있다. 엔트리는 자바스크립트 기반으로 모바일 및 태블릿PC에서의 코딩도 가능하다.


<만들기>

스크래치와 엔트리 모두 블록 기반 코딩 프로그램이다. 구현하고자 하는 알고리즘을 순서에 맞게 가져와서 조립하면 코딩이 완성된다. 두 프로그램 모두 만들기와 작품공유, 토론/게시판 서비스를 제공하고 있다. 단, 스크래치는 엔트리에 비해 보다 세분화된 블록을 제공하는 반면, 엔트리는 특정 블록들이 이미 조립된 채 제공된다. 작게 분화된 블록을 여러 가지 방법으로 조립하여 다양한 코딩을 구현하는 데에는 스크래치가 유용하다고 할 수 있고, 큰 덩어리로 속도감있는 코딩을 통해 전체 알고리즘을 완성하는 데에는 엔트리가 유용하다고 할 수 있다.

<기타>

스크래치는 코딩에 운용하는 객체를 무대와 스프라이트로 나누는 반면, 엔트리는 오브젝트로 통합하였고 장면이라는 개념을 도입하여 스토리텔링에 활용할 수 있도록 하였다. 그리고 스크래치와 엔트리 모두 아두이노나 센서보드 등 피지컬 컴퓨팅 하드웨어와 연동이 된다. 그리고 엔트리와 달리 스크래치는 오프라인 버전을 지원하는데, 공정성 등을 이유로 인터넷 환경을 제공하지 않는 코딩대회에서 활용하기에 적합하다.

 

스크래치와 엔트리 모두 학습하기와 작품 공유하기 기능을 제공하여 학생들이 스스로 학습하고 결과물을 공유하며 토론하며 학습을 지속할 수 있다.

 

❚교육용 프로그래밍 언어 수업 사례

 

 

마지막으로 학생들과 교육용 프로그래밍 언어 수업을 진행한 사례를 공유하고자 한다. 전차시 언플러그드 교육활동을 통하여 연필과 종이로 다양한 명령어를 활용하여 문제 해결을 위한 알고리즘을 구현하는 학습 기회를 제공하고, 미디어 자료를 통해 실제 프로그래머들의 코딩 장면을 소개한다. 화면에서 쏟아져 나오는 알파벳과 각종 기호들로 주눅이 들어있는 학생들에게 “짠” code.org 사이트를 안내하며 블록 기반 코딩을 소개한다. 필자는 주로 [Hour of Code]에 있는 튜토리얼 중에 ‘모아나:길찾기’나 ‘겨울왕국’을 이용한다. ‘모아나:길찾기’는 실제 애니메이션 주인공이 직접 나와서 기능을 설명하고, 19단계에 걸쳐 긴장감있는 모험이야기가 펼쳐서 학생들의 흥미를 높일 수 있고 자연스럽게 블록 기반 코딩과 친해질 수 있다. 알고리즘의 기본 형태인 순차, 반복, 조건문을 연습할 수 있고, 마지막 단계에서는 다양한 코딩을 활용할 수 있는 기회도 제공된다. ‘겨울왕국’은 학생들이 좋아하는 엘사와 안나가 나와서 학습을 진행하는 재미도 있고, 특히 자신이 조립한 블록 코딩이 실제 자바스크립트JavaScript 코드로 바꾸어 확인할 수 있다. 블록 기반 학습과 실제 텍스트 기반 코딩의 연결고리라고 할 수 있다.

 

마지막 단계(모아나-19, 겨울왕국-20)를 통과하면, 수료 인증서가 발급된다. 아래쪽으로 내려보면 Hour of Code 참여 현황을 볼 수 있는데, 2017년 9월초 현재 우리나라(Republic of Korea)는 14번째 참여국가로 나타난다. 학생들과 함게 가정에서도 Hour of Code에 참여하자고 이야기하면서 다음 과제로 넘어간다(학원에서 공부할 필요가 없다고 강조한다).

 

다음으로 안내하는 교육용 프로그래밍 언어는 엔트리이다. 여러 가지 장점을 비교했을 때 선택한 결과이다(물론 스크래치도 좋은 프로그램이다). 엔트리 추천 강의에서 학년 수준에 맞는 [학습하기]를 진행하고, 블록 기반 프로그래밍과 알고리즘 구현에 자신이 있다고 판단될 경우 [만들기]를 진행한다. 이는 소프트웨어교육의 특징인 개별화 학습 및 자기주도적 학습이 적용되는 모습이 될 것이다.

 

[만들기]의 경우, 국어 및 사회교과와 연계하여 하나의 주제를 정하고 그에 맞는 애니메이션을 제작하도록 할 수 있다. 먼저 연필과 종이로 스토리보드와 순서도를 작성한다. 이때 순서도는 기능에 따라 마름모, 사다리꼴 등 약속과 기호를 꼭 지키지 않아도 되고 제작하는 개인 혹은 팀원들이 서로 알아볼 수 있고 의사소통이 가능하게만 작성하면 된다. 그리고 엔트리 프로그램을 이용하게 되는데, 학생들은 순차, 반복, 조건 구조를 활용하고 대화형 이야기 진행을 위해 신호, 변수 등의 기능도 활용하게 된다. 특히 과제를 작은 부분으로 나누어 시뮬레이션해보고 디버깅 과정을 거쳐 전체 애니메이션을 완성하도록 한다. 완성된 코딩은 서로 공유하여 보다 효율적으로 작성할 수 있는 부분이 있는지 탐구하고 다른 팀에서 새롭게 활용한 코딩은 서로 묻고 답하면서 학습이 진행되도록 한다.

 

상기 과정을 학생 학습 수준에 맞춰서 반복하거나 보충, 심화하면 된다. 이때, 자신들이 ‘컴퓨터’에서 작업한 코딩이 ‘실제’로 구현되는지 궁금해 하거나, ‘블록 기반’ 코딩이 ‘학습’과 ‘놀이’에 불과하다고 여기는 학생이 있다면, 드디어 피지컬 컴퓨팅으로 넘어갈 차례가 되었다. 키보드와 모니터를 넘어서 실제 회로에 불이 들어오고 바퀴가 굴러가며 내 목소리에 반응하는 피지컬 컴퓨팅의 세계로 학생들을 안내할 순서가 된 것이다.

 

이상은 소프트웨어교육에서 코딩교육이 갖는 의미와 그 역할, 그리고 실제 교육방법에 대해 알아보았다. 코딩교육이 소프트웨어교육은 아니지만, 소프트웨어교육에 있어 코딩교육은 필요하고 코딩교육 역시 소프트웨어교육 내에서 더욱 빛을 내게 된다. 모든 사람이 코딩을 해야하는 것은 아니지만, 모든 사람이 코딩을 할 수 있는 시대가 되었다.

 

다음은 교육용 프로그래밍 언어를 기반으로 실제 기계와 로봇을 움직이게 하는 피지컬 컴퓨팅 교육 사례 소개를 소개하고 일반화 가능성을 모색하고자 한다.

 

※전문가 칼럼의 내용은 SW중심사회의 편집 방향과 다를 수 있음을 밝힙니다.

홈페이지 만족도

콘텐츠 내용에 만족하십니까? 현재 페이지의 만족도를 평가해 주십시요. 의견을 수렴하여 빠른 시일 내에 반영하겠습니다.

등록