자유학년제 코딩수학

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

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

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

첫번째의 순차구조는 말 그대로, 코딩 명령어가 하나하나 순서대로 실행된다는 것입니다. 예를 들어, 터틀크래프트의 간단한 명령이 순차적으로 실행되어 고대 로마 등의 건축물은 만드는 코드를 보세요.

예를 들어, 아래의 [beginxyz] 를 눌러 판테온 신전을 만들어보세요 !! 

beginxyz ; 집합 { 원(0,0,11,3) ; 0 } // 판테온 천장의 구멍 만듦 집합 { 구(0,0,10,19) && z>0 ; 0 } // 끝의 0 은 빈 공간을 만들라는 것 집합 { 구(0,0,10,20) && z>0 ; 9 } // z>0 은 1층 이상에만 만들라는 것

이 때, 집합 명령문의 순서를 바꾸면 문제가 생깁니다. 순차구조에 의해 먼저 구의 중심을 0 블럭 (비워진 블럭) 으로 만들었기 때문입니다. 여기서 사용된 집합 명령어는 주어진 조건에 맞는 모든 좌표에 블럭을 만들게 하는 조건제시법 명령입니다 (원소나열법 명령으로는 주어진 좌표에 블럭을 하나 만드는 cube(a,b,c) 등이 있습니다). LEGO 장난감의 주어진 블럭을 결합시켜 멋진 것을 만든 경험이 있을 것입니다. MIT 거북명령 LOGO 언어는 실제로 LEGO 회사의 연구비 지원을 받았으며, 자와 컴퍼스로 도형을 작도하는 수학의 정신과 기본 블럭을 결합시켜 멋진 것을 만드는 레고 장난감의 정신을 합쳐서 구성주의 (constructionism) 기반 코딩수학을 만들었습니다. 터틀크래프트의 집합 명령은 LEGO 블럭에 해당하는 것으로, 집합 명령어를 결합시켜 멋진 것을 코딩하고, 3D VR로 체험하고,  3D 프린터로 뽑아냅니다 !!

순차구조에 이어, 이제 알고리즘의 선택구조를 다룹니다. 알고리즘의 선택구조에는 if 조건문 명령이 쓰입니다. 아래의 if 기반 코드는 위의 집합 명령의 코드를 선택구조에 맞게 고친 것입니다. 한마디로, 집합 명령어는 그 자체가 if 조건문으로 이루어진 선택구조이며, 주어진 조건을 만족하는 모든 좌표를 구하는 (해집합) 조건제시법 명령입니다. 아래 코드를 위와 비교하고, [beginxyz] 로 판테온을 만들어보세요. 

beginxyz ; // beginxyz 다음에 ; 하면 좌표가 표시됨 if( x*x+y*y <= 13*13 && z >= 11 ) return 0 // 판테온 천장의 구멍 만듦 if( x*x+y*y+(z-10)*(z-10) <= 19*19 && z > 0 ) return 0 // 끝의 0 은 빈 공간을 만들라는 것 if( x*x+y*y+(z-10)*(z-10) <= 20*20 && z > 0 ) return 9 // z>0 은 1층 이상에만 만들라는 것

위의 코드에는 중학교 수학의 피타고라스 정리가 사용되었습니다. 원이나 구는 중심의 좌표에서 주어진 반지름의 거리 안에 들어오는 블럭을 모아서 만들어집니다. z > 0 조건은 1층 이상이라는 뜻으로, 땅 아래의 지하세계에는 만들 필요가 없기에 쓴 것입니다. 판테온 천장의 구멍을 위해서는 z>=11 즉 11층 이상에만 구멍을 내라는 명령을 하였습니다. 고등학교 집합과 명제 단원의 and 와 or 논리는 중요합니다. 프로그래밍 언어에서는 and 는 && 기호로 그리고 or 는 || 기호로 나타냅니다.

이제 마지막으로, 알고리즘의 반복구조를 알아봅니다. MIT 거북명령 LOGO 와 스크래치에는 repeat 반복명령이 있습니다. 다른 프로그래밍 언어에는 for 반복조건 명령이 많이 쓰입니다. 터틀크래프트는 두 종류의 반복명령을 모두 사용할 수 있습니다. 간단한 repeat 반복 명령은 이미 MIT 거북수학에서 설명하였으니, 좀더 복잡한 repeat 반복 명령을 for 반복조건 명령문과 같이 도입하여 설명을 합니다.

