본문으로 건너뛰기
목록으로 돌아가기
가이드 8분 분

화면 없이 코딩 배우기: 아이를 프로그래머처럼 생각하게 만드는 7가지 활동

Clément

코딩이 컴퓨터와 상관없다면?

대부분의 부모를 놀라게 하는 한 가지 사실이 있습니다. 제가 가르친 아이들 중 가장 뛰어난 코더들은 가장 중요한 능력을 화면에서 떨어져 있을 때 배웠습니다.

이해합니다. “어린이 코딩”이라고 하면 아이가 노트북 앞에 웅크리고 앉아 어두운 창에 이상한 기호를 치는 모습이 떠오릅니다. 이미 아이의 화면 시간이 걱정되는데 — 충분히 당연한 걱정입니다 — 교육이라는 이름으로 화면 시간을 더 늘리는 것은 잘못된 방향처럼 느껴질 수 있습니다.

하지만 수년간 아이들에게 코딩을 가르치면서 깨달은 것이 있습니다. 프로그래밍의 본질은 사실 컴퓨터가 아닙니다. 사고하는 방식입니다. 큰 문제를 작은 단계로 나누는 것. 정확한 지시를 내리는 것. 무언가가 작동하는지 확인하고, 안 되면 고치는 것. 규칙성을 발견하고 활용하는 것.

이것은 아이가 식탁에서, 거실에서, 뒷마당에서 연습할 수 있는 능력입니다. 컵, 카드, 종이, 그리고 자기 발 두 개만 있으면 됩니다. 기기가 필요 없습니다. 부모에게 전문 지식이 필요한 것도 아닙니다.

아래 소개하는 일곱 가지 활동은 제가 수업에서 사용하고 가정에 추천해온 것들입니다. 게임처럼 느껴지도록 설계되어 있습니다 — 실제로 게임이기도 하니까요. 프로그래밍의 핵심 개념까지 가르쳐준다는 것은 거의 부수적인 효과입니다.

1. 로봇 샌드위치

대상 연령: 4세 이상 배우는 것: 정확한 지시, 순서 정하기 준비물: 식빵, 땅콩버터(또는 아무 스프레드), 버터 나이프, 접시

아이에게 부모가 로봇이라고 말해주세요. 로봇은 아이가 말하는 것만 정확히 할 수 있습니다 — 더도 덜도 아닙니다. 아이의 임무는 땅콩버터 샌드위치를 만드는 방법을 지시하는 것입니다.

그런 다음 지시를 극도로 문자 그대로 따르세요.

“빵에 땅콩버터를 올려.” 뚜껑이 닫힌 병을 빵 봉지 위에 올립니다. “아니, 먼저 열어!” 빵 봉지를 엽니다. “아니, 땅콩버터를!” 이제야 진전이 있습니다.

이 활동은 언제나 폭소를 자아냅니다. 네 살 아이들은 부모가 “빵을 위에 올려”라는 말에 빵을 머리 위에 올려놓으면 웃음을 멈추지 못합니다. 좀 더 큰 아이들은 세상에서 가장 둔한 로봇조차 오해할 수 없을 만큼 정확한 지시를 쓰려고 경쟁합니다.

아이가 배우고 있는 것은 프로그래밍에서 가장 기본적인 개념입니다. 컴퓨터는 우리가 ‘의도한 것’이 아니라 ‘쓴 대로’ 정확히 실행합니다. 모든 전문 프로그래머는 이 “로봇 샌드위치 순간”을 경험합니다 — 코드는 쓴 대로 정확히 실행되었는데, 쓴 것이 의도한 것과 달랐던 순간 말입니다.

난이도 높이기: 8세 이상 아이에게는 지시를 먼저 종이에 쓰게 하고, 그 종이를 다른 사람에게 건네 그대로 따르게 하세요. 말로 설명하거나 보충할 수 없습니다 — 쓰인 지시만으로 해내야 합니다. 이것은 본질적으로 코드를 작성하는 것과 같습니다. 자기가 없는 자리에서 실행될 지시를 남기는 것이니까요.

2. 보물찾기 알고리즘

대상 연령: 5세 이상 배우는 것: 알고리즘, 디버깅 준비물: 숨길 작은 물건, 종이와 연필

장난감이나 작은 물건을 집 안 어딘가에 숨깁니다. 그런 다음 아이에게 특정 장소 — 예를 들어 현관문 — 에서 시작해서 다른 사람이 그것을 찾을 수 있도록 단계별 지시를 쓰게 합니다.

