2 년 전, 코딩교실을 시작할 즈음에 도대체 얼마나 오래 코딩을 배워야 하나요?라는 글을 올린 적이 있습니다. 오늘은 그 두번째 글로서, 그동안의 경험을 바탕으로 딱 두 개의 차트를 작성하여 보여 드리고자 합니다.

차트라는 것이 그로부터 통찰을 얼마나 이끌어 낼 수 있느냐가 관건인데, 이를 위해서는 데이터가 수집되는 과정에서 전제된 다양한 가정을 명확히 이해해야 하고, 해당 데이터 값에 영향을 미치는 주요 변수를 망라해야 합니다. 현재 학생들의 성취도에 관련해서는 그에 영향을 미치는 변수가 꽤나 많아서, 이 자리에서 논의하다가는 자칫 오역의 소지가 많아서 다루지 않기로 했습니다. 당분간 학생의 성취도는 제가 평소에 보내드리는 수업일지를 통해 가늠해 주시기 바랍니다. 나중에라도 성취도를 오해의 소지없이 정량화할 수 있는 데이터가 얻어진다면 세번째 포스트를 올리도록 하겠습니다.

제가 2 년 전 말씀드렸다시피 정모 아빠의 코딩 교실에는 딱부러진 일정이 없는데, 그 이유를 다시 적어보면 아래와 같습니다.

  1. 다른 수업과 달리 준비한 내용을 무조건 주입시킬 수 없다. - 학생들이 따라 오든 말든 무조건 선생님이 할 말을 하고 마치는 방식은 코딩 수업에는 통하지 않습니다. 코딩은 무언가 동작하는 코드를 성공적으로 만듦으로써 완료되는 것인데, 따라 오지 못하는 학생은 동작하는 코드를 완성할 수 없고, 그럴 경우 학생이 이해하여 완성할 때까지 지도가 필요합니다. 또한 무조건적인 주입은 제가 코딩교실을 시작한 동기와 목표에 부합하지도 않습니다.
  2. 학생들이 정말로 컴퓨터 과학의 이모저모에 대해 호기심이 많다 - 수업을 진행하다 보면 특정 주제에 대해 학생들의 끊임없는 질문이 이어지는 경우가 많습니다. 컴퓨터는 정말 멋진 물건이라는 것과 코딩을 통해 무언가 기가 막힌 일을 할 수 있다는 것을 학생들이 본능적으로 아는 것 같습니다. 따라서 질문이 많아질 수 밖에 없는가 봅니다.
  3. 수업 중에 코딩만 가르치지 않는다. - 홈페이지에 밝혔듯이 코딩 기능을 가르치기 위한 수업이 아니기 때문입니다. 컴퓨터 과학, 수학, 문제 해결 등등을 코딩을 도구 삼아 가르치는 것 뿐입니다. 그래서 수업의 진행도 코딩을 하는 것, 컴퓨터 과학의 다양한 주제를 배우는 것, 컴퓨터 과학과 수학이 우리 생활에 미치는 영향을 생각하고 토론하는 것 등이 순환식으로 혼재되어 이루어집니다. 코딩 교실의 내용이 특정한 책과 언어를 끝내는 것이라고 오해하시는 학부모님들의 생각과는 많이 다른 부분입니다.

글의 목적

오늘 보여드릴 내용은 이렇게 딱부러진 일정 없이 수업을 진행해 오면서 소위 수업 진도가 어디까지 진행되었는가에 대한 것으로 다음 경우에 해당하시는 학부모님들께 조금이나마 가이드라인을 드리고자 하는 용도입니다.

  1. 다른 공부가 바빠서 코딩 공부를 어느 정도에서 마무리할 계획이 있으신 경우
  2. 계속 코딩 공부를 시키시기는 할텐데 도대체 지금 어느 정도 배운 것인지 궁금하신 경우
  3. 코딩 공부를 시적한지 얼마 안 되었기에 앞으로의 갈 길이 궁금하신 경우

유의 사항

  1. 지금부터 보실 설명은 대부분 일반론이라는 것에 유의해 주시기 바랍니다.
  2. 학생 중에 코딩에 소질이 많고 집에서도 스스로 코딩 연습을 꽤 하는 학생들도 있는데 이러한 학생들의 경우 아래의 일반론이 적용되지 않습니다.
  3. 주변지식을 많이 알고 있어서 하나를 가르치면 둘을 아닌 고학년의 경우와 그 주변지식도 함께 가르쳐야 하는 저학년의 경우는 분리해서 생각해야 합니다. 오늘은 저학년과 고학년을 분리해서 설명하지는 않을텐데 아마 다른 글에서 이 부분을 다룰 기회가 있을 것 같습니다.
  4. 모든 데이터는 현재 수업을 듣는 학생 중, 50 회 이상의 수업을 들은 학생만을 대상으로 추출된 값입니다. 그보다 적은 수업 횟수의 학생 데이터로는 무언가를 말하기가 이릅니다.
  5. 각 차트의 X 축은 학생 번호를 나타냅니다.

수업기간, 실수업 횟수 및 수업

학생들이 얼마의 기간 동안 얼마나 수업을 들었는지에 대한 차트입니다.

