고등학교 방과후 온라인 프로그래밍 강좌
고등학교 프로그래밍 동아리를 대상으로 웨비나와 강의 영상을 만들어, 1학기에는 파이썬 기초를 2학기에는 깃허브를 쓰는 포트폴리오 프로젝트를 다뤘습니다.
- 문제
- 1학기에는 장비 비용 부담 없이 브라우저만으로 실습할 방법이 필요했고, 2학기에는 파이썬 기초만 배운 학생들에게 포트폴리오에 넣을 프로젝트가 없다는 점이 먼저 풀 문제였습니다.
- 담당
- 실시간 웨비나 진행과 발표 자료, 강의 영상 원고와 녹화, 실습·과제용 Colab 노트북 제작, 메일로 받는 질의응답을 맡았습니다.
- 설계 판단
- 모듈·패키지·GUI 제작은 Colab에서 다루기 불편해 기초 과정에서 뺐습니다. 2학기 프로젝트는 깃허브 협업을 익히도록 2명 이상으로 팀을 짜고, 저장소 소유 권한은 2차 인증을 켠 학생에게만 주기로 했습니다.
- 검증 기준
- 과제는 모든 셀의 실행 결과가 남은 노트북으로 받았고, 오류가 나는 코드는 원인을 주석으로 적은 뒤 고치게 했습니다. 프로젝트 제안은 스스로 겪는 불편이 담기고 팀원도 공감할 문제인지를 기준으로 안내했습니다.
- 결과 범위
- 이 페이지는 1학기 기초 과정과 2학기 프로젝트 제안·선정 단계까지를 다룹니다. 선정 이후 팀별 진행 결과와 동아리 포트폴리오는 싣지 않습니다.
대면 수업 대신 실시간 웨비나와 녹화 영상으로 강좌를 꾸렸습니다. 1학기에는 개발 직군과 언어 선택 기준을 먼저 이야기한 뒤, Google Colab 노트북으로 변수와 자료형, 판단문, 시퀀스 슬라이싱, 반복문까지 파이썬 기초를 다뤘습니다.
노트북은 빈칸을 채워 가며 실행하는 형태로 만들었습니다. 첫 과제는 별도 노트북으로, 이후 단원은 설명 안에 과제 절을 둔 노트북으로 나눠 각자 진도에 맞춰 실습하고 제출할 수 있게 했습니다.
첫 웨비나(2021년 5월 28일)는 문법보다 진로와 언어 선택을 먼저 다뤘습니다. 직군을 과학·공학 연구, 애플리케이션, 웹 서비스, 임베디드·운영체제의 네 갈래로 나눠 요구 학력과 진학 기간을 비교하고, 언어 선택은 '영원히 쓸 수 있는 언어도 절대적인 우열도 없다'는 전제 아래 정해진 언어를 우선하고 생산성이 높은 언어를 고르며 유지관리가 계속되는지 확인하라는 세 기준으로 안내했습니다. 파이썬에 대한 흔한 오해 세 가지(쉬워서 빨리 배운다, 느려서 현업에서 쓸모없다, 무엇이든 할 수 있어 다른 것을 배울 필요가 없다)를 짚고 웹·과학통계·기계학습·게임·IoT·자동화 분야별 라이브러리 지도를 보였습니다. 두 번째 웨비나(6월 11일)는 직관과 측정 기반 논리, 컴퓨팅 사고(알고리즘)를 구분해 설명하고 학과를 먼저 고르고 대학을 나중에 고르는 진학 순서를 다룬 뒤 첫 과제를 다시 풀었습니다.
1학기 노트북은 첫 과제용 1종과 단원별 6종(Colab 사용법, 주석과 식별자, 숫자 자료형과 연산자, 논리형과 판단문, 시퀀스 자료형과 슬라이싱, 반복문)으로, 6월 14일부터 20일 사이에 작성하고 고쳤습니다. 과제는 의도와 다르게 동작하는 코드를 고치거나 성질을 실험으로 밝히는 형식이 많았습니다. 내장 함수 이름을 변수로 덮어써서 생기는 오류의 원인을 주석으로 적고 고치기, 정수 3 과 실수 3.00 을 구분하는 논리식 만들기, `if…elif` 의 두 조건이 모두 참일 때 어떻게 동작하는지 코드로 확인하기, 3 과 5 의 공배수 다섯 개를 찾는 `while` 쓰기가 그 예입니다. 제출 방식은 중간에 바꿨습니다. 5월 31일에 낸 첫 과제는 사본을 만들어 풀고 노트북 파일을 내려받아 Google Classroom 에 올리는 방식이었지만, 6월 중순 단원부터는 Colab 확장을 Google Drive 에 연결해 두고 셀 출력이 남은 채로 저장한 뒤 Classroom 에서 제출만 누르게 했습니다. 첫 과제는 6월 11일에 다시 출제했습니다.
2학기에는 포트폴리오를 주제로 삼았습니다. 깃허브 계정과 2차 인증, 편집기 설정에서 시작해 동아리에서 함께 프로젝트를 만들고 기록을 남기는 흐름까지를 회차별 영상으로 나눠 제공했습니다.
2학기 프로젝트로는 깃허브 페이지로 만드는 동아리 웹 포트폴리오, 몬테카를로 트리 탐색으로 수를 두는 리버시 인공지능, 가상 전염병의 확산 시뮬레이션 세 가지를 제안했고, 그래픽·음악 자원과 레벨 디자인이 필요한 게임 개발은 활동 시간 안에 끝내기 어렵다고 보고 뺐습니다.
프로젝트 제안은 사전 설문에서 파악한 선호 프로그래밍 유형 여섯 가지에서 출발했습니다. 보기 좋은 프로그램, 반복 작업 자동화, 주어진 문제 해결, PC 밖 기기 제어, 내부 구현 과정, 계속 성장하는 서비스이며 유형마다 대응하는 직무를 함께 설명했습니다. 2학기 첫 웨비나(9월 24일)는 채용 방식의 변화와 포트폴리오의 의미, 기업이 깃허브 기록에서 읽는 항목(언제부터, 얼마나 자주, 어떤 언어로, 어떻게 관리하는가)을 다뤘고, 취미와 흥미를 기준으로 프로젝트 방향을 정하는 실습과 계정 가입·2차 인증 설정까지 진행했습니다.
깃허브 영상은 보고서 파일명이 '최종, 최종 수정'으로 늘어나는 상황으로 버전 관리의 필요를 설명하고, 가입과 2차 인증, 편집기와 Git 설치 옵션을 화면마다 이유까지 짚어 가며 안내했습니다. 설치 옵션은 큰 파일용 저장소 확장, 기본 편집기 지정, 줄바꿈 변환 설정까지 다뤘고, 마지막에는 설정 동기화로 다른 컴퓨터에서도 같은 환경을 쓰게 했습니다.
세 프로젝트는 대상 인원과 필요 지식, 결과물 형태, 예상되는 난관을 함께 안내했습니다. 동아리 웹 포트폴리오는 2~4명을 대상으로 HTML·CSS·JavaScript 에 더해 Jekyll·SASS·Liquid·마크다운이 필요하고 난관은 구조와 배치, 색상, 여러 기기 대응 같은 디자인이라고 알렸습니다. 리버시 인공지능은 3~6명을 권장하고 PySide6 화면과 게임 규칙의 추상화(선택 가능한 수, 종료 조건, 승패 판정), 학습 데이터 저장 형식을 정해야 하며, 기술 지원은 코드 작성에 한정하고 기본 알고리즘은 팀이 직접 설계하게 했습니다. 전염병 확산 시뮬레이션은 `matplotlib`·`numpy` 로 무작위 이동, 접촉 뒤 확률 감염, 일정 시간 뒤 감염자 소멸의 기본 규칙에서 출발하고, 결과물은 소스코드가 아니라 마크다운 연구 보고서이며 알아내고 싶은 것과 시각화 방법을 스스로 정하게 했습니다.
수업 운영 원칙도 안내했습니다. 질문과 리뷰, 코드 주석의 기준 언어는 한국어로 하고 번역기를 쓰는 것을 부끄러워하지 않게 하되 영어 학습의 필요는 인정했으며, 취향과 프로젝트 주제는 바뀔 수 있다고 못 박았습니다. 파이썬을 배워야 해서가 아니라 하고 싶은 일에 필요해서 배운다는 방향이었고, 학기 목표는 문법 숙달이 아니라 프로그램이 만들어지는 과정을 알아 가는 것이었습니다.