프로그래밍(알고리즘) 자동 평가 시스템은 주어진 문제에 대해 사용자가 제출한 소스코드의 정확성과 알고리즘의 시간/공간 효율성 등에 대한 즉각적인 평가 결과와 교정적인 피드백을 제공한다. 또한, 이러한 실시간 평가 결과를 통해 제공되는 문제별 채점 현황(제출 횟수, 통과 횟수), 랭킹 등의 경쟁적인 요소는 사용자에게 프로그래밍 학습에 대한 동기와 흥미를 제공하는 장점이 있다. 본 연구에서는 프로그래밍(알고리즘) 자동 평가 시스템의 이론적 배경과 선행 연구에 대한 고찰, 국 내외 자동 평가 시스템의 동향에 대해 알아보고, 고등학교와 대학의 학부 과정에서 활용할 수 있는 방안을 제시하였다. 즉, 2015 개정 교육과정의 고등학교 과학 계열 전문 교과인 '정보 과학' 과목에서 자동 평가 시스템의 활용을 제시하고 있으며, 이에 따라 C언어의 문법에 관한 기초적인 내용에서부터 주어진 문제의 알고리즘 설계와 프로그래밍 단계까지 폭넓게 적용할 수 있다. 또한, 대학의 자료구조와 알고리즘 강좌에서 동일 문제에 대한 각 알고리즘의 실제 소요 시간을 직접 비교해 봄으로써 알고리즘의 성능 차이를 확인할 수 있다.
프로그래밍(알고리즘) 자동 평가 시스템은 주어진 문제에 대해 사용자가 제출한 소스코드의 정확성과 알고리즘의 시간/공간 효율성 등에 대한 즉각적인 평가 결과와 교정적인 피드백을 제공한다. 또한, 이러한 실시간 평가 결과를 통해 제공되는 문제별 채점 현황(제출 횟수, 통과 횟수), 랭킹 등의 경쟁적인 요소는 사용자에게 프로그래밍 학습에 대한 동기와 흥미를 제공하는 장점이 있다. 본 연구에서는 프로그래밍(알고리즘) 자동 평가 시스템의 이론적 배경과 선행 연구에 대한 고찰, 국 내외 자동 평가 시스템의 동향에 대해 알아보고, 고등학교와 대학의 학부 과정에서 활용할 수 있는 방안을 제시하였다. 즉, 2015 개정 교육과정의 고등학교 과학 계열 전문 교과인 '정보 과학' 과목에서 자동 평가 시스템의 활용을 제시하고 있으며, 이에 따라 C언어의 문법에 관한 기초적인 내용에서부터 주어진 문제의 알고리즘 설계와 프로그래밍 단계까지 폭넓게 적용할 수 있다. 또한, 대학의 자료구조와 알고리즘 강좌에서 동일 문제에 대한 각 알고리즘의 실제 소요 시간을 직접 비교해 봄으로써 알고리즘의 성능 차이를 확인할 수 있다.
The programming(algorithm) automated assessment system is to evaluate automatically the accuracy and time/space efficiency of user's solution to the problem which is provided. This system gives the immediate feedback of the solution, real-time ranking. So, in the course of data structure and algorit...
The programming(algorithm) automated assessment system is to evaluate automatically the accuracy and time/space efficiency of user's solution to the problem which is provided. This system gives the immediate feedback of the solution, real-time ranking. So, in the course of data structure and algorithm, we can apply the knowledge which we have learned to the problem solving. Especially, in the basic course of learning the syntax of the programming language, the novice student can learn in easy and fun by solving the simple problem. The university students can understand in the easy way the meaning of asymptotic analysis of algorithm in data structure & algorithm course.
The programming(algorithm) automated assessment system is to evaluate automatically the accuracy and time/space efficiency of user's solution to the problem which is provided. This system gives the immediate feedback of the solution, real-time ranking. So, in the course of data structure and algorithm, we can apply the knowledge which we have learned to the problem solving. Especially, in the basic course of learning the syntax of the programming language, the novice student can learn in easy and fun by solving the simple problem. The university students can understand in the easy way the meaning of asymptotic analysis of algorithm in data structure & algorithm course.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 연구에서는 프로그래밍(알고리즘) 자동 평가시스템의 이론적 배경과 선행 연구에 대한 고찰, 국·내외의 자동 평가 시스템의 동향에 대해 살펴보았으며, 고등학교와 대학의 학부 과정에서 활용할 수 있는 방안을 제시하였다.
프로그래밍(알고리즘) 자동평가 시스템은 대학의 자료구조와 알고리즘 강좌에서도 활용할 수 있다. 스택, 큐, 그래프 등의 기본적인 자료구조를 적용하여 해결할 수 있는 문제를 제시하거나, 검색, 정렬, 그래프 탐색(DFS, BFS), 탐욕적인 방법, 분할 정복법, 동적 계획법 등의 범용적인 알고리즘을 적용하는 문제를 제시하고, 학생들이 제출한 소스 코드의 알고리즘을 자동 평가하는 것이다. <표 9>는 Coding is fun 사이트에서 제공하는 일부 문제들로서, 문제 해결의 주요 열쇠가 되는 자료구조와 알고리즘을 기준으로 이를 통해 해결할 수 있는 문제(군)을 난이도 순서로 제시함으로써 해당 자료구조와 알고리즘을 활용한 문제해결의 응용력을 향상시킬 수 있다[18]
특히, 과학계열 전문 교과인 ‘정보과학’에서는 실생활과 타학문 분야의 다양하고 복합적인 문제를 해결하기 위해 알고리즘 설계와 분석을 강조하고 있으며, 자기주도적 학습과 수준별 학습이 용이하도록 프로그래밍 자동 평가 시스템의 활용을 제안하고 있다[3]. 이에, 본 논문에서는 이러한 프로그래밍(알고리즘) 자동 평가 시스템의 선행 연구를 고찰하고, 고등학교와 대학에서의 정보 교육 활용 방안에 대해서 논의해 보고자 한다.
제안 방법
이 시스템은 알고리즘의 효율성을 평가할 수 없으며, 입력 데이터에 대해서 올바른 출력 데이터를 산출하는지의 여부를 미리 준비한 정답 데이터를 이용하여 비교하는 방식이다. 또한, 2006년부터 미국 스탠포드 대학에서 운영 중인 MOSS(Measure of Software Similarity) 시스템을 통해 제출한 소스 코드의 표절을 검사한다. 시스템의 유용성을 확인하기 위해 2007년도 1학기 D대학교 컴퓨터교육과에 개설된 3개의 프로그래밍 관련 교과목(컴퓨터프로그래밍 C, Java 프로그래밍, 데이터 구조)에 적용하였으며, 기존의 수작업평가 방법에 비해 과제 평가의 소요 시간이 크게 감소한 것을 확인하였다.
사용자 서비스 환경은 학습자에게 문제를 제시하고 자동평가 결과와 더불어 지금까지 학습자가 제출한 소스코드를 누적하여 보여준다. 또한, 자동평가 결과를 토대로 문제별 채점 현황과 사용자 간의 실시간 랭킹을 산출한다. 사용자 서비스 환경은 대부분 웹으로 구현하는 것이 일반적이다.
자동 평가 시스템의 프로그래밍 학습 효과를 확인하기 위해 자동 평가 시스템을 초등학생 7명, 중학생 9명, 고등학생 2명으로 구성된 실험 집단에 적용하였으며, 초등학생 9명, 중학생 10명, 고등학생 2명으로 구성된 통제집단에는 전통적인 교수·학습 방법을 적용하였다.
채점데이터 세트는 [그림 1]과 같이 15개 내외의 입력데이터와 정답데이터의 쌍으로 구성된 데이터 세트로서 입력데이터와 정답데이터 사이의 종적인 구성을 통해 알고리즘의 정확성을 평가하며, 입력 데이터의 범위가 점점 증가하는 횡적인 구성을 통해 알고리즘의 시간/공간 효율성을 평가한다. 그리고 이러한 평가요소는 [그림 2]의 문제구성요소에서 ②핵심요구사항, ③제한 시간/메모리, ④입력데이터의 범위와 밀접하게 관련되어 있다[8].
프로그래밍(알고리즘) 자동평가 시스템을 운영하기 위해서는 먼저 구조적이고 형식적이며 입력과 출력이 명확한 문제를 제작해야 하고, 그에 상응하는 채점데이터 세트를 만들어야 한다. 채점데이터 세트는 알고리즘의 정확성과 시간/공간 효율성을 평가할 수 있도록 [그림 1]과 같이 15개 내외의 입력데이터와 정답데이터의 쌍을 종적 및 횡적으로 구성하여 개발한다.
컴파일 과정에서는 사용자가 프로그래밍 언어를 이용하여 주어진 문제에 대한 소스코드를 작성하여 제출하면 자동평가 시스템은 이 소스코드를 서버에 파일로 저장하고 이를 자동으로 컴파일하여 실행 파일을 만든다[4]. 컴파일 과정을 통과한 실행 파일은 미리 준비된 입력, 출력 데이터의 세트에 따라 몇 차례 실행을 반복하고, 매 실행시마다 미리 준비된 데이터가 입력되어 출력되는 값과 준비된 정답데이터의 값을 비교한다. 만약 두 데이터의 값이 같고, 시간 제한과 메모리 제한을 초과하지 않았다면 제출한 소스 코드는 올바른 답으로 받아들여지며, 최소한 미리 준비된 채점데이터 세트에 대해서는 해당 소소 코드의 알고리즘이 정확하고 효율적으로 구현되었음을 확인하게 된다[5][6]
교육부는 2015년 9월에 지식정보사회가 요구하는 핵심역량을 갖춘 창의 융합형 인재를 양성하기 위한 2015 개정 교육과정을 고시하였다. 특히, 정보과 교육과정의 핵심역량으로 컴퓨팅 사고력,협력적 문제해결력 등을 제시하고 초등학교 실과에서 17시간 이상, 중학교 정보 과목에서 34시간 이상을 필수로 이수토록 하였으며, 고등학교는 자신의 진로와 연계하여 보다 심화된 학습이 가능하도록 하였다. 초등학교와 중학교에서는 놀이 중심의 다양한 언플러그 활동이나, 스크래치와 엔트리 등의 그래픽 기반 언어를 활용하는 등 학습자의 수준에 맞는 다양한 교수·학습 및 평가 방법에 대한 연구가 한창 진행 중이다.
대상 데이터
2010년 2월 19일에 첫 번째 ‘Codeforces Round’가 열려 175명이 참가하였으며, 2016년 1월까지 300개의 Round가 열렸고 평균 5,000명의 회원이 참가하고 있다[14].
러시아 Saratov State University가 운영하고 있는 사이트로서, 모든 사용자는 1주일에 한 번씩 2시간 동안 열리는 ‘Codeforces Round’에 참가할 수 있으며, 이미 종료한 ‘Codeforces Round’의 문제를 풀어볼 수 있다. 또한, 다른 사용자가 제출한 소스와 해당 문제의 채점 데이터 일부를 확인할 수 있는 기능을 제공하고 있어 최근 전 세계의 사용자가 꾸준히 증가하여 2015년 말 기준 30만명의 사용자가 가입한 사이트다. 2010년 2월 19일에 첫 번째 ‘Codeforces Round’가 열려 175명이 참가하였으며, 2016년 1월까지 300개의 Round가 열렸고 평균 5,000명의 회원이 참가하고 있다[14].
성능/효과
송지희(2011)는 [그림 5]와 [그림 6]의 자기주도 학습을 위한 자동채점기반의 프로그래밍 교육 시스템을 개발하고, 프로그래밍 교육에 있어 학습자의 학업성취도와 수업만족도 향상의 효과성 검증을 위하여 서울 소재 S대학의 학부생으로 구성된 실험 집단(15명)과 통제 집단(15명)을 대상으로 적용, 분석하였다. 그 결과 실험집단의 학업성취도가 통제집단 보다 유의미하게 우수한 것으로 나타났으며, 실험 집단 대상의 수업만족도 조사에서 종래의 수업 방법 보다 자동채점기반의 프로그래밍 교육 시스템을 적용한 수업에서 더 높은 만족도를 보였다[4].
즉, 2015 개정 교육과정의 고등학교 과학 계열 전문 교과인 ‘정보과학’ 과목의 교수·학습 및 평가 방법에서 자동평가 시스템의 활용을 제시하고 있는 만큼 C언어의 문법에 관한 기초적인 내용에서부터 주어진 문제의 알고리즘 설계와 프로그래밍 단계까지 폭넓게 적용할 수 있으며, 대학의 자료구조와 알고리즘 강좌에서 문제 해결의 주요 열쇠가 되는 자료구조와 알고리즘을 기준으로 이를 통해 해결할 수 있는 문제(군)을 난이도 순서로 제시함으로써 문제 해결의 응용력을 향상시킬 수 있다. 또한 동일 문제에 대한 각 알고리즘의 실제 소요 시간을 직접 비교해 봄으로써 알고리즘의 성능과 효율성을 직관적으로 확인할 수 있으며, 점근적 분석의 의미를 보다 쉽게 이해할 수 있다.
사후 검사에서 실험 집단의 평균점수가 통제집단에 비해 유의미하게 높은 것으로 나타났으며, 이를 통해 알고리즘 자동평가 시스템을 적용한 교수·학습방법이 전통적인 교수·학습방법에 비해 프로그래밍 학습에 더 효과적임을 확인하였다[7]
또한, 2006년부터 미국 스탠포드 대학에서 운영 중인 MOSS(Measure of Software Similarity) 시스템을 통해 제출한 소스 코드의 표절을 검사한다. 시스템의 유용성을 확인하기 위해 2007년도 1학기 D대학교 컴퓨터교육과에 개설된 3개의 프로그래밍 관련 교과목(컴퓨터프로그래밍 C, Java 프로그래밍, 데이터 구조)에 적용하였으며, 기존의 수작업평가 방법에 비해 과제 평가의 소요 시간이 크게 감소한 것을 확인하였다. 또한, 3개의 강좌에 참여한 학생들 중 평균 76%의 학생이 PASG 시스템을 선호하였다[9].
4GHz에서 [문제 2]에 대한 각 알고리즘의 소요 시간을 측정한 것이다. 실행하는 컴퓨터의 성능에 따라, 그리고 실행 시점의 CPU 상태에 따라 매번 소요시간이변동하지만, O표기법의 본질적인 의미를 이해하기 전에 동일한 입력 크기에 대하여 시간복잡도가 서로 다른 알고리즘 간에 실제적인 소요시간의 차이가 발생함을 확인할 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
정보과 교과 역량은?
대학교의 고학년 전공자를 제외하고는 초등학생 이상을 대상으로 한 SW교육의 목표는 단연 ‘컴퓨팅 사고력(Computational Thinking)의 함양’일 것이다. 2015 개정 교육과정에서는 정보과 교과 역량을 ‘컴퓨팅 사고력’, ‘협력적 문제해결력’, ‘정보문화소양’으로 설정하고, 이를 실현하기 위해 정보과 교육과정에서는 총 4개의 ‘정보문화’, ‘자료와 정보’, ‘문제해결과 프로그래밍’, ‘컴퓨팅시스템’ 영역과 함께 각 영역별로 그에 적합한 내용 요소와 성취 기준을 제시하고 있다[2]. 2009 개정 교육과정과 비교해서 2015 개정 정보과 교육과정에서는 교과 역량을 ‘컴퓨팅 사고력’ 외에 지식 정보 사회의 구성원으로서 갖추어야 할 정보문화에 대한 기본 소양과 협력적 태도를 강조하고, ‘문제해결과 프로그래밍’ 영역을 내용과 분량 면에서 강화하였으며, 이진수, 운영체제, 네트워크 등의 어려운 내용은 축소·삭제하였다.
고등학교 SW교육의 우려사항은?
초등학교는 2019년부터, 중학교는 2018년부터 SW교육이 의무화되고 놀이와 교육용 도구를 활용한 체험 위주의 교수․학습 방법이 적용될 예정이다. 그러나, 고등학교에서는 텍스트 기반 언어를 사용하므로, 자칫 주어진 소스 코드를 그대로 코딩해 보는 단순한 실습에 그칠 우려가 크며, 이에 따라 고등학교에 적합한 교수․학습 방법에 대한 논의가 필요한 시점이다. 특히, 고등학교 과학 계열 전문 교과인 ‘정보 과학’ 과목에서는 보다 높은 수준의 알고리즘과 프로그래밍에 대한 내용요소가 포함되므로 초․중학교와는 다른 교수․학습 방법이 요구된다[1][2][3].
초등학생 이상을 대상으로 한 SW교육의 목표는?
수학 교육의 목표가 수학자의 양성이 아닌 것처럼, SW교육의 목표 또한 프로그래머의 양성이 아니다. 대학교의 고학년 전공자를 제외하고는 초등학생 이상을 대상으로 한 SW교육의 목표는 단연 ‘컴퓨팅 사고력(Computational Thinking)의 함양’일 것이다. 2015 개정 교육과정에서는 정보과 교과 역량을 ‘컴퓨팅 사고력’, ‘협력적 문제해결력’, ‘정보문화소양’으로 설정하고, 이를 실현하기 위해 정보과 교육과정에서는 총 4개의 ‘정보문화’, ‘자료와 정보’, ‘문제해결과 프로그래밍’, ‘컴퓨팅시스템’ 영역과 함께 각 영역별로 그에 적합한 내용 요소와 성취 기준을 제시하고 있다[2].
참고문헌 (26)
교육부(2015). 2015 개정 교육과정 총론. 교육부 고시 제2015-74호 (별책 1)
교육부(2015). 과학 계열 전문교과 교육과정. 교육부 고시 제2015-74호 (별책 20)
송지희(2011). 자기주도학습을 위한 자동채점 기반의 프로그래밍 교육 시스템. 박사학위논문, 숭실대학교.
정종광(2010). 과학고 학생을 위한 Online Judge 기반 프로그래밍 평가 시스템의 설계 및 구현. 석사학위 논문, 한국교원대학교
Yingwei L., Xiaolin W., &Zhengyi , Z.(2008). Programming grid : a computer-aided education system for programming courses based on online judge. ACM SCE '08 Proceedings, 6.
장원영, 김성식(2014). 알고리즘 자동평가 시스템의 개발 및 적용 : 프로그래밍 학습 효과 분석. 한국컴퓨터교육학회 논문지, 17(4), 26-34.
임형석(2007). ACM-ICPC 문제의 출제 및 채점 과정. 한국정보과학회지, 25(7). 52-55.
김미혜(2007). 자동화된 프로그래밍 과제 평가 시스템의 설계 및 구현. 인터넷정보학회 논문지, 8(6), 75-85.
정은미(2009). 프로그래밍 언어에 대한 주관식 자동 채점 시스템의 설계 및 구현. 석사학위 논문, 안동대학교
전현석, 정종광, 김성식(2014). C언어 기초 학습을 위한 문제 설계 및 운영. 한국컴퓨터교육학회 학술발표대회 논문집, 18(1), 291-294.
임형석, 김희철(2007). 경시대회를 통한 프로그래밍 교육 활성화 방안. 한국정보과학회지, 125(7). 35-37.
Raymond S. P., John D. H., &Kayla M. H.(2015). Are automated assessment tools helpful in programming courses?. 2015 ASEE Anuual Conference & Exposition.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.