콘텐츠로 이동

학생 스스로 프로그래밍 기초를 학습할 기회를 제공하는 산호세 주립대학교

가상 머신의 용량 제한 문제에 직면한 SJSU의 컴퓨터 공학과에서는 컴퓨터 공학과 학생들이 제한 없이 프로그래밍 연습을 할 수 있도록 리소스를 확장할 방법이 필요했습니다.

컴퓨터 공학(CS) 기초 과정에서 프로그램을 배우는 학생들은 기본 개념을 적용하는 것을 어려워 합니다. SJSU 컴퓨터 공학과의 케이 호츠만 교수는 학생들이 스스로 프로그래밍을 연습하여 프로그래밍 기술을 보다 빨리 향상시키도록 돕고 싶었습니다. 하지만 코딩 문제는 해마다 재사용되기 때문에 학생들이 온라인에서 솔루션을 쉽게 찾을 수 있었습니다. 호츠만 교수는 학생들이 답을 쉽게 찾아볼 수 없도록 하면서, 더 많은 연습을 시킬 수 있는 방법을 모색하게 되었습니다.

"대다수의 학생들이 과제를 하는 일요일 밤에는, 20대의 가상 머신을 가동함으로써 워크로드 변경에 따라 머신이 자동으로 작동되도록 할 수 있습니다."

Cay Horstmann, 컴퓨터 공학 교수, 산호세 주립대학교

모든 학생이 직접 실습을 통해 학습할 수 있도록 지원

생물학, 법률 같은 컴퓨터 공학 이외 분야를 전공하는 학생들이 자신의 연구에 도움이 되는 수단으로 또는 생산성을 높이기 위해 프로그래밍에 관심을 가짐에 따라, 학생이 독학으로 공부할 수 있는 시스템 구축이 중요해지고 있습니다. 이제 프로그래밍은 개발자를 선망하는 이들만을 위한 것이 아닙니다.

호츠만 교수는 “CS 학과는 프로그래밍 기술에 대한 이러한 변화에 대비해야 합니다. 다른 전공의 학생들도 자신의 분야에서의 더 효율적인 발전을 위해 컴퓨터 공학 수업을 수강하고 있습니다. CS 강사가 부족하기 때문에 학생들은 자율 학습을 통해 학습할 수 있어야 합니다."라고 말합니다.

SIGCSE(Special Interest Group on Computer Science Education)를 통해 Google Cloud 교육 지원 프로그램을 알게 된 케이 교수는 Google Cloud 크레딧을 받기 위해 연구 지원금을 신청해 모든 Google Cloud 제품에 사용할 수 있는 크레딧을 받았습니다. 케이 교수는 Google Cloud의 도구를 사용하여, 학생들이 수백 개의 예제를 통해 프로그래밍을 연습할 수 있는 오토그레이더 CodeCheck를 개발했습니다.

CodeCheck는 학생에게 여러 가지 언어로 프로그래밍하는 방법을 가르칠 수 있도록 설계된 웹 기반 프로그램입니다. 교수는 온라인에서는 답을 찾을 수 없고 학생이 자신만의 솔루션을 만들어야 하도록 프로그래밍 문제를 맞춤화하여 출제할 수 있습니다. 컴퓨터 공학과 서버가 이미 모두 완전 가동 중이었기 때문에 케이 교수는 무제한 컴퓨팅 능력을 갖춘 가상 머신인 Google Compute Engine을 사용하여 CodeCheck를 개발했습니다. 케이 교수는 모니터링, 로깅 및 진단 용도로 Stackdriver를 선택하고, 확장성 및 편의를 위해서는 Cloud SQL을 선택했습니다.

호츠만 교수는 “대다수의 학생들이 과제를 하는 일요일 밤에는, 20대의 가상 머신을 가동함으로써 워크로드 변경에 따라 머신이 자동으로 작동되도록 할 수 있습니다."라고 말합니다.

이제 SJSU의 컴퓨터 공학과 교수들은 클라우드 컴퓨팅 도구를 사용하여 학교 서버의 용량에 대한 걱정 없이 프로그래밍을 가르칠 수 있습니다. 이를 통해 컴퓨터 공학 외 다른 학위 과정에 있는 학생들을 포함해 더 많은 학생들을 무리 없이 수용할 수 있게 됩니다. 학생들은 원격 시스템 관리, 워크로드 확장, 로깅, 자동 배포에 대해 학습합니다.

학생이 스스로 학습하도록 장려

CodeCheck에서는 학생에게 코딩에 대한 실시간 피드백을 제공하므로, 학생이 솔루션의 합격 여부를 즉시 알 수 있습니다. 또한, 학생에게 잘못한 부분을 알려주지 않으므로 학생 스스로 찾아야 합니다. 과거에는 학생들이 코딩 작업을 제출한 후 몇 주가 지나야 피드백을 받을 수 있었기 때문에, 피드백을 확인할 때쯤이면 어떤 풀이 과정을 통해 답을 구했었는지가 기억나지 않는 경우가 많았습니다.

