컴퓨팅사고력 : MIT 거북수학

컴퓨팅 사고력 역량을 위한 MIT 거북수학(TurtleMathematics)

코딩교육의 목표는 컴퓨팅 사고력 (computaitonal thinking) 역량을 키우는 것입니다. 컴퓨팅 사고력 용어는 MIT 인공지능 및 수학교수 연구자인 패펄트 (papert) 교수가 제안하였고, 패펄트는 컴퓨팅사고력역량을 위해 거북명령 LOGO 언어를 만들고, 또한 LOGO 거북명령에  기반한 거북수학 (TurtleMathematics) 코딩수학을 만들었습니다.

컴퓨팅 사고력은 한마디로 컴퓨터(기계)와 함께 문제를 해결하는 역량입니다. 수학자였던 패펄트 교수는 수학과 코딩을 융합하여 컴퓨팅 사고력을 제안하였는데, 이제 중학교 1학년 수학에 나오는 소수와 소인수분해를 이용해서 아래 표에 나오는 컴퓨팅 사고력의 핵심사항을 설명하겠습니다. 물질의 분자를 이루는 기본이 원자인 것 처럼, 자연수들은 소수들의 곱으로 인수분해 (decomposiiton) 됩니다. 또한 자연수 들의 성질을 인수분해된 패턴 (pattern) 을 통해 알아낼 수 있습니다. 컴퓨터와 함께 문제를 해결하려면, 먼저 문제를 더 작은 부분들로 분해시키고, 그 작은 부분들의 패턴을 분석하여 전체를 파악하고,  알고리즘에 따라 코딩을 하여 컴퓨터 기계에게 해결시킵니다. 

예를 들어, 운동장에 큰 4각형 모양을 그리려면, 막대기를 땅에 대고 100 발자국을 가고, 오른쪽으로 90도를 돌고, 다시 100 발자국을 가고, ... 한마디로 반복 4 { 100 발자국 가기 ; 오른쪽으로 90도 돌기 } 와 같이 알고리즘이 들어간 코딩 표현으로 해결할 수 있습니다. 이런 이유로 초등학교 학생들이 많이 배우는 MIT 스크래치의 핵심 명령이 반복 repeat 와 가자 (move) 와 돌자 (turn) 거북명령입니다.

위의 스크래치 명령에서, repeat (반복), move(가자), 돌자(turn) 에 주목하세요. 이제 터틀 크래프트에서 4각형 모양의 성을 만들고, 마인크래프트에서와 같이 놀아봅니다. 3차원 VR 로 보고 또한 3D 프린터로 뽑아낼 수도 있습니다.  아래에서, 먼저 [beginxyz]  단추를 눌러서 3차원 크래프트 환경을 만들고, 이어서 [실행] 으로 성을 만드세요.

A = ' s[u] s[uu] ' // A 를 2층+3층 성벽이라고 약속 반복 4 { // repeat 4번 명령 doit( 5A ) // A 를 5개 만들고, doit( L ) // Left 90도 회전 }

이제 왼쪽 화면을 마우스로 클릭하여 3차원 세계에 들오가고, 마인크래프트에서와 같이 w키로 앞으로 가고, asd 와 zc 쉬프트키를 쓰세요. 여기서 대문자 A는 앞으로 가며 블럭을 만드는 s 와 그 위에 1개의 블럭 올리는 s[u] 와 앞으로 가고 위에 블럭을 2개 만드는 s[uu] 를 합친  치환문자입니다. 거북수학은 문자와 변수로 스토리코딩을 합니다 !!

키보드 기반의 거북명령 LOGO 언어는 마우스 기반의 MIT 스크래치 (scratch) 와 버클리 대학의 SNAP 언어로 패펄트 교수의 제자와 연구자들에 의해 발전하였습니다. 한국에서는 본 연구자에 의해 터틀말과 3차원 터틀크래프트 등으로 발전하였습니다. 위의 성벽 모양은 너무 간단한데, 이제 미로게임도 만들 수 있는 성벽을 만드겠습니다. 거북에게 doitsxyz 명령으로 약속된 SXYZ 로 성벽을 만든다고 한 후에, 아래와 같은 코드를 [beginxyz] 하고 [실행] 시킵니다. 이제 실행 결과를  3차원 게임용 VR 화면으로 만든 것이 아래 화면의 모습입니다.

 

doitsxyz // 거북에게 SXYZ 사용을 알림 n = 3 // 변수 n 의 값이 바닥의 모양 반복 4 { doit( 5SX 5SY 5S ; n ) // 성의 4분의 1 doit( X ) // 왼쪽으로 90도 회전 n = n+1 // n 값을 1 만큼 증가시킴 }

