파이썬으로 여는 수학의 문 (창의적인 탐구 프로젝트)

파이썬으로 여는 수학의 문 (창의적인 탐구 프로젝트)

$29.09
Description
우리가 살고 있는 사회를 이끌어 갈 인재는 창의적 사고, 융합적인 사고, 문제해결력 등을 갖추어야 한다고 말하고 있습니다. 이미 커다란 변화가 진행되고 있는 소프트웨어 중심의 미래사회에서는 컴퓨팅 능력 또한 인재가 갖추어야 할 능력이라고 말합니다. 컴퓨팅 사고력이란 컴퓨터 환경에서 프로그래밍을 통해 창의적으로 문제를 해결하는 능력으로서 읽기, 쓰기, 셈하기와 같은 기본적인 소양에 추가되어야 할 분석적 능력입니다.
여러분은 이 책의 여러 가지 흥미로운 수학 문제들을 해결해 가는 과정 속에서 수학적 문제해결력은 물론 컴퓨팅 사고력 더 나아가 프로그래밍 능력이 향상됨을 느낄 것입니다.

이 책은 정규 교육과정에 도입된 교육용 프로그래밍 언어 ‘파이썬’을 기반으로 하고 있습니다.
여러 가지 프로그래밍 언어 가운데 파이썬은 인간의 사고와 유사한 문법을 지니고 있어 빠르게 파이썬 문법을 학습할 수 있다는 것이 무엇보다도 큰 장점입니다. 이 쉽고 간결한 문법 덕분에 파이썬은 높은 생산성을 자랑합니다. 즉, 파이썬을 활용할 경우 더 간단한 코드로 더 많은 작업을 수행할 수 있으며, 어떤 프로그래밍 언어보다 빠른 개발이 가능합니다. 다른 언어나 라이브러리에 쉽게 접근해 연동할 수 있으며 높은 성능의 애플리케이션 개발이 필요한 경우 C/C++과 같은 언어를 파이썬과 결합해 사용할 수도 있습니다. 파이썬은 수많은 표준 라이브러리를 제공하고 있어 프로그래머는 모든 코드를 일일이 작성할 필요가 없이 기존에 작성된 파이썬 표준 라이브러리를 활용하면 됩니다. 각 분야에서 파이썬의 활용도는 매우 높습니다. 웹사이트를 통해 프로그래머들이 스스로 작성한 파이썬 패키지를 공유하고, 다른 개발자가 배포한 패키지를 이용할 수도 있습니다. 이와 같은 장점들은 우리가 프로그래밍에 친숙해지는 계기를 제공하고 교육과정에 도입된 이유이기도 합니다. 이 책에서 파이썬과 함께하는 다양한 수학 탐구활동은 호기심을 자극하고 탐구에 흥미를 더해 줄 것입니다.

이 책에서는 수학적 문제 해결력과 컴퓨팅 사고의 개발이라는 두 가지 목적을 달성하고자 하였습니다.
많은 연구에서 수학교과와 코딩의 통합이 수학적 사고, 문제 해결력, 컴퓨팅 사고의 개발에 긍정적 영향을 미치고 있다는 사실을 증명하고 있습니다. 이에 수학 문제 해결 과정에서 자연스럽게 프로그래밍 언어를 익힘으로써 수학적 문제 해결력과 컴퓨팅 사고의 개발이라는 두 가지 목적을 달성하고자 하였으며 따라서 주제의 선택, 문제해결의 알고리즘화, 창의적 활동에 역점을 두고 이 책을 구성하였습니다.

이 책은 파이썬이라는 프로그래밍 언어에 관심을 가진 교사와 학생을 포함한 모든 분들에게 유용한 도서입니다.
미래사회에 대처하는 수학교사의 전문성 강화를 위한 연수, AI 관련 정규 교과목을 위한 교재로 유용한 책입니다. 중등학교의 자유학기제의 프로젝트 활동, 창의체험활동, 동아리의 주제탐구 활동, 수학영재교육 등 다양한 탐구활동에 활용될 수 있습니다.
저자

강순자,김연수,박진환,박민지