설문조사 결과에 따르면 학생들은 온라인 실습 자료가 유용하다고 생각합니다. 실수를 하는 경우에도 당황하지 않으며 일정 시간 안에 끝내야 한다는 압박감을 느끼지 않습니다.

호츠만 교수에 따르면, CodeCheck의 사용은 학생들의 학업 성취 및 시험 점수 향상에도 도움을 줍니다. 두 집단으로 나눈 비전공자 대상 Java 강의에서 CodeCheck를 사용한 집단은 대조군에 비해 50% 높은 성과를 거두었습니다. 프로그래밍 언어 수업에서는 CodeCheck를 사용하는 집단이 대조군에 비해 Scheme 프로그래밍 문제에서 20% 높은 점수를 얻었습니다. 연습 문제에서 다루지 않은 한 문제의 경우 두 집단의 점수가 동일했습니다. 모든 학생이 연습 문제를 풀어야 하는 편입생 대상 C++ 수업에서는, 강의 종료 시 문제당 평균 풀이 시도 횟수가 강의 시작 시에 비해 3분의 1이 감소했으며, 문제를 완료하는 데 걸리는 평균 시간은 절반으로 단축되었습니다.

모두를 대상으로 하는 프로그래밍 교육

많이 학생들이 이제 기본적으로 클라우드를 사용하며, 컴퓨터 공학 및 기타 전공의 학생들을 지원하기 위해서는 교육 도구도 진화해야 합니다. 예를 들어 학생이 기초적인 그림 기반 문제 해결에서 루프를 생성하는 단계로 발전하는 경우, 모든 입력에 대해 루프가 작동해야 하므로 개념에 있어서도 상당한 격차가 있기 마련입니다. 학생 대부분이 개념은 이해하지만 이를 적용하는 것은 매우 어렵습니다. 패턴을 배우고 나면 개념을 코드에 적용하는 방법을 이해하기 시작합니다.

처음에 학생들은 오토그레이더에서 코드 5줄로 시작할 수 있습니다. 학생들의 수업 과제에 코드가 200줄씩 필요한데, 5줄이라 하면 터무니없이 적어 보일 수 있습니다. 하지만 목표는 학생들이 조금씩 배우고, 배운 것을 점차 더 복잡한 과제에 적용하도록 하는 것입니다.

호츠만 교수는 “프로그래밍은 사업가, 과학자, 변호사, 언론인 등 데이터를 활용하는 모든 사용자에게 필요한 21세기의 기술입니다. 강의실, 실험실, 숙제로 구성된 기존 교수학습 모델로 CS 전공 학생들을 가르치는 데 실패율이 높다면 비전공 학생을 가르치는 데도 실패할 확률이 높습니다. 그래서 저는 오랫 동안 테스트한 ‘반복하여 가르치기’ 접근방식을 사용하는 것입니다.”라고 말합니다.

"프로그래밍은 사업가, 과학자, 법조인, 언론인 등 데이터를 활용하는 모든 사용자에게 필요한 21세기의 기술입니다."

Cay Horstmann, 컴퓨터 공학 교수, 산호세 주립대학교

완벽한 백엔드 작업으로 오토그레이더 실행

Stackdriver에서 제공하는 강력한 모니터링 및 진단 기능을 이용해 케이 교수는 문제를 해결하고 학생들이 오토그레이더를 올바르게 사용하도록 할 수 있습니다. 예를 들어 학생이 다른 프로그램을 지우거나 컴퓨터를 종료하는 프로그램을 실행하려고 하면 장착된 오토그레이더가 해당 명령어를 차단합니다. 이전에는 문제의 원인을 발견하기 위해 프로그램을 디버깅하는 데 몇 시간이 걸리기도 했습니다.

CodeCheck의 주요 목표는 프로그래밍을 연습하고자 하는 학생들이 겪는 불편함을 줄이는 것입니다. 학생들은 오토그레이더를 사용하기 위해 등록하거나 로그인할 필요가 없습니다. 교수는 CodeCheck를 학습 관리 시스템(LMS)에 통합할 수 있고, 학생들은 LMS에서 직접 작업하며, 오토그레이더에서 학생들에게 점수를 알려줍니다. Cloud SQL은 학생이 과제를 수행한 기간을 추적하고 이를 자동으로 백업합니다. 이 통합으로 인해 학생은 'Record my score(내 점수 표시하기)'를 클릭하여 과제를 제출할 수 있으므로, 교수와 학생 모두에게 프로그램 제출 과정이 간편해 집니다.

호츠만 교수는 “프로그래밍은 이제 개발자를 위한 기술이 아니라 미래를 준비하기 위한 기술이므로, 컴퓨터 공학과는 학생들이 자기 주도적으로 학습할 수 있도록 변화해야 합니다. CodeCheck를 사용하면 학생들이 교실 밖에서도 도전을 계속해 학습이 이어질 수 있습니다."라고 말합니다.

여기에서 가입하고 최신 정보, 유용한 정보, 리소스 등을 받아보세요.