드디어 중국은 컴퓨터 소프트웨어를 가르치는 코딩교육을 넘어서 초중고등학교에 단계적으로 인공지능 관련 교과과정을 만들고 프로그래밍 교육을 한다. 대학에는 인공지능 관련 학과와 전공을 설치하고 석박사 과정을 확대할 계획이다. 중국은 미래를 위해 인공지능 산업을 지원하는 정도를 넘어서 국가적 인공지능 교육을 통한 적극적인 인력 양성으로 세계적으로 인공지능 기술을 선도하고자 한다. 이러한 중국의 계획은 1단계와 2단계를 거쳐 세계 선두 수준의 3단계를 2030년으로 잡고 있다.

이러한 와중에 중국에서는 2018년 4월 세계 최초의 고등학교용 인공지능 교과서를 발간했고 상하이 등의 40개 고등학교에서 수업이 진행된다. ‘인공지능 기초’라는 제목의 총 170쪽 인공지능 교과서는 인공지능의 역사부터 안면인식을 활용한 보안 시스템, 자율주행차 등 인공지능의 응용 사례를 소개한다고 한다. 미디어를 통한 이러한 책 분량과 내용 소개로 볼 때 인공지능 알고리즘과 프로그래밍이 본격적인 내용은 아닌 듯하다. 물론 수업을 어떻게 하느냐에 따라 본격적인 내용이 다루어질 수도 있을 것이다.

현재 한국에서도 컴퓨터 소프트웨어(SW)의 구성 원리와 기초적 제작 기능을 배우는 ‘코딩’을 학교에서 정규 교과로 가르친다. 2018년부터 중학교에서 정규 수업이 이뤄지고, 내년에는 초등학교로 확대된다. 중학생은 3년간 34시간, 초등학생은 5, 6학년에 17시간으로 편성되었다. 4차 산업혁명의 인공지능과 세계적인 코딩 교육 추세에 발맞춰 만들어진 교육과정이지만 모든 학생을 프로그램을 배워야 하는가? 소기의 목적을 달성하기에 충분한 시간인가? 학원가의 코딩 사교육만 불러일으키는 것이 아닌가? 등 많은 논란들이 그냥 논란만은 아닌 것 같기도 하다. 이와 더불어 아마도, 아니 이미 학원가에서는 인공지능 코딩교육에 대한 얘기도 들려오고 있다.

필자가 몇 십년간 컴퓨터 학과에서 컴퓨터 공학 교육과 인공지능에 종사했지만 이러한 코딩교육에 대해 너무나 많은 전문가들의 의견이 있고, 이상적으로 실행하기에는 관련된 현실적인 문제들이 많기에 섣불리 의견을 내는 것조차 조심스러울 수밖에 없다. 그러나 인공지능 코딩 교육 얘기까지 나오는 마당에 필자 나름의 의견이 없을 수 없다.

사견을 전제하고 말하면 프로그래밍은 힘든 일이다. 인공지능 프로그래밍은 더 힘든 일이다. 항간에 쓰이는 코딩은 프로그래밍과 같은 말이지만 엄밀히 말하면 코딩은 프로그래밍 과정에서 알고리즘을 특정 언어로 바꾸는 과정이다. 코딩이라는 말의 뉘앙스는 사람이 사용하는 말을 포함해 컴퓨터 언어까지 모든 언어는 코드(기호)로 되어 있고 특정 언어의 기호로 표현한다는 것이다. 사실 일반적으로는 다양한 컴퓨터 환경에서 코딩을 하기 위한 코딩 환경을 구축하기 위해 프로그램을 설치하고 사용법을 배우는 것도 컴퓨터에 대한 지식이 어느 정도 필요하기 때문에 처음 코딩을 하는 사람에게는 장애가 된다. 프로그래밍은 특정한 일을 하기 위한 프로그램을 작성하는 것이고 알고리즘은 문제 해결을 위한 단계별 절차를 말한다. 소프트웨어 개발은 프로그램을 만드는 일이지만 좀 더 넓은 의미에서 문제 해결을 위해 프로그램을 기획하고 컴퓨터 하드웨어와 관련된 모든 프로그램들과 프로그래밍 언어의 선택, 프로그래밍, 테스트, 유지/보수까지 포함한다. 상업적으로 사용하기 위한 소프트웨어 개발은 기획을 포함해 프로그래밍 이상의 많은 일들이 필요하다. 그러므로 소정의 코딩 교육을 받았다고 해 소프트웨어 개발자가 되는 것이 아닌 것이다.

