고등학교 방과후 프로그래밍 특강

고등학교 방과후학교 프로그래밍 기초반을 맡아 컴퓨팅 사고와 파이썬을 20차시로 나눠 가르치고, 강의계획서와 교재·활동지를 직접 만들었습니다.

연표로 돌아가기
문제
하루 2시간씩 10일로 짜인 과정이라 파이썬 문법만 다루기에도 시간이 모자랐고, 그 안에 학생이 문제를 직접 절차로 바꿔 보는 경험까지 넣어야 했습니다.
담당
강의계획서와 강의 슬라이드, 교재 초고, 실습과 과제를 담은 활동지를 직접 만들었고, 월·수반과 화·목반 두 반의 수업을 모두 맡았습니다.
설계 판단
파이썬 문법은 변수와 자료형, 판단과 반복, 함수를 중심으로 다루고 클래스·모듈·파일 입출력은 뺐습니다. 개발 환경은 편집기와 인터프리터, 과학 계산 패키지를 한 번에 설치하는 아나콘다로 맞췄습니다.
검증 기준
미로 탈출 알고리즘은 도착 여부만 보지 않고 명령 수와 로봇의 행동 횟수, 다른 미로에도 통하는지로 비교하게 했습니다. 이진 탐색은 평균이 아니라 최악의 경우와 성립 조건으로 평가하게 했고, 파이썬 단원에서는 주어진 가설을 코드로 시험해 보는 문제와 단원마다 짧은 확인 문제를 냈습니다.
결과 범위
2018학년도 1학기 한 과정을 맡았고, 활동지 부록에 수업 뒤 이어 볼 파이썬 온라인 교재와 코드 작성 규칙(PEP 8), 깃허브 입문 자료를 모아 두었습니다. 학생 성취를 잰 결과는 싣지 않습니다.

전 학년을 대상으로 한 방과후학교 프로그래밍 기초반을 두 개 반으로 나눠 진행했습니다. 이론과 실습을 번갈아 두고, 20차시 가운데 4차시를 컴퓨팅 사고에, 12차시를 파이썬에 두었습니다.

대학에서 물리학 전공자에게 프로그래밍 실습을 지도할 때, 수학과 이론을 알면서도 그것을 절차로 바꾸지 못해 막히는 경우를 자주 봤습니다. 그래서 예제를 따라 치는 방식 대신 문제를 분해·추상화해 절차로 만드는 훈련에 앞부분을 썼습니다.

활동지(표지 제목 '프로그래밍 기초 교재 2018 1학기 방과후학교')와 강의 슬라이드를 직접 집필해 배포했고, 28장으로 계획한 교재 『프로그래밍 기초 with 파이썬』은 14장 앞부분까지 초고를 써 두었습니다. 본문에 실은 소스코드는 MIT 라이선스로 열어 두었습니다.

컴퓨팅 사고 단원에서는 미로 탈출과 순차 탐색·이진 탐색, 하노이의 탑을 다뤘고, 활동지의 마지막 실습 장에는 50 팩토리얼의 자릿수 합 계산과 터틀 그래픽으로 오망성 그리기를 두었습니다.

컴퓨팅 사고 단원의 도입 소재는 세 가지였습니다. 1부터 10까지의 합을 분해, 패턴 찾기, 일반화, 알고리즘 순으로 풀어 보게 했고, 신호등이 없는 교차로를 안전하게 지나는 문제와 질문 몇 개로 동물 다섯 종을 가려내는 스무고개형 문제를 이어서 냈습니다. 틀은 Jeannette Wing 의 K-12 방식을 따르고 구글의 교육자용 컴퓨팅 사고 자료를 최대한 활용했다고 교재 머리말에 밝혔습니다.

알고리즘은 점수가 아니라 기준으로 비교하게 했습니다. 미로 탈출에서는 명령 수를 로봇이 기억해야 할 양으로, 행동 수를 걸리는 시간으로 풀어 보고 둘 중 어디에 더 가치를 둘지 정한 뒤 방법을 고르게 했습니다. 이진 탐색은 「약점 찾아내기」 과제로 냈습니다. 오름차순으로 놓인 10개 값에서 64를 찾을 때 순차 탐색은 8번 확인하고 이진 탐색은 2번 만에 찾는 예를 견준 뒤, 100개일 때 최악의 경우 몇 번이 드는지와 순차 탐색은 되지만 이진 탐색은 안 되는 경우를 찾게 했습니다. 하노이의 탑 과제에서는 원반 1개·2개·3개일 때의 이동 횟수 1·3·7회를 직접 세어 본 뒤 4개와 5개를 추론하고, 원반이 x개일 때의 식을 찾아 원반 수를 입력받아 횟수를 계산하는 알고리즘으로 설계하게 했습니다.

학생 자신의 프로그램 목표는 수업 중 세 번 다뤘습니다. 첫 과제에서는 하고 싶은 일을 기술이 아니라 기능으로 적게 했고, 둘째 과제에서는 필요한 입력과 출력의 종류를 적어 핵심 기능 한 가지로 목표를 좁히게 했으며, 셋째 과제에서는 그 핵심 기능을 직접 구현하게 했습니다.

개발 환경은 아나콘다·파이참·아톰·비주얼 스튜디오의 요금과 특징을 비교한 표로 고른 이유를 보인 뒤 아나콘다로 맞췄고, 설치 마법사가 묻는 항목을 넘기지 않고 읽어 기억해 두도록 안내했습니다. 기준 환경은 윈도우 10 과 파이썬 3.6 이며 실습 편집기는 Spyder 였습니다. 예제 코드는 변수와 함수 이름을 한글로 쓰고, 수업에서는 특별한 경우를 빼고 영어를 쓰지 않는다고 밝히면서 나중을 위해 영어를 조금씩 공부하라고 안내했습니다.

파이썬 단원에는 짧은 확인 문제를 붙였습니다. 몫과 나머지 연산자로 홀수와 짝수 가리기, 구구단 6단부터 9단까지 출력하기, 1부터 몇 번째 자연수까지 더해야 합이 336을 넘는지 반복문으로 찾기가 그 예입니다.

Python컴퓨팅 사고교재 집필