핵심 규칙은, 각 단계가 하나의 단순한 동작이어야 한다는 것입니다. “부엌으로 가”가 아니라 “앞으로 10걸음 걷기. 왼쪽으로 돌기. 앞으로 5걸음 걷기. 파란색 그릇 아래 보기.”

아이가 알고리즘을 다 쓰면, 형제나 부모, 심지어 인형이 그 지시를 “실행”하게 합니다. 지시가 엉뚱한 곳으로 이끈다면 — 처음에는 반드시 그렇게 됩니다 — 아이가 어디가 잘못되었는지 찾아서 고쳐야 합니다.

오류를 찾아 고치는 이 과정에는 프로그래밍 세계에서 쓰는 이름이 있습니다. 바로 디버깅입니다. 프로그래머가 기르는 능력 중 가장 중요한 것이라고 해도 과언이 아닙니다. 작동하지 않는 것을 보고, 작동하지 않는지 파악하고, 처음부터 다시 시작하지 않고도 고치는 능력 말입니다.

난이도 높이기: 좀 더 큰 아이에게는 제약 조건을 추가합니다. “다섯 종류의 지시만 쓸 수 있어: 앞으로 X걸음 걷기, 왼쪽 돌기, 오른쪽 돌기, 집어 올리기, 아래 들여다보기.” 사용할 수 있는 지시를 제한하면 적은 수의 표현으로 복잡한 동작을 나타내는 방법을 더 깊이 고민하게 됩니다 — 이것이 바로 프로그래밍 언어가 하는 일입니다.

3. 컵 쌓기 코드

대상 연령: 5세 이상 배우는 것: 순서 정하기, 기호, 추상화 준비물: 플라스틱 또는 종이컵 6-10개, 종이, 펜

이 활동은 두 명이 함께 하면 아주 좋습니다. 먼저 컵으로 간단한 구조물을 쌓습니다 — 피라미드, 탑, 벽 등. 그런 다음 아이와 함께 기본 동작을 나타내는 기호를 만듭니다. 오른쪽 화살표는 “컵을 오른쪽으로 한 칸 이동,” 위 화살표는 “위에 올리기,” 아래 화살표는 “새 줄 시작.”

이제 도전입니다. 그 기호만 사용해서 다른 사람이 원래 구조물을 보지 않고도 따라 만들 수 있는 지시를 작성합니다.

컵을 무너뜨리고, 그 “코드”를 다른 가족에게 건네고, 다시 만드는 것을 지켜봅니다. 기호가 잘 전달되었나요? 구조물이 똑같이 나왔나요? 아니라면, 어떤 지시가 모호했나요?

아이가 자기도 모르게 하고 있는 것은 간단한 프로그래밍 언어를 만드는 일입니다. 기호의 집합을 정하고, 각 기호에 의미를 부여하고, 그 기호들을 조합하여 프로그램을 작성합니다. 이것이 바로 추상화 — 컴퓨터 과학에서 가장 강력한 개념 중 하나입니다.

난이도 높이기: 9세 이상 아이에게는 원래 구조물을 아무에게도 보여주지 않은 채 코드를 쓰게 합니다. 읽는 사람의 입장에서 쌓는 과정을 상상해야 합니다. 이것은 좋은 코드와 나쁜 코드를 가르는 바로 그 공감 능력입니다.

4. 만약-그러면 사이먼 세즈

대상 연령: 6세 이상 배우는 것: 조건문 준비물: 없음 — 몸과 목소리만 있으면 됩니다

프로그래밍 요소를 가미한 사이먼 세즈(Simon Says)입니다. 한 번에 하나의 명령 대신, 아이에게 기억해야 할 규칙 세트를 줍니다:

“만약 내가 손뼉을 치면, 점프해.” “만약 내가 손가락을 튕기면, 제자리에서 돌아.” “만약 내가 발을 구르면, 앉아.”

두 가지 규칙부터 시작해서 익숙해지면 추가합니다. “아니면(ELSE)“을 도입하면 난이도가 크게 올라갑니다:

“만약 내가 손뼉을 치면, 점프해. 아니면, 멈춰.”

이제 아이가 듣는 모든 신호에 판단이 필요합니다. 손뼉? 점프. 손뼉이 아닌 것? 멈추기. 아이가 머릿속에서 조건 논리를 실행하고 있는 것입니다 — 세상의 모든 프로그래밍 언어가 사용하는 바로 그 if/else 구조입니다.