전남대학교수학교육과명예교수
수학과프로그래밍의통합을통한컴퓨팅사고의개발관련저서출판

목차

목차
1부파이썬

I.Python에대한간단한소개2
II.Python의설치3
III.Python의기초11
IV.turtle그래픽모듈을사용하여도형그리기27

2부탐구프로젝트

1.완전수(Perfectnumber)33
프로그램1-1「36은완전수인가?」
프로그램1-2「n은완전수인가?판별함수」
프로그램1-3「완전수리스트함수」
프로그램1-4「완전수부족수과잉수판별함수」
프로그램1-5「완전수부족수과잉수개수구하기함수」
프로그램1-6「소수판별함수」
프로그램1-7「유클리드원리에따라완전수찾기함수」

2.유클리드호제법(EuclideanAlgorithm)47
프로그램2-1「최대공약수1」
프로그램2-2「유클리드호제법1」
프로그램2-3「유클리드호제법1함수」
프로그램2-4「유클리드호제법2함수」
프로그램2-5「n개수의최대공약수」

3.피보나치수열(Fibonaccisequence)57
프로그램3-1「등차수열항말하기함수」
프로그램3-2「등비수열항말하기함수」
프로그램3-3「재귀함수에의한피보나치수열항나열」
프로그램3-4「피보나치수열의짝수항들의합」
프로그램3-5「피보나치수열과황금비의관계」
프로그램3-6「피보나치수열의인접한두항의비그래프」

4.에라토스테네스의체(EratosthenesSieve)69
프로그램4-1「소수판별함수」
프로그램4-2「주어진수보다작은모든소수나열하기」
프로그램4-3「에라토스테네스의체1」
프로그램4-4「에라토스테네스의체2」
프로그램4-5「에라토스테네스의체3」
프로그램4-6「소인수분해」
프로그램4-7「코드속도비교」

5.원리합계(Amountofprincipalandinterest)81
프로그램5-1「정기예금(연복리)원리합계」
프로그램5-2「적금(복리)원리합계」
프로그램5-3「복리적금원리합계함수」
프로그램5-4「목표액달성기간(정기예금)함수」
프로그램5-5「목표액달성기간(적금)함수」
프로그램5-6「목표액달성기간(적금)구하기」

6.전기요금(Electriccharges)93
프로그램6-1「그래프그리기」
프로그램6-2「사용량에따른전기요금」
프로그램6-3「사용량에따른전기요금그래프1」
프로그램6-4「사용량에따른전기요금그래프2」
프로그램6-5「전기요금표만들기」

7.콜라츠추측(Collatzconjecture)105
프로그램7-1「우박수열_500」
프로그램7-2「우박수열_m」
프로그램7-3「각수에대응하는우박수열길이의그래프」
프로그램7-4「콜라츠추측path들」

8.마방진(Magicsquare)115
프로그램8-1「홀수차마방진만들기」
프로그램8-2「3차의모든마방진생성」
프로그램8-3「각행의합」
프로그램8-4「각열의합」
프로그램8-5「각대각선의합」
프로그램8-6「마방진판별」

9.하노이탑퍼즐(TowerofHanoipuzzle)127
프로그램9-1「이동횟수구하기함수」
프로그램9-2「이동경로함수」

10.님게임(Nimgame)135
프로그램10-1「컴퓨터필승1」
프로그램10-2「컴퓨터필승2」

11.황금나선(Goldenspiral)147
프로그램11-1「피보나치수열의첫째항부터n번째항까지나열」
프로그램11-2「피보나치수열의첫째항부터n번째항의list」
프로그램11-3「피보나치나선그리기」
프로그램11-4「피보나치나선그리기함수」
프로그램11-5「황금나선그리기함수」
프로그램11-6「정사각형안의사분원그리기함수」

12.장미꽃디자인(Roseflowerdesign)161
프로그램12-1「정다각형그리기」
프로그램12-2「정오각형장미(작은정오각형부터그리기시작하기)」
프로그램12-3「정각형장미(작은정각형부터그리기시작하기)」
프로그램12-4「정오각형장미(큰정오각형부터그리기시작하기)」
프로그램12-5「색칠한정오각형장미」
프로그램12-6「정각형장미에임의의색칠」