프로그래밍이 힘든 이유는 프로그램이 컴퓨터에게 일을 시키기 위한 명령어들을 아주 세부적인 부분까지 지정해 빠짐없이 늘어놓아야 하기 때문이다. 하나라도 빠지거나 세부적인 지정을 무시한다면 프로그램은 실행되지 않는다. 프로그램은 인간인 다른 사람에게 일을 시키듯이 적당히 명령해서는 일을 시킬 수 없다. 이러한 사실 때문에 프로그램은 사람이 명령한 일만 할 수 있어서 인간을 절대 넘어설 수 없다고 하지만 프로그램이 새로운 일을 할 수 있는 학습을 하도록 명령한다면, 게으름 피우지 않고 쉴 새 없이 기계적으로(?) 사람보다 더욱 열심히 학습해 인간을 능가할 수 있다. 이러한 기술이 인공지능의 기계학습이고 알파고가 바로 그러한 예다. 인공지능이 학습만을 위한 기술은 아니지만 어떤 일을 어떤 절차로 하라는 명령들(프로그래밍)보다는 어떤 일을 잘할 수 있는 절차를 학습하도록 하는 명령들(인공지능 프로그래밍)이 더 많은 점을 고려해야 하기 때문에 더 힘들다고 할 수 있을 것이다. 사실 어떤 일을 잘할 수 있는 명령들을 알 수 없거나 또는 알기 어렵다면, 그 어떤 일을 잘할 수 있게 학습하는 명령들이 있기만 하다면 딱히 더 힘든 일이 아닐 수도 있지만 고려해야 하는 점이 많은 것은 사실이다.

현재의 코딩 교육이 그림들을 짜맞추는 프로그램 언어(스크래치, 엔트리, 등)를 사용해 간단한 수학을 문제를 풀고 그림을 그리고 로봇을 움직이게 하는 코딩을 하다가 그림이 아니라 기호로 이루어진 언어(자바스크립트, C, 자바, 파이썬, 등)를 사용해 홈페이지나 앱을 만드는 단계로 가는 것이라면 학생들을 프로그램 개발자로 만드는 것이 아닌, 원래 코딩 교육이 이루려는 컴퓨팅 사고(Computational Thinking) 교육의 목적을 이루기는 쉽지 않을 것으로 보인다. 컴퓨팅 사고는 컴퓨터(사람이나 기계)가 효과적으로 수행할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 것이 포함된 사고 과정 일체를 일컫는다(참고 1).

컴퓨팅 사고에서 컴퓨터가 효과적은 아니더라도 수행하기 위해서는 명령들이 최소한이나마 체계적이고 논리적이면서 빠짐없이 세부적으로 구성되어야만 한다. 이러한 일들은 창의적이면서도 집중력이 필요하고 힘든 일이다. 홈페이지나 앱을 만드는 것이 아주 실제적인 코딩이기는 하지만 좀 더 흥미로운 주제의 코딩 교육도 있을 수 있다.

트위트 메시지를 100만개쯤 주고 작성자의 성별이나 연령대를 추정하게 하는 등, 빅데이터와 관련해 다양한 흥미로운 주제를 생각할 수 있다. 준비만 된다면 기존의 스크래치나 엔트리와 같은 코딩언어로도 할 수 있고 R이나 파이썬도 이용할 수 있다. 다양한 사회적 문제를 시뮬레이션할 수 있는 넷로고(NetLogo)와 같은 언어는 아주 예전부터 교육적인 이용이 추천되었고 요즘은 인사이트 메이커(Insight Maker)와 같은 웹 기반 시뮬레이션 도구를 무료로 사용할 수 있고 다른 도구들도 많이 활용할 수 있다. 최근 유명 IT회사라면 모두 제공하는 챗봇 프로그램을 이용하면 또 다른 코딩 교육이 가능하다. 간단한 검색만으로도 5분 만에 만드는 챗봇부터 몇 달은 공부해야 하는 만들 수 있는 챗봇까지 다양한 수준과 방법을 이용할 수 있다. 전형적인 코딩 방식을 사용하지 않는 간단한 챗봇 만들기 도구들도 체계적이고 논리적인 방식으로 접근해야 하기 때문에 컴퓨팅 사고에 충분히 도움이 된다. 아마도 인공지능 챗봇의 진실을 알고 새로운 아이디어를 낼 수 있을지도 모를 일이다. 필자는 대학교 신입생을 대상으로 재미있는 다양한 챗봇을 만드는 수업도 시도해보았다. 학생들은 여자 친구 챗봇이나 욕쟁이 챗봇, 게임 소개 챗봇, 등의 흥미로운 챗봇을 시도했다. 이번 학기 융복합 수업으로 팀티칭하는 ‘논어와 로봇’에서는 공자처럼 대답하는 챗봇 만들기로 팀별 경쟁을 할 계획이기도 하다. 이러한 아이디어의 코딩들은 코딩 공부 외에 코딩의 내용이 되는 다양한 공부가 필요하고 이러한 내용을 코딩하는 일은 컴퓨팅 사고가 될 것으로 생각한다.

필자는 개인적으로 인공지능을 위한 특별한 코딩 교육이 따로 필요하다고 생각하지는 않는다. 기존의 코딩 교육을 다양하게 하는 과정에서 일부 인공지능 기술이나 인공지능적 문제를 다룰 수 있는 것으로도 충분할 것이다. 컴퓨터 사고에서 중요한 것은 다양한 문제를 다양한 방법으로 생각해볼 수 있는 흥미로운 기회를 제공하고 즐겁게 코딩해보는 것이다.

참고 1. https://ko.wikipedia.org/wiki/컴퓨팅_사고