여러 조건을 쌓아놓고 빠르게 신호를 보내면 게임이 가장 웃기게 무너집니다. 아이들은 점프하면서 돌면서 멈추면서 한꺼번에 웃습니다. 솔직히 말하면, 실제 코드에서 if문을 너무 많이 중첩했을 때도 비슷한 일이 일어납니다.

난이도 높이기: 8세 이상 아이에게는 규칙을 직접 만들고 “컴퓨터” 역할을 맡기고 부모가 따르게 합니다. 또는 AND 조건을 추가합니다: “만약 내가 손뼉을 치면서 동시에 발을 구르면, 점프하면서 돌아.” 복합 조건은 까다롭고, 이를 조합하는 방법을 찾는 것은 실제 프로그래밍 기술입니다.

5. 루프 댄스

대상 연령: 6세 이상 배우는 것: 반복문, 규칙성, 효율성 준비물: 없음 (선택: 안무를 적을 종이)

아이에게 짧은 춤을 만들게 합니다 — 세네 가지 동작이면 됩니다. 왼쪽으로 걸어, 손뼉, 한 바퀴 돌아, 점프. 이 순서를 네 번 반복합니다.

그런 다음 물어보세요: “16개 동작을 모두 적는 대신, 더 짧게 적는 방법이 있을까?” 반복문(루프) 개념으로 안내합니다: 4번 반복: 왼쪽 걸어, 손뼉, 돌기, 점프.

그것입니다. 이것이 for 루프입니다. 아이가 방금 하나를 발명한 것입니다.

이제 한 단계 더 나아갑니다. “마지막 반복은 다르게 하면? 네 번째에는 점프 대신 인사로 끝나면?” 축하합니다 — 방금 조건부 탈출이 있는 루프 개념을 소개한 것입니다. 어렵게 들리지만, 거실에서 춤추는 여섯 살 아이는 바로 이해합니다. 규칙성과 그 규칙성이 깨지는 지점을 몸으로 느낄 수 있기 때문입니다.

음악을 활용하면 더욱 효과적입니다. 노래를 틀고 박자에 맞춰 안무를 짜 보세요. 루프는 음악 곳곳에 있습니다 — 절, 후렴, 브릿지. 춤을 통해 루프를 배운 아이는 코드에 직접 적용할 수 있는 직관적인 이해를 갖게 됩니다.

난이도 높이기: 10세 이상 아이에게는 중첩 루프를 소개합니다. “3번 반복: (손뼉 두 번, 그다음 돌기). 그리고 점프.” 루프 안의 루프입니다. 기록하려면 종이가 필요할 것입니다 — 프로그래머들이 코딩 전에 메모를 하는 이유가 바로 이것입니다.

6. 버그 찾기

대상 연령: 7세 이상 배우는 것: 디버깅, 꼼꼼히 읽기, 세부 사항에 대한 주의력 준비물: 종이와 연필

단순하고 익숙한 과제 — 양치하기, 이불 정리하기, 아침에 옷 입기 — 에 대한 지시를 적습니다. 단, 의도적으로 실수를 넣습니다. 두 단계의 순서를 바꾸거나, 하나를 빠뜨리거나, 말이 안 되는 것을 추가합니다.

예를 들어:

  1. 칫솔을 집는다.
  2. 칫솔을 입에 넣는다.
  3. 칫솔에 치약을 짠다.
  4. 2분 동안 닦는다.
  5. 달로 날아간다.
  6. 물로 입을 헹군다.

아이에게 건네주고 말합니다: “이 코드에 버그가 세 개 있어. 찾을 수 있겠어?” (2번과 3번의 순서가 바뀌었고, 5번은 말이 안 되고, 사실 칫솔에 먼저 물을 적셔야 합니다.)

이것은 전문 프로그래머 세계에서 코드 리뷰가 실제로 어떤 모습인지와 정확히 같습니다. 다른 사람의 지시를 읽고, 순서가 맞지 않는 것을 발견하고, 있으면 안 되는 것을 찾고, 빠진 것을 확인하는 것입니다. 단순히 오류를 잡는 기술이 아닙니다 — 꼼꼼히 읽고, 각 단계가 맥락상 맞는지 비판적으로 생각하는 능력입니다.