이 차트는 다른 차트들을 해석할 때 늘 염두해 두어야 하는데 그 이유는 다음과 같습니다.

  1. 코딩교실에서 배운 내용을 집에서 활용해 보고 스스로 여러가지 코딩을 시도해 보지 않는 학생의 경우, 코딩교실에서 배우고 실습하는 내용이 공부의 전부이기에 코딩교실에서 투입된 절대적 공부시간을 파악하는 것이 중요하다.
  2. 코딩교실에서 같은 공부시간을 투입했더라도, 얼마의 기간 동안에 투입된 시간인지도 의미가 있다. 예를 들어 같은 분량의 공부를 밀도 있게 하는 경우와 띄엄띄엄 가끔씩 하는 경우에는 공부한 내용을 기억하는 데에 차이가 있을 수 밖에 없다. (이 역시 집에서 스스로 코딩을 해보는 학생은 예외)

위에서 보듯이 연간 수업률은 최고 77%에서 최저 52%에 분포되어 있습니다. 77%는 학기 중의 단기 방학 때 다른 곳에 가지 않고 거의 제주도에만 있는 우리 불쌍한 정모의 수업률입니다.^^ 단기 방학 중 휴강을 포함한 일반적인 수업률은 67% 내외인 것 같습니다. 50%대는 개인적인 결석이 많은 경우와 일요일 수업의 경우입니다. 일주일 단기 방학 때, 주중 수업의 경우 1 회만 휴강하면 되지만 일요일 수업은 보통 앞뒤로 2 회 휴강을 하기 때문에 수업률이 많이 떨어집니다.

수업진도

여기에서 말하는 수업진도의 정의는 ‘일반적으로 말하는 진도’, 즉 동일한 공부량을 기준으로 한 진도가 아닙니다. 77%의 수업률을 가진 학생에게 가르치는 분량을 52%의 수업률을 가진 학생에게 가르칠 경우, ‘일반적으로 말하는 진도’가 너무 늘어져서 주어진 시간 안에서 학생에게 다양한 수준의 코딩 경험을 시켜줄 수가 없습니다. 그래서 제가 말하는 수업진도는 수업률을 고려한 진도를 의미합니다. 예를 들어 20 가지의 주제가 준비되어 있다고 가정할 때, 수업률이 높은 학생은 20 개의 주제를 모두 다루고 나서 진도가 끝났다고 선언하지만 수업률이 낮은 학생은 이 중 일부 주제를 건너 뛰고서 진도가 끝났다고 선언한다는 뜻입니다. 이와 같이 수업률이 떨어지게 되면 주제의 다양성 면에서 손실을 보게 되고 망각곡선 효과에 의해 학습효과도 감소될 수 있으므로 가급적 결석을 하지 않는 것이 좋겠습니다.

제가 생각하고 있는 수업과정은 스크래치 -> 고급프로그래밍언어(JS or Python) 기본 -> 고급프로그래밍언어(JS or Python) 응용의 순서입니다. 각 학생마다 3 개의 막대가 있는 이유입니다. 아직 고급프로그래밍언어 응용에 진입한 학생은 없기에 세번째 막대는 모두 0의 값을 가지고 있습니다. 현재 고급프로그래밍언어 기본의 진도가 가장 많이 나간 학생들은 진도 70의 NLCS 8,9 학년 학생들입니다. 이 학생들은 조만간 대망의 고급프로그래밍언어 응응에 들어갈 것 같습니다.

스크래치 진도 90 이상의 학생들은 스크래치에 대해서는 배울 것은 다 배웠다는, 정확히 말하면 스크래치에 대해 제가 가르칠 것은 다 가르쳤다는 것을 의미합니다. 이제부터는 학생의 몫인데 수업을 진행하면서 학생이 잊은 부분이 있거나 심화학습에 도움이 되는 경우에는 스크래치를 더 가르치는 경우가 있을 것입니다.

JS or Python 기본진도 50의 그룹은 자바스크립트를 25 회 정도 배운 그룹입니다.

JS or Python 기본진도 10의 그룹은 얼마전 자바스크립트를 시작한 금요일 클래스 그룹입니다.

JS or Python 기본진도 1의 그룹은 이제 막 자바스크립트를 들어간 G2 학생들 그룹입니다. 사실 이 그룹은 좀 실험적인 그룹인데, 어린 나이에도 불구하고 스크래치를 꽤 오래 배웠고, 이제부터는 결국 학생의 몫이기에 이보다 더 오래 스크래치를 붙잡고 있는 것은 실익이 적다고 판단, 고급프로그래밍언어를 이른 나이에 시도해보는 그룹입니다. 아직은 어린 학생들이기에 다른 클래스의 학생들보다는 어려움이 있을 것으로 예상되지만 그동안 스크래치에서 배운 코딩과 컴퓨터과학 이론을 잘 기억해낸다면 재미있는 결과가 나올 수도 있는 그룹입니다.

맺음말

이상으로 지금까지 학생들을 가르친 경험을 바탕으로 두 가지 차트를 살펴 보았습니다. 별 것 아닐 수도 있는 차트이지만 학부모님들의 궁금증을 조금이라도 풀어 드리고 앞으로 있을 더 다양한 분석을 위한 작은 시작이라고 생각해 주시면 고맙겠습니다.

감사합니다.