아래의 명령에는 beginxyz 라고 쓰여진 곳이 없습니다. beginxyz 아래에 쓰는 조건제시법 명령이 없다면 생략이 가능합니다. 그래도 우선 [beginxyz] 단추를 눌러 3차원 마인크래프트와 같은 환경을 만듭니다. 그리고 이어서 [실행] 단추로 cube 와 같은 원소나열법 명령과 거북명령 doit 등을 실행시킵니다. 아래의 코드에서 중요한 것은, 변수 n의 사용입니다. n 이 증가하면서 (n)A 에 의해 성벽의 길이가 점점 늘어납니다. 또한 n번 타입의 블록으로 성벽의 색이 바뀝니다. 문자와 변수와 함수는 중학교 자유학년제 코딩수학의 핵심적 내용입니다. 

A = ' s[u] s[uu] ' n = 1 while( n < 20 ) { // n 값이 20 미만이면 반복 doit( (n)A ; n ) // A를 n번, n번 블럭으로 doit( L ) // Left 90도 n = n+1 // n 값 증가 }

집합과 논리 (조건제시법)  활용한 자유학년제 코딩수학

중학교 자유학년제 코딩수학 내용으로 앞에서 다룬 알고리즘과 순서도의 내용도 중요하지만, 더 중요한 것이 문자와 변수 그리고 함수 개념이다. 특별히 코딩 경험이 없는 학생들에게 알고리즘과 프로그래밍 명령은 다소 어렵게 느낄 수 있다. 따라서, 순차와 선택구조 그리고 반복구조를 집합과 논리 조건제시법과 융합시킨 정직구원 (LEGO 블럭과 같은 명령 조각) 으로 도입하는 것이 좋다. 특히, 초등수학에서 다룬 기둥과 뿔을 중학교 일학년 입체도형과 일차함수 등과 연결시킬 수 있기에 좋다. 이제 문화체육부 산하의 한국 콘텐츠진흥원을 통해 만날 수 있는 피라미드 게임코딩의 내용 등을 정직구원 LEGO 블럭 코딩명령으로 접근해본다. 다음의 코드를 [beginxyz] 해보자. 

beginxyz ; if(z<0 || z>10) return 0 // 알고리즘 속도를 개선시킴 집합 { 정(5,5,1,5-z) ; 16 } // 1층 이상이며, 16번 고대 벽돌로 // 각 층에 중심(5,5), 반지름 5-z 집합 { 원( -5,5,1,1 ) && z < 5 ; 12 } // 1층 이상이면서 && 5층 미만의 층에서 // 각 층에서 중심(-5,5) 이고 반지름 1 집합 { 원(-5,5,5,10-z) ; 13 } // 5층 이상, 13번 나뭇잎 블럭으로 // 각 층에 중심(-5,5), 반지름 10-z

지하와 높은 곳에는 아무 것도 안만든다. 따라서 순차구조에 따라, 제일 먼저 나오는 if(z<0 || z>10) return 0 명령을 통해 빨리 빈 공간의 영역을 알려준다. 이렇게 하면 알고리즘의 실행 속도가 개선되며, 컴퓨터 과학에서는 효율성이 있는 빨리 실행되는 알고리즘이 아주 중요하다.  집합 {  정( 5, 5, 1, 5-z ) ; 16 } 명령은 맨 아래의 중심점 좌표가 (5,5,1) 이며, 여기서 부터 시작해서 각각의 z 층에서 중심이 (5,5) 이고 반지름 (가로와 세로쪽 반지름)이 5-z 인 사각형을 만들라는 것이다. 각각의 z 층에 반지름이 5-z 이기에, 중학교 수학의 일차함수 대응표를 생각하면 점점 올라가면서 반지름이 작아지고, 6층 이상에서는 반지름이 음수가 되기에 그 이상의 층에서는 만들지 않는다 (음수인 반지름은 없기에). 마찬가지 이유로, 맨 아래의 (-5,5,1) 부터 올라가면서 5층 미만까지 자작나무 줄기로 나무의 기둥을 만드는 집합 {  원( -5, 5, 1, 1 ) && z < 5 ; 12 } 을 이해하고, 그 다음의 집합 {  원( -5, 5, 5, 10-z ) ; 13 } 명령은 맨 아래의 (-5,5,5) 에서 시작해서 올라가며 중심은 (-5,5) 이며 반지름이 10-z 라는 것을 통해 원뿔 모양이 생기는 것을 이해할 수 있다 (11층 이상에서는 음수인 반지름이 나오기에 아무 것도 만들어지지 않는다).  이와 같이, 정직구원 LEGO 블럭 코딩 명령어를 통해 변수와 함수 그리고 집합과 논리를 기반으로  코딩과 수학이 융합된 자유학년제 코딩수학을 전개할 수 있다.

 

자세한 자유학년제 코딩수학은 SNU코딩수학 유튜브를 참고하세요 !!