난이도 높이기: 10세 이상 아이에게는 덜 익숙한 것에 대한 지시를 쓰세요 — 만들어본 적 없는 요리법, 가본 적 없는 장소로의 길 안내. 이제는 사전 지식에 의존할 수 없고, 각 단계의 논리를 그 자체로 따져봐야 합니다. 이것이 실제 디버깅에 더 가깝습니다. 자기가 쓰지 않은 코드를, 완전히 이해하지 못하는 시스템에서 읽는 것이니까요.

7. 분류해 보기

대상 연령: 8세 이상 배우는 것: 알고리즘, 효율성, 비교 준비물: 카드 한 벌 (또는 숫자가 적힌 물건 아무거나)

카드를 섞어서 10-15장을 앞면이 보이게 펼칩니다. 아이에게 작은 수부터 큰 수 순서로 정렬하라고 합니다.

간단하죠. 하지만 그 다음 물어봅니다: “어떻게 했어? 방법이 뭐였어?”

대부분의 아이들은 이렇게 설명합니다: “가장 작은 카드를 찾아서 먼저 놓고, 그다음 작은 걸 찾아서…” 이것이 선택 정렬(Selection Sort)입니다 — 실제 이름을 가진 실제 알고리즘입니다.

이번에는 도전합니다: “다른 방법은 없을까?” 이웃한 카드 두 장을 비교해서 순서가 틀리면 바꾸는 방법을 시도할 수 있습니다. 이것이 버블 정렬(Bubble Sort)입니다. 또는 카드를 작은 그룹으로 나누고, 각 그룹을 정렬한 뒤 합치는 방법도 있습니다. 이것은 병합 정렬(Merge Sort)에 가깝습니다.

깨달음은, 올바른 방법이 여러 가지이지만 어떤 것은 다른 것보다 빠르다는 것입니다. 각 방법에 비교 횟수가 몇 번인지 세어보게 하세요. 카드 10장에서도 차이가 느껴집니다. 100만 장이라면 어떨지 상상해 보세요.

이것이 알고리즘 설계입니다 — 문제를 올바르게 풀면서 효율까지 생각하는 것. 컴퓨터 과학에서 가장 중요한 주제 중 하나인데, 아이가 바닥에 펼쳐놓은 카드로 방금 그것을 탐구한 것입니다.

난이도 높이기: 12세 이상 아이에게는 카드 수를 30-40장으로 늘리고, 각 방법의 시간을 초시계로 재세요. 그런 다음 결과를 그래프로 그립니다. 아이가 방금 첫 번째 알고리즘 성능 측정을 수행한 것입니다 — 대학교 컴퓨터 과학 과목에서 하는 것과 같은 일입니다.

일곱 가지 활동을 관통하는 한 가지

일곱 가지 활동에서 공통점을 발견하셨을 수 있습니다. 부모가 프로그래밍에 대해 아무것도 몰라도 된다는 것입니다. Python이나 JavaScript를 이해할 필요도, 변수가 뭔지 알 필요도 없습니다. 함께 놀 의지만 있으면 됩니다.

그 이유는 코딩이 본질적으로 전문적인 기술 지식이 아니기 때문입니다. 사고를 정리하는 방식입니다. 큰 문제를 작은 것으로 나누는 것입니다. 상식이 전혀 없는 누군가(또는 무언가)도 따를 수 있을 만큼 명확하게 지시하는 것입니다. 규칙성을 알아채고 활용하는 것입니다. 고장 난 것을 찾아 고치는 것입니다.

이것은 기술 옷을 입은 생활 능력입니다. 아이가 이런 능력을 일찍 기를수록 — 놀이를 통해, 웃음을 통해, 부모가 로봇이 되어 빵을 머리 위에 올려놓는 기막힌 광경을 통해 — 실제 프로그래밍을 할 준비가 되었을 때 훨씬 자연스럽게 받아들이게 됩니다.

그러니 다음에 다른 집 아이가 코딩을 배우고 있다는 말을 듣고, 화면 시간에 대한 익숙한 걱정이 올라오면 기억하세요. 가장 훌륭한 코딩은 화면 없이 일어나기도 합니다.


C.Lab Academy에서는 화면 기반 코딩과 직접 만드는 창작 프로젝트를 조합합니다 — 아이들이 모든 도구를 활용할 때 최고의 학습이 이루어지니까요. 서울에서 3세부터 16세까지, 영어와 프랑스어로 진행됩니다. 무료 체험 수업을 예약하세요. 프로그램 살펴보기.

창작을 시작할 준비가 되셨나요?

3~16세 아이들을 위한 코딩 및 디지털 아트 프로그램을 확인해 보세요.

프로그램 살펴보기