비대면 교육 시리즈 2
*코로나 19 범유행 상황 이후, 온라인 교육은 어떤 방향으로 나아가고 발전해야 하는지에 대한 의견을 담은 글입니다. 총 4편으로 진행 될 예정입니다.
비대면 교육 시리즈 1편에서 온라인 교육의 방향성에 대해 논했고, 이번 2편에서는 문제기반학습(Problem Based Learning, 이하 PBL) 같은 구성주의 기반 학습자 모형이 온라인 상황에서 적용될 수 있는 방안에 대해 논하게 되었습니다. 본격적으로 의견을 제시하기에 앞서, 저는 미래의 온라인 교육은 궁극적으로 ‘PBL’과 ‘플립러닝’이 주를 이루게 될 것이라 생각합니다.
따라서 본 토론에서는 PBL과 플립러닝을 온라인 상황에 적용시킬 수 있는 방안을 제시하겠습니다. 중/고등학교, 그리고 대학교에서 실현 가능한 수업 전략을 학교의 단계별로 제시하겠습니다. 적용 대상은 중/고등학교의 경우 <정보와 컴퓨터> 과목을 수강하는 가상의 한 학급, 대학교의 경우 프로그래밍 관련 교양 수업을 듣는 한 분반을 설정하겠습니다.
우선 첫번째, 중학교에선 스캐폴딩을 적극 활용한 PBL을 진행하겠습니다. 중학생의 경우엔 가지고 있는 배경 지식이 적고, 그 깊이가 얕기에 본격적인 PBL을 진행하기 어렵습니다. 또한, ‘코딩’이라는 수단이 근접발달영역 밖에 있는 경우가 많습니다. 이에 저는 ‘컵라면을 먹을 때 포장을 뜯고à분말 스프를 뿌린 후à뜨거운 물을 붓는 것’이 프로그래밍의 순차구조임을 알려줄 것입니다. 그 다음 학급을 4인 1조로 구성하여 소그룹을 만들고(Zoom의 소회의실 기능, Webex의 세부 세션 기능으로) ‘우리 주변의 순차구조 사례 찾고 발표하기’ 활동을 진행하겠습니다. 그 다음엔 ‘컵라면을 끓이는 과정’을 flow chart로 나타내는 법을 알려주고 직접 그려준 후에, 각 조별로 발표했던 사례를 flow chart로 그리고 발표하는 활동을 진행하겠습니다.
둘째, 고등학교에선 또래학습을 활용한 PBL을 진행하겠습니다. 고등학생의 경우 중학생보다 더 많은 배경지식을 가지고 있고, 추상적인 개념을 습득하고 이해하는 능력이 뛰어납니다. 하지만 그럼에도 중학생보다 조금 낫다의 정도이지, 완전한 PBL을 진행하기엔 어려움이 있습니다. 이 상황 속에서 효율성을 제고하고자 저는 ‘스켈레톤 코드’를 활용하여 PBL을 진행하겠습니다. 스켈레톤 코드란 문자 그대로 프로그램의 뼈대입니다. 만약 수업에서 반복문을 배웠다면, ‘반복문 활용하여 별로 피라미드 쌓기’ 문제를 제시하겠습니다. 이때, 교사인 저는 미리 예시 답안을 코드로 작성한 후 주요한 부분을 블라인드 처리를 하여 학생들에게 ‘빈칸 채우기’를 조별로 진행할 것을 요구합니다. 빈칸을 뚫은 코드는 하나의 스켈레톤 코드가 되는 것이고, 학생들은 조별로 이 문제를 해결하며 또래 학생을 모델 삼는 협동학습을 진행하게 될 것입니다.
마지막으로, 대학의 경우엔 ‘케이스 스터디’를 활용한 더 고차원적인 PBL 수업을 진행하겠습니다. 대학생의 경우엔 학습에 대한동기가 중/고등학생보다 높고, 정보를 활용하는 능력을 갖추고 있습니다. 이에 온라인 수업에서 제가 개념을 전달한 후, 케이스 스터디를 진행하겠습니다. 케이스 스터디란, 교사인 제가 임의의 상황을 설정하여 학생들에게 제시하면, 학생들은 그 상황을 해결하기 위해 어떤 전략을 사용하여 풀어낼지 서로 토론하여 나름의 답을 냅니다. 그 후 교사인 저는 그 해답에 대한 결과를 알려주고, 왜 이런 결과를 도출하게 되었는지, 어떻게 하면 개선할 수 있을지 피드백을 제공합니다. 이를테면 ‘1부터 10000까지 더하는 프로그램을 짜고 싶은데, 어떻게 하면 좋을까?’ 라는 문제를 제시합니다. 이 문제에 대해 A팀은 ‘for문을 활용해서 sum 변수에 1+2+3+…+10000를 하겠다’ 라는 전략을, B팀은 ‘for문을 활용해 sum 변수에+1/+1+1/+1+1+1을 하겠다(1+2+3을 모두 +1로만 구성하는 전략입니다)’라는 전략을, 마지막으로 C팀은 ‘1과 10000을 더해 100001을 만들고, 여기에 *5000을 하겠다(가우스 덧셈법)’ 라는 전략을 제시합니다. 각 팀의 전략을 들은 저는 이 전략들을 바탕으로 ‘시간 복잡도’에 대해 설명하겠습니다. 그리고 효율적인 알고리즘을 짜려면 시간 복잡도를 왜 고려해야 하는지, 어떻게 시간 복잡도를 개선한 프로그램을 짤 수 있을지 자세한 내용을 보강하겠습니다.