13.별다각형(Starpolygon)175
프로그램13-1「(8,3)타입의별다각형1」
프로그램13-2「서로소인q,p에대한별다각형그리기함수」
프로그램13-3「(8,3)타입별다각형2」
프로그램13-4「서로소인q,p에대한(q,p)타입별다각형함수2」
프로그램13-5「임의의q,p에대한(q,p)타입별다각형함수」

14.코흐눈송이(Kochsnowflake)189
프로그램14-1「코흐곡선그리기재귀함수」
프로그램14-2「코흐눈송이함수」
프로그램14-3「코흐눈송이변형함수」

15.프랙탈나무(Fractaltree)199
프로그램15-1「이진트리그리기함수1」
프로그램15-2「이진트리그리기함수2」
프로그램15-3「피타고라스나무그리기함수1」
프로그램15-4「피타고라스나무그리기함수2」

16.의근삿값(ApproximationtoPi)213
프로그램16-1「다트보드그리기함수」
프로그램16-2「다트를던지고원안의점의수세기」
프로그램16-3「다트보드그리기,던지기」
프로그램16-4「구하기」

17.베르트랑의역설(Bertrand’sparadox)221
프로그램17-1「원그리기」
프로그램17-2「막대던지기모의실험함수」
프로그램17-3「베르트랑확률계산」

18.벤포드법칙(Benford’slaw)231
프로그램18-1「n개의수중첫째자리수가k인수의개수함수와그래프」
프로그램18-2「,의가수의분포를보여주는함수」

19.몬티홀문제(MontyHallproblem)239
프로그램19-1「선택에따른성공확률」
프로그램19-2「확률의변화그래프」프로그램19-3「몬티홀문제의일반화함수」

20.행렬과최소제곱문제(leastsquaresproblem)251
프로그램20-1「벡터의내적과곱,행렬의합과곱」
프로그램20-2「함수그래프그리기」
프로그램20-3「산점도그리기」
프로그램20-4「산점도와추세선함께그리기」
프로그램20-5「손실함수구하기」
프로그램20-6「추세선구하기」
프로그램20-7「추세곡선구하기」

3부예제프로그램다운로드및설치방법
1.프로그램예제다운로드268
2.ColabTurtlePlus설치방법269
3.프로그램차례270

출판사 서평

수학과프로그래밍교육의통합

우리는현대와같은지능,정보,기술의융합과학시대를소위4차산업혁명의시대라말합니다.이시대는인공로봇,챗GPT,사물인터넷,무인자동차등에서와같이소프트웨어의역할이더욱커진소프트웨어중심사회입니다.소프트웨어는생활에서의번거로운일들을편리하게자동으로처리할수있게해줌으로써우리의생활에큰변화를가져왔습니다.스마트폰앱만보아도너무도편리한많은앱들이그동안우리가상상했던일들을실현시켜주면서우리의생활에편의를제공하고있습니다.앞으로는소프트웨어로무장된인공지능로봇과함께일해야하는시대가됩니다.혁명이라부를정도의급격한시대의변화는사람들이지식에접근하고서로소통하는방식과함께정치,경제,교육등사회전반에걸쳐변화를요구하고있습니다.

교육내용및방법에서도변화가요구되고있습니다.
특히세계교육의흐름에서주목할만한것은교육에지대한영향을미쳤던컴퓨터의사용에대한패러다임이CAI(ComputerAssistedInstruction)에서프로그래밍교육으로변하고있다는것입니다.영국을비롯한세계여러나라에서이미초중등교육과정에프로그래밍교육을도입하여어떤문제가발생하였을때문제를해결하기위해자료를수집하고이를정보로만드는과정그리고자료를단순화하여문제해결의실마리를찾고컴퓨터프로그래밍을통하여문제를해결할수있는능력의배양에초점을두고교육하고있습니다.

