수학과 프로그래밍 교육의 통합
우리는 현대와 같은 지능, 정보, 기술의 융합과학시대를 소위 4차 산업 혁명의 시대라 말합니다. 이 시대는 인공로봇, 챗GPT, 사물인터넷, 무인 자동차 등에서와 같이 소프트웨어의 역할이 더욱 커진 소프트웨어 중심사회입니다. 소프트웨어는 생활에서의 번거로운 일들을 편리하게 자동으로 처리할 수 있게 해 줌으로써 우리의 생활에 큰 변화를 가져왔습니다. 스마트폰 앱만 보아도 너무도 편리한 많은 앱들이 그동안 우리가 상상했던 일들을 실현시켜 주면서 우리의 생활에 편의를 제공하고 있습니다. 앞으로는 소프트웨어로 무장된 인공지능 로봇과 함께 일해야 하는 시대가 됩니다. 혁명이라 부를 정도의 급격한 시대의 변화는 사람들이 지식에 접근하고 서로 소통하는 방식과 함께 정치, 경제, 교육 등 사회 전반에 걸쳐 변화를 요구하고 있습니다.
교육 내용 및 방법에서도 변화가 요구되고 있습니다.
특히 세계 교육의 흐름에서 주목할 만한 것은 교육에 지대한 영향을 미쳤던 컴퓨터의 사용에 대한 패러다임이 CAI(Computer Assisted Instruction)에서 프로그래밍 교육으로 변하고 있다는 것입니다. 영국을 비롯한 세계 여러 나라에서 이미 초중등교육과정에 프로그래밍 교육을 도입하여 어떤 문제가 발생하였을 때 문제를 해결하기 위해 자료를 수집하고 이를 정보로 만드는 과정 그리고 자료를 단순화하여 문제 해결의 실마리를 찾고 컴퓨터 프로그래밍을 통하여 문제를 해결할 수 있는 능력의 배양에 초점을 두고 교육하고 있습니다.
프로그래밍 교육의 도입 목적은 문제 해결력과 컴퓨팅 사고력의 개발에 있습니다.
교육에서의 세계적 흐름에 발맞추어 우리나라에서는 ‘2015년 문ㆍ이과 통합형 교육과정 총론’에 소프트웨어 교육의 강화에 대한 내용을 포함시켰습니다. 이에 따라 2018년부터 중등 정보교과에서 프로그래밍 교육을 실시하고 있고, 2019년에는 초등교육과정에서 실과 교과에 프로그래밍 교육이 도입되었습니다. 여기서 주목할 것은 컴퓨터 프로그래밍 도입의 목적을 프로그래밍 기능의 숙달보다는 문제해결에 초점을 둔 컴퓨팅 사고(Computational Thinking, CT)의 개발이라고 정하고 있다는 것입니다.
특히 컴퓨팅 사고력은 읽기, 쓰기, 셈하기와 같은 기본적인 소양에 추가되어야 능력입니다.
미래사회의 인재가 갖추어야 할 기본적 소양에 컴퓨팅 사고력을 추가해야 한다고 말합니다. 컴퓨팅 사고란 문제해결, 시스템 디자인 그리고 인간행위에 대한 이해 등을 포함한 기능으로서 모든 사람들이 배우고 사용할 수 있는 읽기, 쓰기, 셈하기와 같은 기본적인 소양에 추가되어야 할 분석적 능력입니다(Wing, 2006). 간단히 말해서, 복잡한 문제를 알고리즘적으로 해결하는 데 사용되는 사고로서 컴퓨터 환경에서는 컴퓨터가 실행할 수 있는 방식으로 문제와 해를 표현하는 일련의 문제해결 방식이라고 볼 수 있습니다.
컴퓨팅 사고의 개발은 수학과 프로그래밍의 통합 속에서 이루어질 때 더욱 효과적입니다.
컴퓨팅 사고의 요소들은 수학적 사고, 모델링과 같은 수학적 문제해결의 요소와 맥을 같이하고 있습니다. 따라서 최근에는 수학교육과 프로그래밍의 통합을 통해 문제 해결력 뿐 아니라 컴퓨팅 사고를 개발하려는 많은 시도가 이루어지고 있습니다.
이러한 시도의 일환으로 이 책에서는 수학에서의 흥미로운 주제를 선정하고 주제 탐구과정에서 수학학습과 코딩의 통합이 이루어지도록 하였습니다. 즉, 이 책을 통해 수학 문제 해결과정에서 자연스럽게 프로그래밍 언어를 익히고, 프로그래밍 과정에서 수학적 능력과 컴퓨팅 사고력의 향상을 기대합니다.
이 책 내용의 구성
ㆍ 이 책에서는 개발환경으로 쓰이는 Anaconda와 Jupyter Notebook을 사용하였습니다.
ㆍ 이 책에서는 파이썬 프로그래밍 언어를 사용하여 프로그래밍과 수학을 통합하려는 시도를 하였습니다. 프로그래밍을 이용하여 수학 문제를 해결하는 과정에서 프로그래밍 언어의 습득을 기대합니다.
ㆍ 프로그래밍을 통해 수학문제를 해결하는 과정에서 컴퓨팅 사고의 개발을 도모하였습니다.
ㆍ 주제 선정은 파이썬의 내장함수와 turtle, math, random, matplotlib, numpy, pandas 정도의 모듈만을 써서 해결할 수 있도록 선정하였습니다.
ㆍ 알고리즘적 사고와 간단한 프로그램 언어만을 익히기보다는 수학적 분석을 필요로 하는 주제를 선택하였습니다. 단순히 그래프를 그려보거나 미분이나 적분을 계산해 보는 등의 파이썬의 단순기능 습득만을 위한 주제는 배제하였습니다.
ㆍ 컴퓨팅 사고력 개발에 기여할 수 있도록 컴퓨팅 사고의 핵심 요소(추상화, 알고리즘, 자동화)를 반영하여 문제해결 과정에 수학적 분석과 프로그래밍 단계를 제시하였습니다.
ㆍ 주어진 문제를 해결해 봄으로써 수학 개념의 유용성과 가치를 느낄 수 있는 주제를 선택하였습니다.
ㆍ 수학 지식수준과 코딩의 난이도를 고려하여 체계적으로 나열하였습니다.
ㆍ 단원은 수와 연산, 확률과 통계, 기하의 세 영역을 선정하였고 각 단원별로 6~7 개의 흥미로운 주제를 다루었습니다.
ㆍ 각 프로젝트는 4개의 코너로 구성하여 전개해 가고 있습니다.
◎ 수학 개념 코너에서는 프로그래밍을 위한 관련 수학개념을 설명하였습니다.
◎ 프로그래밍 코너에서는 문제해결에 이르는 알고리즘을 생각하고 프로그램을 작성하도록 하였습니다.
◎ 더 나아가기 코너에서는 제시된 문제의 심화문제를 다루었습니다.
◎ 도전 문제 코너에서는 독자의 탐구욕을 자극하는 문제를 제시하여 스스로 해결해 보도록 하였습니다
ㆍ 코딩의 방법은 다양합니다. 이 책에서 제시한 방법은 하나의 예에 불과합니다. 독자 나름대로의 코드 작성을 시도해 보길 권합니다.