오늘은 중학생 코딩 학습 방법에 대해 알아보겠습니다. 우선, 코딩 수업을 하기 전 꼭 해야 하는 이론 수업에 대해 이야기하겠습니다. 다음으로, 코딩 수업과 이론 수업을 어떻게 실제 수업에 적용할 수 있을지, 수업계획서 예시를 통해 알아보겠습니다. 마지막으로, 이 모든 것에 앞서 교육해야 할 기초 교육에 대해 알아보고 마치겠습니다.
블록 코딩 전, 필수 이론 수업 필요성 및 방법
- 컴퓨터 기본 지식: 학생들이 컴퓨터를 처음 체계적으로 배운다면, 컴퓨터의 하드웨어와 소프트웨어 개념, 운영체제 사용 방법, 입출력 장치 사용법 등을 먼저 소개합니다. 예를 들어 컴퓨터 시스템의 구성과 동작 원리(중앙처리장치, 메모리, 저장장치 등)를 간략히 설명하고, 수업에 사용할 PC 로그인, 프로그램 실행, 파일 저장 방법 등을 알려줍니다. 이러한 컴퓨팅 시스템 이해는 중학교 정보교과에서도 다루는 내용입니다. 또한 디지털 환경에서의 에티켓 (저작권, 사이버 윤리 등)도 간단히 언급하여 안전한 컴퓨터 활용 습관을 심어줄 수 있습니다.
- 알고리즘 기초 및 절차적 사고: 코딩에 앞서 논리적으로 문제를 해결하는 방법을 익혀야 합니다. 알고리즘이란 문제 해결을 위한 일련의 절차를 의미하며, 사실 우리 생활 속에도 알고리즘이 숨어있습니다. 예를 들어 샌드위치 만들기와 같은 일상 과제를 수행하는 절차를 종이에 써보게 하는 언플러그드 활동을 할 수 있습니다. 학생들은 작업을 순서대로 나열하고, 그 지시대로 서로 샌드위치를 만들어보며 명령의 정확성과 순서가 중요함을 깨닫게 됩니다. 이러한 활동을 통해 순차적 논리(Sequence)의 개념, 분해(큰 문제를 작은 단계로 나누기) 등의 컴퓨팅 사고력 요소를 체험하게 합니다. 알고리즘 기본 개념으로는 입력→처리→출력의 프로그램 수행 원리도 소개할 수 있습니다. 예를 들어 엘리베이터나 자동차 내비게이션 작동을 사례로 들어, 프로그램이 입력을 받아 처리하고 결과를 출력함을 설명합니다. 이러한 “입력-처리-출력” 모델은 학생들이 앞으로 만들 프로그램의 동작을 이해하는 밑바탕이 됩니다.
- 블록형 프로그래밍 개념 이해: 본격적으로 엔트리를 배우기 전, 프로그래밍이 무엇이고 블록 코딩이 어떻게 동작하는지 감을 잡게 합니다. 텍스트 코딩과 달리 블록 코딩은 마치 레고 블록을 끼워 맞추듯 명령 블록들을 연결하여 프로그램을 만드는 방식입니다. 이는 문법 오류 없이 손쉽게 코딩을 시작할 수 있어 초보자에게 적합합니다. 실제로 2015 개정 교육과정의 중학교 정보 교과에서도 Scratch나 엔트리 같은 블록형 언어로 프로그래밍을 시작하도록 권장하고 있습니다. 수업 전 학생들에게 블록 코딩으로 어떤 것들을 만들 수 있는지 흥미를 불어넣어 주세요. 예를 들어 “엔트리는 프로그램을 만드는 프로그램으로, 이야기책, 애니메이션, 게임 등 상상한 것을 직접 만들 수 있다”는 점을 알려주면 학생들의 호기심을 자극할 수 있습니다. 또한 블록 코딩을 통해 논리적 사고력과 문제해결능력을 키울 수 있고, 전 세계적으로 이러한 교육이 이뤄지고 있다는 점도 소개하면 학습 동기를 높일 수 있습니다.
요약하면, 엔트리 수업 전에 컴퓨터 사용법과 기초 개념(알고리즘 사고, 입출력 원리 등)을 다룸으로써 학생들이 낯선 용어와 도구에 대한 두려움을 줄이고, 코딩 학습의 토대를 마련하도록 합니다. 이러한 선행 교육을 통해 이후 엔트리 블록 코딩 수업에 자연스럽게 몰입할 수 있는 발판이 될 것입니다.
다음은 중등 정보 교과서 목차 예시입니다.
1. 정보 문화
1). 정보 사회
2). 정보 윤리
2. 자료와 정보
1). 자료와 정보의 표현
2). 자료와 정보의 분석
3. 문제 해결과 프로그래밍
1). 추상화와 알고리즘
2). 프로그래밍
4. 컴퓨터 시스템
1). 컴퓨터 시스템의 동작 원리
2). 피지컬 컴퓨팅
중등 정보 교과서는 위에서 이야기한 블록 코딩 수업 전 필수 지식을 충분히 담고 있습니다. 블록 코딩 수업과 함께 이론 수업을 진행해도 됩니다. 그런데, 코딩 수업은 시수가 적은 경우가 많아, 학생들이 두 가지 영역을 충분히 학습하기 어려울 수 있습니다. 그래서 한 학기를 기준으로 이론을 3개월, 실습을 3개월 하는 것을 추천합니다. ( 아래는 이론, 코딩 섞어서 수업하는 예시입니다. )
블록 코딩 전, 실제 수업 예시
주요 학습 주제학습 내용 및 실습 활동 ( 한 주 / 2 시수 )
1주차 | 오리엔테이션 & 컴퓨팅 사고 (컴퓨터 기본 사용법, 알고리즘 이해) |
- 컴퓨터 활용 오리엔테이션: 교실 PC 켜기/끄기, 엔트리 회원가입 방법 안내. - 정보 사회 소개: 소프트웨어가 우리 생활에 미치는 영향 간략히 토의 (예: 스마트폰 앱, 엘리베이터 작동 원리 등). - 알고리즘 언플러그드 활동: 작은 모둠으로 일상 동작(예: 가방 싸기) 절차 작성 후 서로 따라 해보기 - 토론 & 정리: 올바른 순서와 명확한 명령어의 중요성 이해하기 (논리적 사고 훈련). |
2주차 | 프로그래밍 기초 개념 (입력-처리-출력, 엔트리 기본 기능) |
- 프로그래밍 원리 소개: 프로그램의 동작을 입력→처리→출력 과정으로 설명. 실생활 예로 키보드 입력이 화면 출력으로 이어지는 원리 시연. - 엔트리 플랫폼 소개: 엔트리 접속 및 인터페이스 살펴보기 – 오브젝트 영역, 블록 팔레트, 실행화면(Stage) 등. - 엔트리 기본 블록 익히기: ‘시작하기’ 블록으로 간단히 오브젝트 움직여보기. 기본 블록 종류(시작, 움직임, 생김새, 소리, 흥미 등) 체험. - 미니 실습: 준비된 엔트리 튜토리얼 미션 수행 (예: “Hello, 엔트리!” 라고 말하게 하기) – 순차 실행 개념 이해. |
3주차 | 기본 동작 프로그래밍 (순차 및 이벤트 처리, 간단한 게임1) |
- 전주 복습: 엔트리 기본 블록 (이벤트, 움직임 등) 복습 및 질의응답. - 게임 기초 만들기: 간단한 인터랙티브 동작 구현 실습. 예) ‘달리기 게임’ – 키보드 누르면 캐릭터가 이동하도록 블록 조립. 이벤트(키 입력)와 순차 실행 사용. - 게임 원리 탐구: 유명 게임 예시(쿠키런 등)의 캐릭터 동작과 규칙을 함께 분석. 캐릭터가 장애물을 피하는 논리를 생각해보기. - 미니 프로젝트: 장애물 피하기 간단 게임 구현 – 학생 각자 또는 페어로 캐릭터 이동 및 점수 증가 등의 로직을 블록으로 작성. 완료 후 모두 앞에 나와 실행 결과 시연 및 피드백 공유. |
4주차 | 제어 구조와 애니메이션 (반복, 조건 도입 + 스토리 만들기) |
- 프로그래밍 제어구조 개념: **반복(loop)**과 조건(condition) 블록 소개 (예: ~동안 반복, 만약 ~라면). - 애니메이션 예제 분석: 제공된 간단한 애니메이션 작품을 함께 실행해 보고, 움직임/말하기/배경 전환 등이 어떻게 구현되었는지 블록 구조 확인. - 애니메이션 만들기 실습: 동화책 한 장면 만들기 – 두 캐릭터가 대화하는 스토리를 팀별로 제작. 하나의 캐릭터가 말풍선을 띄우면 다른 캐릭터가 답하는 이벤트(신호 보내기/받기) 사용. - 결과 공유: 완성된 애니메이션 작품 상영 및 느낀 점 발표. 재미있었던 스토리텔링 아이디어를 함께 칭찬하고, 개선할 점 토의. |
5주차 | 응용 게임 제작 (중급) (조건/변수 활용, 게임 심화1) |
- 조건문 활용: 게임에 조건 판단 블록 활용 소개 (예: ‘만약 ○○이면 ~한다’). 점수 또는 충돌 판정 등에 조건을 사용해보기. - 심화 게임 원리 파악: 예제 게임 ‘바운스볼’ 시연 – 공이 벽에 부딪히면 튕기는 동작 관찰. 여기서 **각도 계산(수학)**과 조건판단(벽에 닿았는가?) 논리 토의. - 게임 심화 실습: 학생들이 직접 공 튕기기 게임 구현 도전. 벽에 닿으면 각도 바꾸기, 점수 계산 등 블록 조합. 필요시 교사가 힌트(각도의 성질 등) 제공. 동시에, 음향/펜 기능 등 새로운 블록도 탐색. - 공유 & 개선: 완성된 게임을 서로 플레이해보고, 잘 안 되는 부분을 함께 디버깅. 문제 해결 경험 공유하며 수정/개선 아이디어 제시. |
6주차 | 블록 코딩으로 만드는 앱 (변수, 함수 기초 + 간단한 응용 프로그램) |
- 응용 프로그램 개념: 게임 외에 실생활에 유용한 응용 소프트웨어를 만들어보는 시간. 예시로 간단 계산기, MP3 플레이어 등을 언급하고, 이러한 프로그램의 구성요소(버튼, 입력창 등)를 설명. - MP3 플레이어 예제: 엔트리로 구현된 MP3 플레이어 예시 실행. 재생/일시정지/정지 버튼 누르는 동작의 결과를 관찰하고, 각각 어떻게 블록으로 구현되는지 분석. - 변수 활용: 소리 크기나 재생 상태를 저장하는 변수 개념 소개. 변수 만들기 및 값 변경 블록 실습. - 미니 프로젝트: 간단한 소리 재생 프로그램 만들기 – 여러 버튼(예: 동물소리)을 눌렀을 때 다른 소리가 나는 프로그램 제작. 학생들은 창의적으로 버튼 디자인을 하고, 변수로 상태를 관리하거나 함수를 흉내내어(미리 만들어둔 블록 묶음) 기능 구현. - 발표: 각자 만든 “나만의 앱”을 시연하고, 서로 가장 흥미로운 아이디어를 선정해 칭찬. |
7주차 | 종합 프로젝트 준비 (팀 협동 챌린지 및 프로젝트 기획) |
- 팀 코딩 챌린지: 두 명씩 페어 또는 소그룹을 구성하여 협동 코딩 미션 수행. 예: 엔트리로 간단한 피아노 연주 프로그램 만들기 – 도레미 음계 버튼 눌러 소리 내기 (음악 과목 연계). 학생들이 각자 역할을 분담(디자인/코딩)하여 제한 시간 내 공동 완성. - 협업 경험 나누기: 팀별 결과물을 시연하고 협동 과정에서 배운 점 발표. 서로 간의 의사소통, 역할 나누기의 중요성 체득. - 최종 프로젝트 주제 소개: “우리 생활 속 문제를 해결하는 프로그램 만들기” 등 열린 과제 제시. 실생활 사례(예: 쓰레기 분리배출 도우미 게임, 공부 타이머 앱 등) 여러 가지를 보여주고 영감 얻기. - 프로젝트 팀/주제 선정: 자유롭게 또는 관심사별로 2~3인 팀을 구성하고, 만들고 싶은 프로그램 주제를 선정하게 함. 교사는 주제의 적절성을 검토하여 조언. |
8주차 | 프로젝트 설계 (문제 분해, 알고리즘 설계, 스토리보드) |
- 아이디어 구체화: 팀별 프로젝트 기획 회의 진행. 해결하려는 문제나 구현하려는 기능을 구체적인 시나리오로 설명해보게 함. - 원리 파악 및 자료 조사: 해당 주제를 구현하기 위해 알아야 할 지식 정리. (예: 쓰레기 분리배출 게임이면 분리수거 규칙 조사). - 스토리보드 및 알고리즘 작성: 프로젝트의 주요 화면을 그려보고, 각 화면에서 일어나는 동작을 순서대로 나열. 필요하면 **순서도(Flowchart)**를 사용해 프로그램 흐름도를 그림. 의사코드나 간단한 알고리즘을 문장으로 적어보기. - 피드백: 각 팀별 진행 상황을 중간 점검. 다른 팀과 아이디어를 발표 및 피드백 세션을 가져, 참신한 점은 칭찬하고 모호한 부분은 질문하도록 유도. 이를 통해 논리의 허점을 미리 발견하고 개선. |
9주차 | 프로젝트 구현 (1) (본격 코딩 시작 – 기본 골격 제작) |
- 코딩 착수: 8주차 설계안을 바탕으로 엔트리에서 프로젝트 구현 시작. 먼저 기본 캐릭터나 화면을 세팅하고, 주요 캐릭터 동작 한 두 개부터 코딩. - 교사 코칭: 각 팀별 자리를 돌며 기술적 어려움이 있는 부분 지도. 특히 **자료 구조(리스트)**나 난수 발생 등 고급 블록이 필요하다면 사용법 설명. - 중간 점검: 시간 절반 경과 후 팀별 진행 상황 간단 공유. 계획 대비 어려운 점을 이야기하면 다른 학생이나 교사가 팁 제공. (예: 캐릭터 충돌 판정이 어려우면 이전에 다룬 조건문 예시 상기 등) - 계속 구현: 남은 시간 동안 팀별 코딩 지속. 목표는 프로젝트 핵심 기능 완성입니다. (예: 게임이면 플레이어 조작과 승패 판정까지 구현). |
10주차 | 프로젝트 구현 (2) (기능 완성과 테스트) |
- 코딩 완료 및 개선: 지난 시간에 이어 잔여 기능 구현 완료. 각 팀은 모든 예정 기능을 넣었다면, 디버깅과 개선 단계로 넘어갑니다. - 디버깅 지도: 프로그램 실행 중 발생하는 오류나 버그를 찾고 고치는 법 지도. (변수가 제대로 초기화되지 않아서 생긴 문제 등을 함께 해결). - 기능 업그레이드 (도전): 기본 요구 사항을 끝낸 팀에는 추가 도전과제 부여. 예를 들어 점수 저장 기능, 난이도 선택 등 심화 기능을 생각해보게 하여 구현토록 합니다. 창의적 아이디어 환영. - 테스트: 서로의 프로그램을 교차 테스트하여 사용자 입장에서 문제는 없는지 점검. 발견된 문제는 각 팀이 수정하고 최종 발표 준비. |
11주차 | 최종 발표 & 공유회 (프로젝트 시연, 피드백 및 성과 공유) |
- 프로젝트 발표 준비: 발표 순서를 정하고, 팀별로 발표 자료 또는 시연 스크립트를 최종 정리. (필요하면 PPT나 포스터 준비하되, 간단히 화면 구성을 설명하는 정도) - 팀별 발표: 각 팀이 자신의 프로젝트를 시연하고, 개발 동기와 과정, 프로그램 사용 방법을 설명합니다. 다른 학생들은 경청하며 궁금한 점 질문. - 피드백 및 질의응답: 발표 후 교사와 학생들이 피드백 제공. 참신한 점, 실생활에 어떻게 도움될지 등 긍정적인 부분 언급하고, 개선 아이디어도 제안. 발표자는 질의응답을 통해 프로그램을 더 개선하거나 확장할 방법을 생각해보는 계기 마련. - 성과 공유: 모두가 만든 프로그램을 교실에 전시 (엔트리에 작품 공유 기능을 활용하여 클래스룸에 게시)하고 서로 체험. 협동심과 창의력을 발휘한 과정을 함께 축하. |
12주차 | 수업 마무리 및 확장 (복습, 평가 및 향후 학습 안내) |
- 퀴즈 및 복습: 1주차부터 다룬 개념을 게임형 퀴즈로 복습. (예: OX퀴즈 – “만약 블록은 조건문이다 (O/X)”). 이를 통해 주요 용어와 개념 정리. - 자기 평가 및 상호 평가: 학생들이 자신의 느낀 점을 짧은 글로 쓰고 (어려웠던 점, 가장 뿌듯했던 순간 등), 팀원이나 다른 친구들에게 감사 인사를 전하게 함. 또한 교사는 프로젝트 및 수업 참여에 대한 평가 결과 간단히 피드백(개별 강점 칭찬 및 발전점 조언). - 시상 및 인증: 전체 과정을 성실히 수행한 학생들에게 수료증 또는 소프트웨어 학습 뱃지 제공. 특별히 창의적인 프로젝트를 수행한 팀에게 우수상 등을 수여하여 동기 부여. - 향후 학습 안내: 앞으로 중등 정보 교과에서 배우게 될 내용 소개 및 추가로 파이썬 등 텍스트 코딩으로 나아갈 수 있는 경로 안내. 엔트리 온라인 커뮤니티나 코딩 경진대회(예: 엔트리 챌린지) 정보를 제공하여 지속적인 관심 유도. 마지막으로 단체 사진 촬영 등으로 즐겁게 마무리. |
이 수업 안은 예시일 뿐입니다. 블록 코딩 학습으로 어떻게 들어갈 수 있는지, 협동학습은 어떻게 해야 하는지, 수업 중 학생들이 어떻게 생각하게 해야 하는지에 대한 예시입니다. 이를 바탕으로 여러분 만의 수업 안을 만들어 보세요. 이론 수업을 먼저 진행하고, 이 수업 안을 통해 학생들이 스스로 그리고 함께 고민할 수 있도록 하는 것도 좋은 방법입니다.
기초 개념 수업
본 커리큘럼은 중학생 대상이지만, 초등학생 수준에 응용할 수 있도록 기초 개념에 중점을 두고 있습니다. 이는 학생들의 연령이나 사전 경험에 관계없이 핵심 원리를 이해시키는 것이 중요하기 때문입니다.
- 핵심 개념 강조: 순차, 반복, 조건, 변수와 같은 컴퓨팅 사고의 핵심 개념을 지속적으로 강조합니다. 예를 들어, 초등학생 수업이라면 5주 차 이상의 심화 기능은 제외하고, 순차(차례대로 명령 수행)와 반복(같은 행동 여러 번 수행) 개념을 그림 카드나 놀이를 통해 충분히 연습시킬 수 있습니다. 본 계획의 1~4주 차에 해당하는 내용(알고리즘 놀이, 간단한 이야기/게임 만들기)은 초등 고학년에게도 적합한 활동들입니다. 실제로 미국이나 영국 등에서도 초등학생에게 놀이 기반으로 프로그래밍 교육을 시작하고 있으며, 한국도 초등 5-6학년 실과 시간에 스크래치/엔트리 기초를 다루고 있습니다.
- 학생 눈높이에 맞춘 설명: 어려운 용어보다는 비유와 실례를 들어 개념을 설명하도록 합니다. 예를 들어 변수를 가르칠 때 초등에는 “값을 기억하는 상자”라는 비유를 쓰고, 반복문은 “종이접기 10번 하기와 같이, 같은 일을 척척해주는 마법”으로 설명하는 식입니다. 이러한 방식은 중학생에게도 마찬가지로 효과적입니다. 개념을 처음 도입할 때는 간단한 게임이나 퀴즈로 직관적으로 파악하게 한 뒤, 블록 코딩으로 구현하며 개념을 체득하게 합니다.
- 단계적 심화: 본 수업 안은 기초 → 중급 → 고급 순으로 단계별 구성되어 있어, 초등학생 수업에서는 기초 단계 활동만 선별하여 진행하거나 진도를 조절할 수 있습니다. 반대로 중학생이라도 사교육 등으로 기초가 탄탄한 경우에는 중급 단계로 빨리 넘어갈 수 있도록 융통성 있게 적용합니다. 교육과정의 큰 흐름(예: 입력-처리-출력 원리 → 순차/이벤트 코딩 → 조건/반복 → 프로젝트)은 연령대와 무관하게 유지되므로, 교사는 학생 수준에 맞춰 예제의 난이도만 조절하면 됩니다.
- 초등 연계의 예: 만약 이 커리큘럼을 초등 5-6학년 코딩동아리에 적용한다면, 7-12주차의12주차의 팀 프로젝트 대신 더 많은 작은 프로젝트나 놀이를 넣을 수 있습니다. 예를 들어 7주차에 팀 챌린지 대신 엔트리 학습 모드 게임(엔트리 제공 교육용 게임)을 활용해 즐겁게 복습하고, 최종 프로젝트는 간단한 수준(예: 동화 만들기)으로 범위를 줄일 수 있습니다. 중요한 것은 **기초 개념(순차, 조건, 반복)**을 충분히 경험시켜 컴퓨팅 사고의 기반을 다지는 것입니다. 이러한 기초가 튼튼하면 연령이 낮더라도 스스로 더 복잡한 문제에 도전할 준비가 되고, 학년이 올라가서도 쉽게 심화 개념을 받아들일 수 있습니다.
요컨대, 나이나 학년에 상관없이 프로그래밍 교육은 기초 개념의 충실한 이해가 우선입니다. 중학생을 위한 본 커리큘럼도 그러한 원칙 아래 설계되었으며, 따라서 약간의 변형을 거치면 초등학생 수업에도 활용할 수 있습니다. 컴퓨팅 사고력은 어릴 때부터 키울수록 효과적이므로, 본 수업 설계를 토대로 쉬운 난이도의 활동부터 차근차근 진행한다면 초등학생들도 즐겁게 코딩에 입문할 수 있을 것입니다.