코딩교육은 주로 컴퓨터 앞에 학생이 앉아서 키보드나 마우스로 컴퓨터에 명령을 내리고, 그 결과를 살펴보는 방식으로 진행됩니다. 그런데 때로는 통상적인 의미의 컴퓨터를 사용하는 대신에, 작은 로봇이나 드론 같은 장난감 혹은 겉보기에는 컴퓨터 같지 않지만 사실은 컴퓨터인 작은 보드(board)를 가지고 코딩을 하는 경우가 있는데 이를 피지컬 컴퓨팅(physical computing)이라고 합니다.

피지컬 컴퓨팅을 통해 코딩교육을 하는 장점은 무엇보다도 아이들의 흥미를 유발하기에 적합하고, 코딩이라는 것이 얼마나 우리의 일상에 가까이 다가와 있다는 것을 체험시킬 수 있다는 점입니다. 컴퓨터 앞에서 추상적인 사고와 모델링을 통한 코딩을 하기 보다는 실제로 무언가가 소리내고, 반짝이고, 움직이는 것을 보는 것이 더 즐거울 수 밖에는 없고, “아~ 이런 것도 안에는 컴퓨터가 들었고 코드가 돌아가면서 작동하게 되는 것이구나.” 라는 것을 알게 됩니다.


아래 사진은 오조봇이라는 아이입니다. 요즘 코딩교육을 앞세워서 상품화되어 나오는 로봇들은 대개 이런 형태와 기능을 가지고 있습니다. 기본적으로 구동부, 센서, 컴퓨터로 이루어져 있습니다. 종이에 색연필 등으로 미로를 그리면 그 미로를 인식하고 따라 간다거나 하는 고유의 기능을 가지고 있고 대개 스크래치와 유사한 블록 코딩 도구를 이용해서 간단한 프로그래밍을 할 수 있도록 되어 있습니다.


아이들이 혹하게 생겼지요? ^^


조금 더 복잡한 로봇은 아래 사진의 레고 마인드스톰과 같은 것입니다.

오조봇과 마찬가지로 구동부, 센서, 컴퓨터로 이루어져 있고 스크래치와 유사한 블록 코딩 도구를 지원한다는 점은 같지만, 다양한 조립과 응용이 가능하고 컴퓨터에 해당하는 부품을 해킹하면 파이썬과 같은 고급 프로그래밍 언어도 사용할 수 있어서, 상상력이 한계일 뿐, 할 수 있는 일이 꽤 많습니다. 다만 350 달러에 육박하는 가격이 부담입니다.


오조봇이나 레고 마인드스톰 같은 흡사 장난감과 같이 보이는 피지컬 컴퓨팅 환경 외에 진정한 피지컬 컴퓨팅이라 할 수 있는 것으로는 작은 컴퓨터 보드와 다양한 센서부품을 제공하는 아두이노라즈베리파이와 같은 제품이 있습니다. 이것들은 기본적으로 C 언어라는 고급언어를 이용하여 코딩을 하게 되어 있고, 실제 컴퓨터에서 코딩을 하는 것과 마찬가지로 그 응용과 개발에 한계가 없다고 생각해도 무방할 정도입니다. 소위 임베디드 시스템이라고 하는 우리 주변에 있는 컴퓨터가 들어 있는 모든 제품들, 예를 들어 스마트폰, 프린터, 디지털 TV, 인터넷 공유기, 자동차의 전자제어장치, 비행기의 항법장치, 미사일의 유도장치, 인공위성의 통신장비 등등은 컴퓨터의 성능이 강력하고 코드의 규모와 복잡도가 클뿐이지 기본적인 원리 및 코딩 환경은 아두이노 등과 다를 바 없습니다. 물론 아두이노 등은 어린이들이 쉽게 접근할 수 있도록 스크래치와 같은 블록 코딩 도구를 사용하여 코딩을 할 수도 있습니다.

많은 사람들이 아두이노 등을 이용하여 기발한 제품을 만들어내고 있습니다. 아두이노를 이용한 취미로 시작하여 시제품을 만들다가 상용화되는 케이스도 많을 것이라 판단됩니다. 아래 사진은 손이나 팔의 제스쳐를 이용하여 휠체어를 조정하는 gest-chair라는 아두이노 프로젝트입니다.