위의 코드에서, 변수 n을 사용하여 성벽 바닥의 블럭을 닥르게 만든 것에 주목하세요. 중학교 수학의 변수와 n=n+1 과 같은 (변수를 증가시키는) 표현과 repeat 반복 알고리즘을 사용하여 수학적 코딩을 하였습니다. doit( s ; 9) 명령에서 ; 뒤에 쓰인 9는 만들어지는 블럭의 타입을 지정합니다. 바로 위의 코드를 실행시키면, 처음 성벽은 n=3 으로, 그 다음은 n=n+1 코드로 n의 값이 하나 중가한 4번으로 (빨간색), 그 다음은 5번 파란색으로, 마지막엔 6번 블럭으로 만들어집니다. 이러한 내용은 2015 이전의 고등학교 수학인 알고리즘과 순서도에 나옵니다. 다음과 같은 수학적 알고리즘과 순서도를 코딩과 융합시켜 새로 교육과정에 도입하는 것이 코딩교육을 위해 필요합니다. 

그런데 이런 내용을 수학에서 삭제한 후, 얼마 지나지 않아 코딩 의무교육을 한다며 법석을 떨고 있습니다. 다음 사진은 1989년 본 연구자가 서울대에 부임했을 당시의 신문 기사입니다. 때늦은 감이 있다면서 초등학교에도 GW 베이직 프로그래밍을 도입하였습니다. 그런데 이렇게 시작된 프로그래밍 교육은 얼마 후에 초등학교 영어 의무교육을 도입하면서 중단되었습니다. 그리고 IMF 외환 위기를 맞게 되었는데, 그당시 미국에서는 google 과 마이크로소프트 같은 IT 기업들이 번성하고 있었습니다. 지금 많은 사람들이 스크래치 배우는 것이 코딩교육이라고 오해하고 있습니다. 코딩교육은 수학+코딩으로 문제를 표현하고 해결하는 컴퓨팅 사고력을 익히고 향상시키는 것입니다. !!

위의 신문기사는 1989년 프로그래밍 의무교육에 대한 내용과 2018년 코딩교육 의무화를 비교한 것입니다. 30년 만에 다시 찾아왔네 ^_^

beginxyz // 좌표식과 조건제시법 R=30 ; r=10 // 토러스의 반지름 들 D = sqrt ( x*x+y*y ) // 피타고라스 정리 집합 { abs( (D-R)*(D-R)+z*z - r*r ) < 20 && y>-30 } return 0

컴퓨팅 사고력을 위한 초중등  창의코딩과 자유학년제 코딩수학

컴퓨팅 사고력 역량을 위한 코딩교육은 Computational Thinking 용어를 만들고, 미국 초등학교 5학년에 가자-돌자 거북명령을 기반으로 도입한 MIT 거북수학의 정신을 따라 Learning by Design (Making) 학습이 좋습니다. 이런 이유로 시흥 등에서 하는 서울대의 창의코딩 교육은 거북 명령으로 다음과 같은 거북성을 디자인하여 만듭니다.

 

그렇다면, 창의융합으로 미래를 준비시키는 중학교 자유학년제의 정신에 맞는 코딩수학은 무엇일까요? 저희는 먼저 초중등에서 컴퓨팅 사고력을 위한 거북수학을 익힌 후, 자유학년제 코딩수학에서는 집합과 논리 (조건제시법, 원소나열법) 그리고 알고리즘과 순서도 수학에 기반하여 자유학년제 코딩수학을 합니다 (다음 게시판의 글을 참조)

[beginxyz] 누르면 위의 코드는 다음과 같은 3차원 입체를 만듭니다.  

이 입체는 속인 빈 토러스를 y>-30 부분만 잘라서 그린 것으로, 위의 코드에서 D = sqrt ( x*x+y*y ) 는 중학교 2학년에 나오는 피타고라스 정리에 의한 거리이며, 그 아래의 고등학교 집합 명령은 주어진 조건에 맞는 해집합을 구하는 조건제시법의 예입니다 (2010년대 초반에도 집합 내용은 중학교 1학년에 소인수분해와 같이 도입되었다). 이러한 집합과 and or 논리 그리고 3차원 좌표 등으로 수학과 코딩을 융합시키고, 또한 컴퓨팅 사고력 역량을 위해 3차원 마이크래프트와 같은 게임 환경으로 도입하여 초등 및 중학교 자유학년제 코딩수학 등에 도입할 수 있습니다. 이러한 코딩수학은 패펄트 교수의 컴퓨팅 사고력 역량과 구성주의 철학에 기반한 MIT 거북수학과 맥을 같이하며, 중등학교 수학의 집합과 논리와 알고리즘에 기반하고 있습니다 !

 

컴퓨팅 사고력 : MIT 거북수학은 SNU코딩수학 유튜브를 참고하세요 !!