알고리즘, 어렵지 않아요
"알고리즘"이라는 단어를 듣는 순간, 많은 사람들이 복잡한 수학 공식이나 어려운 프로그래밍 코드를 떠올립니다. 하지만 알고리즘은 사실 우리가 매일 하고 있는 일의 순서를 정리한 것에 불과합니다. 아침에 일어나서 학교에 오기까지의 과정도 하나의 알고리즘이고, 급식을 받아 자리에 앉는 과정도 알고리즘입니다.
2022 개정 교육과정에서는 초등학교 단계부터 컴퓨팅 사고력을 기르는 것을 강조하고 있습니다. 저는 이 과정에서 아이들이 코딩 도구를 사용하기 전에, 먼저 알고리즘적 사고방식 자체를 체험해야 한다고 생각합니다. 이번 글에서는 제가 실제 교실에서 적용해본 알고리즘 수업 사례들을 공유하겠습니다.
언플러그드 활동: 컴퓨터 없이 배우기
언플러그드(Unplugged) 활동이란 컴퓨터를 사용하지 않고 컴퓨터 과학의 개념을 배우는 교육 방법입니다. 초등학생들에게는 이 방법이 특히 효과적인데, 추상적인 개념을 구체적이고 손에 잡히는 활동으로 바꿔주기 때문입니다.
활동 1: 샌드위치 만들기 알고리즘
이 활동은 "정확한 지시"의 중요성을 가르치는 데 탁월합니다. 선생님이 로봇 역할을 맡고, 학생들이 샌드위치 만드는 방법을 단계별로 말해주는 활동입니다.
- 학생들에게 "샌드위치를 만드는 방법을 알려주세요"라고 요청합니다
- 학생이 "빵에 잼을 바르세요"라고 하면, 선생님은 빵 봉지 위에 잼을 바르는 시늉을 합니다
- 학생들이 "먼저 봉지를 열어야 해요!"라고 외치며 지시의 정확성을 깨닫습니다
- 점점 더 구체적이고 순서가 명확한 지시를 내리도록 유도합니다
처음에 아이들은 "그냥 만들면 되잖아요!"라고 합니다. 하지만 활동이 진행될수록 컴퓨터가 왜 정확한 명령어가 필요한지를 자연스럽게 이해하게 됩니다. 이 깨달음의 순간이 정말 소중합니다.
활동 2: 정렬 네트워크 게임
운동장에 테이프로 정렬 네트워크를 그려놓고, 학생들이 직접 숫자 카드를 들고 이동하면서 버블 정렬의 원리를 체험하는 활동입니다.
- 6명의 학생이 각각 랜덤 숫자 카드를 받습니다
- 네트워크의 교차점에서 두 명이 만나면 숫자를 비교합니다
- 더 작은 숫자를 가진 학생이 왼쪽으로, 큰 숫자를 가진 학생이 오른쪽으로 이동합니다
- 최종적으로 모든 학생이 작은 수에서 큰 수 순서로 정렬됩니다
이 활동을 통해 아이들은 "정렬"이라는 컴퓨터 과학의 핵심 개념을 몸으로 체험합니다. 게임 형식이라 아이들의 참여도가 매우 높고, 반복해서 하고 싶어 합니다.
순서도(Flowchart) 활용하기
순서도는 문제를 해결하는 과정을 시각적으로 표현하는 도구입니다. 초등학생들에게 순서도를 가르칠 때는 일상생활의 의사결정 과정을 주제로 삼는 것이 효과적입니다.
수업 예시: "비 오는 날 등교 준비" 순서도
아이들과 함께 "아침에 비가 올 때 어떻게 준비하는지" 순서도를 그려보았습니다. 이 과정에서 자연스럽게 조건 분기(if-else)의 개념을 배우게 됩니다.
- 시작: 아침에 일어난다
- 조건: 창문 밖을 본다 - 비가 오는가?
- 예: 우산과 장화를 준비한다
- 아니오: 운동화를 신는다
- 조건: 가방에 준비물을 다 넣었는가?
- 예: 집을 나선다
- 아니오: 빠진 준비물을 넣는다 → 다시 확인
- 끝: 학교에 도착한다
아이들이 직접 자기만의 순서도를 만들어보게 하면, 논리적으로 생각하는 습관이 길러집니다. 미술 시간과 연계하여 예쁘게 꾸미도록 하면 아이들의 참여 의욕이 더 높아집니다.
수업 설계 시 유의할 점
알고리즘 수업을 설계할 때 제가 특히 신경 쓰는 부분들을 정리해 보았습니다.
- 난이도 조절: 한 가지 활동 안에서도 기본-심화 단계를 나눠서, 모든 학생이 성취감을 느낄 수 있도록 합니다
- 협력 학습: 개인 활동보다는 모둠 활동을 중심으로 설계합니다. 서로 토론하고 의견을 조율하는 과정에서 더 깊은 학습이 일어납니다
- 실생활 연결: 추상적인 개념을 아이들의 일상과 연결하여 설명합니다. "알고리즘"이 아니라 "문제를 해결하는 순서"라고 표현합니다
- 충분한 시행착오: 처음부터 정답을 알려주지 않고, 학생들이 스스로 시행착오를 겪도록 기다려줍니다. 실패에서 배우는 경험이 중요합니다
마치며
알고리즘 수업은 코딩 교육의 첫걸음입니다. 컴퓨터 화면 앞에 앉기 전에 충분한 언플러그드 경험을 쌓아주면, 이후에 실제 프로그래밍 도구를 사용할 때 훨씬 수월하게 적응할 수 있습니다. 무엇보다 "생각하는 힘"을 길러주는 것이 진정한 코딩 교육의 목표라고 생각합니다. 동료 선생님들도 교실에서 한번 시도해 보시길 추천드립니다.
코딩 교육의 핵심은 프로그래밍 언어를 배우는 것이 아니라, 문제를 분석하고 해결하는 사고방식을 기르는 것입니다.