모터가 달린 휠체어일지라도 조정간을 제대로 제어할 수 없는 사람들에게 큰 도움이 되겠지요.


이제 정리를 해보겠습니다. 설명의 편의를 위해 오조봇이나 레고 마인드스톰아이들 장난감이라고 부르고 아두이노라즈베리파이어른 장난감이라고 부르겠습니다.^^ (사실 레고 마인드스톰은 파이썬을 이용하여 코딩을 하면 어른 장난감으로 분류될 수도 있습니다.)

아이들 장난감을 이용한 코딩교육의 단점은 제가 중요시하는 추상적인 사고와 모델링을 통한 코딩에 한계가 있다는 점입니다. 실제로 적용할 수 있는 코딩 응용이 매우 제한적이어서 아이들을 현혹^^하기에는 용이하나 깊이 있는 코딩교육으로 이끌고 들어가기에는 적합하지 않습니다. 정모가 다니는 국제학교에서도 방과후 활동으로 아이들 장난감을 이용한 코딩이나 로봇교육이 있기는 한데, 그 정도로는 아이들에게 코딩의 세계에 발을 들이게는 할 수 있으나 앞으로 나아가게 하기에는 무리가 아닌가 싶습니다.

반면에 어른 장난감은 기본 환경이 컴퓨터와 동일하기 때문에 추상적인 사고와 모델링을 통한 코딩이 가능은 합니다. 하지만 여기에도 두 가지 문제가 있습니다.

  1. 어린이를 위해 시중에 나와있는 어른 장난감 예제 코드들이 아이들 장난감의 코드 수준을 벗어나지 못한다.
  2. 컴퓨터 앞에서 코딩을 제대로 배우고 나서 어른 장난감을 만지는 것이 바른 순서이다. 역은 성립하지 않는다.

정모아빠의 코딩교실에서 지향하는 목표는 꾸준한 훈련을 통해서만 이룰 수 있습니다. 그 훈련은 대부분 컴퓨터 앞에서, 친구들과 선생님과의 대화를 통해, 자신의 뇌를 열심히 굴려서 재미없을 수도 있는 추상화의 탑 쌓기와 모델링의 확장을 통해서만 이루어질 수 있는 내용입니다. 물론 서론에서 언급한 바와 마찬가지로 피지컬 컴퓨팅의 장점은 확실히 있고 그 의의도 큽니다. 다만 컴퓨터 앞에서의 코딩 교육이 주가 되고 피지컬 컴퓨팅을 이용한 코딩 교육은 보조적일 수 밖에 없다는 것을 말씀드리는 것 뿐입니다.

때문에 정모아빠의 코딩교실에서는 피지컬 컴퓨팅을 정규 수업 시간에 가르치지 않습니다. 코딩 교실을 시작한지 지금 4 학기차인데, 그간의 경험에 의하면 더 중요한 본질을 가르치기에도 시간이 모자랍니다. 그래도 완전히 버리기에는 아쉬워서 피지컬 컴퓨팅은 여름방학 특강으로만 다루고 있습니다. (물론 방학이면 학생들이 다들 육지로, 해외로 가기 때문에 들을 수 있는 학생도 제한적이지만요.ㅠㅠ)

사실 정모 아빠의 학부 전공은 전자공학이고 대학원 전공은 디지털 신호처리 알고리듬이며 회사에서 오랫동안 임베디드 시스템 소프트웨어를 개발했습니다. 즉, 어른 장난감으로 무언가를 만들자고 하면 장난 아니게 할 수 있다는 말씀이지요.^^ 그럼에도 불구하고 아직은 아닙니다. 코딩과 CS를 제대로 충분히 배우고, 기본기가 탄탄히 갖춰진 학생들의 숫자가 어느 정도 되면 그 학생들과 어른 장난감을 다루어서 무언가 멋진 것을 만들고 싶다는 꿈은 가지고 있습니다만, 언제쯤 현실이 될지는 예단하기가 힘듭니다. 다른 학생들이 혹 그 전에 코딩 교실을 그만 두어도 정모는 남아 있을테니 정모랑 무언가를 해 볼 기회가 꼭 생기기를 기대합니다.

감사합니다.