프로그래밍교육의도입목적은문제해결력과컴퓨팅사고력의개발에있습니다.
교육에서의세계적흐름에발맞추어우리나라에서는‘2015년문ㆍ이과통합형교육과정총론’에소프트웨어교육의강화에대한내용을포함시켰습니다.이에따라2018년부터중등정보교과에서프로그래밍교육을실시하고있고,2019년에는초등교육과정에서실과교과에프로그래밍교육이도입되었습니다.여기서주목할것은컴퓨터프로그래밍도입의목적을프로그래밍기능의숙달보다는문제해결에초점을둔컴퓨팅사고(ComputationalThinking,CT)의개발이라고정하고있다는것입니다.

특히컴퓨팅사고력은읽기,쓰기,셈하기와같은기본적인소양에추가되어야능력입니다.
미래사회의인재가갖추어야할기본적소양에컴퓨팅사고력을추가해야한다고말합니다.컴퓨팅사고란문제해결,시스템디자인그리고인간행위에대한이해등을포함한기능으로서모든사람들이배우고사용할수있는읽기,쓰기,셈하기와같은기본적인소양에추가되어야할분석적능력입니다(Wing,2006).간단히말해서,복잡한문제를알고리즘적으로해결하는데사용되는사고로서컴퓨터환경에서는컴퓨터가실행할수있는방식으로문제와해를표현하는일련의문제해결방식이라고볼수있습니다.

컴퓨팅사고의개발은수학과프로그래밍의통합속에서이루어질때더욱효과적입니다.
컴퓨팅사고의요소들은수학적사고,모델링과같은수학적문제해결의요소와맥을같이하고있습니다.따라서최근에는수학교육과프로그래밍의통합을통해문제해결력뿐아니라컴퓨팅사고를개발하려는많은시도가이루어지고있습니다.
이러한시도의일환으로이책에서는수학에서의흥미로운주제를선정하고주제탐구과정에서수학학습과코딩의통합이이루어지도록하였습니다.즉,이책을통해수학문제해결과정에서자연스럽게프로그래밍언어를익히고,프로그래밍과정에서수학적능력과컴퓨팅사고력의향상을기대합니다.


이책내용의구성
ㆍ이책에서는개발환경으로쓰이는Anaconda와JupyterNotebook을사용하였습니다.
ㆍ이책에서는파이썬프로그래밍언어를사용하여프로그래밍과수학을통합하려는시도를하였습니다.프로그래밍을이용하여수학문제를해결하는과정에서프로그래밍언어의습득을기대합니다.
ㆍ프로그래밍을통해수학문제를해결하는과정에서컴퓨팅사고의개발을도모하였습니다.
ㆍ주제선정은파이썬의내장함수와turtle,math,random,matplotlib,numpy,pandas정도의모듈만을써서해결할수있도록선정하였습니다.
ㆍ알고리즘적사고와간단한프로그램언어만을익히기보다는수학적분석을필요로하는주제를선택하였습니다.단순히그래프를그려보거나미분이나적분을계산해보는등의파이썬의단순기능습득만을위한주제는배제하였습니다.
ㆍ컴퓨팅사고력개발에기여할수있도록컴퓨팅사고의핵심요소(추상화,알고리즘,자동화)를반영하여문제해결과정에수학적분석과프로그래밍단계를제시하였습니다.
ㆍ주어진문제를해결해봄으로써수학개념의유용성과가치를느낄수있는주제를선택하였습니다.
ㆍ수학지식수준과코딩의난이도를고려하여체계적으로나열하였습니다.
ㆍ단원은수와연산,확률과통계,기하의세영역을선정하였고각단원별로6~7개의흥미로운주제를다루었습니다.
ㆍ각프로젝트는4개의코너로구성하여전개해가고있습니다.
◎수학개념코너에서는프로그래밍을위한관련수학개념을설명하였습니다.
◎프로그래밍코너에서는문제해결에이르는알고리즘을생각하고프로그램을작성하도록하였습니다.
◎더나아가기코너에서는제시된문제의심화문제를다루었습니다.
◎도전문제코너에서는독자의탐구욕을자극하는문제를제시하여스스로해결해보도록하였습니다
ㆍ코딩의방법은다양합니다.이책에서제시한방법은하나의예에불과합니다.독자나름대로의코드작성을시도해보길권합니다.