DOI QR코드

DOI QR Code

Design and Implementation of a Data Visualization Assessment Module in Jupyter Notebook

  • HakNeung Go (Gadeuk Elementary School) ;
  • Youngjun Lee (Dept. of Computer Education, Korea National University of Education)
  • Received : 2023.07.19
  • Accepted : 2023.08.29
  • Published : 2023.09.30

Abstract

In this paper, we designed and implemented a graph assessment module that can evaluate graphs in an programming assessment system based on text and numbers. The assessment method of the graph assessment module is self-evaluation that outputs two graphs generated by codes submitted by learners and by answers, automatic-evaluation that converts each graph image into an array, and gives feedback if it is wrong. The data used to generate the graph can be inputted directly or used from external data, and the method of generatng graph that can be evaluated is MATLAB style in matplotlib, and the graph shape that can be evaluated is presented in mathematics and curriculum. Through expert review, it was confirmed that the content elements of the assessment module, the possibility of learning, and the validity of the learner's needs were met. The graph assessment module developed in this study has expanded the evaluation area of the programming automatic asssessment system and is expected to help students learn data visualization.

본 연구에서는 글자와 숫자를 기반으로 한 프로그래밍 자동 평가 시스템에서 그래프를 평가할 수 있는 그래프 평가 모듈을 설계 및 구현하였다. 그래프 평가 모듈의 평가 방법은 학습자가 제출한 코드와 모범 코드로 작성한 그래프, 평가 준거를 제시하는 자기 평가와 각각의 그래프 이미지를 배열로 변환하여 정답을 판정하고 오답일 경우 피드백을 제공하는 자동 평가이다. 그래프를 작성하는데 사용되는 데이터는 직접 입력하거나 외부 데이터를 불러올 수 있으며 평가할 수 있는 그래프 작성 방법은 matplotlib의 MATLAB 스타일이며 수학과 교육과정에서 제시된 그래프를 평가할 수 있다. 전문가 검토를 통해 평가 모듈의 내용 요소와 학습 가능성, 학습자의 요구에서 타당도를 갖춘 것으로 확인하였다. 본 연구에서 개발한 그래프 평가 모듈은 프로그래밍 자동 평가시스템 평가 영역을 확장하였고 학생들이 데이터 시각화를 익히는데 도움이 될 것으로 기대된다.

Keywords

I. Introduction

컴퓨팅은 인간이 해결하기 어려운 일을 효과적이고 효율적으로 해결할 수 있도록 도와주는 것으로 4차 산업혁명 시기에 읽기, 쓰기, 셈하기에 더하여 컴퓨팅 능력은 기본 역량으로 요구되고 있다. 이를 위해 필요한 능력은 컴퓨팅 사고력이며 국·내외에서는 시대적 변화에 대응하기 위하여 컴퓨팅 사고력을 기르기 위한 정보 교육을 교육과정에 반영하였다[1][2].

컴퓨팅 사고력은 문제를 분해하고 문제 해결 모델을 만드는 추상화와 프로그래밍으로 대표되는 자동화로 구성되어 있다[8]. 컴퓨팅 사고력을 함양하기 위한 대표적인 방법은 프로그래밍이다[3][4]. 하지만 많은 학생들에게 프로그래밍을 학습하는 것은 도전적이고 어려워하여 컴퓨터 교육자들은 프로그래밍 관련 도구를 개발하여 학습자가 프로그래밍을 학습 하는 것을 지원하였다[6]. 특히 프로그래밍 입문 과정에서 학생이 작성한 코드를 실시간으로 평가하고 피드백을 제공하기 위한 자동 평가 시스템이 개발되었다[7]. 프로그래밍 자동 평가 시스템을 활용한 프로그래밍 과정은 학업 성취도를 높이고 몰입, 수업 태도를 향상하는 것으로 보고되었다[22][24]. 이러한 장점으로 기초 프로그래밍 과정뿐만 아니라, 자료구조, 알고리즘과 같은 과목에서 활용되고 있으며 2015 교육과정 정보과학 교과의 프로그래밍 영역에서 프로그래밍 자동 평가 시스템을 평가 방법으로 제시하였다[8].

한편 정보 기술의 발달과 확산으로 데이터의 양적팽창과 질적 팽창이 이루어지고 있다. 하지만 데이터는 그 자체로 의미를 갖기보다는 축적된 데이터를 처리하고 활용하여 정보를 얻는 것이 중요하다[12]. 데이터 시각화는 데이터를 그림이나 그래프로 변환하여 정보로서 가치를 가지게 하며 상용 프로그램 또는 프로그래밍 언어로 표현할 수 있다. 프로그래밍 언어를 활용한 데이터 시각화는 대용량의 데이터를 처리할 수 있고 필요에 맞게 디자인할 수 있으며 짧은 코드로 그래프를 표현할 수 있다[13][14]. 하지만 데이터와 데이터 시각화가 중요해지는 시기에 프로그래밍 교육에서 데이터를 그래프로 표현하기 위한 교육이 필요하지만[15] 이에 대한 연구는 부족하다.

프로그래밍 언어를 활용한 데이터 시각화는 그래프 작성에 필요한 데이터와 그래프로 나타내는 코드, 출력되는 그래프로 대응된다. 이는 프로그래밍 자동 평가 시스템에서 입력 데이터와 문제를 해결하기 위한 코드, 출력되는 정답 데이터와 같은 구조이다. 프로그래밍 언어를 활용한 데이터 시각화에서 자동 평가 시스템을 활용하면 프로그래밍 언어를 익히는 것처럼 도움이 될 것으로 판단된다. 하지만 기존의 프로그래밍 자동 평가 시스템은 글자와 숫자만 평가를 할 수 있다. 이에 본 연구에서는 프로그래밍 자동 평가 시스템처럼 프로그래밍 언어로 데이터 시각화를 평가하는 도구를 설계하고 개발하고자 한다.

II. Preliminaries

1. Related works

1-1. Programming automatic assessment system

국내에서 활용할 수 있는 프로그래밍 자동 평가 시스템은 웹 사이트에서 제공되는 것과 사교육 프로그래밍 교육 기관에서 제공하는 것과 주피터 노트북 기반으로 제공하는 것으로 구분할 수 있다.

웹 사이트에서 제공되는 것은 온라인 저지라고도 부르며 KOISTUDY, coding fun, 백준 등이 있다. 오랜 기간 서비스를 운영하여 서비스가 안정적이며 많은 문제가 제공되고 있다. 무료로 활용할 수 있으나 소스 코드는 공개되어 있지 않다. 다양한 문제를 체계적으로 제공하며 출력된 글자와 숫자를 자동 평가한다. 사교육인 프로그래밍 교육 기관에서 제공하는 것은 서비스형 소프트웨어(Software as a Service, SaaS)형태로 제공되며 Codle, groomedu, elice 등이 있다. 유료로 운영되며 강의 또는 교육자료가 제공되고 자체 서버에서 작동되는 프로그래밍 개발 도구를 제공한다. 출력된 글자와 숫자를 자동평가 하며[17][18] 출력된 이미지를 자동 평가하기도 한다[16]. 주피터 노트북 기반(Based on JupyterNotebook, Based on JN)으로 제공되는 평가 시스템은 모듈 또는 확장 도구 형태로 제공된다. 무료이고 대부분 소스 코드가 공개되어 있다[19][20]. 출력된 글자, 숫자, 이미지 등 다양한 형태를 자동 평가 할 수 있다.

온라인 저지, SaaS, Based on JN을 비용, 학습자료 제공, 평가 데이터로 비교하면 Table 1.과 같다.

Table 1. Comparing programming automatic assessment system

CPTSCQ_2023_v28n9_167_t0001.png 이미지

*Incurring costs when building own server

1-2. Programming automatic assessment system configuration and effectiveness

프로그래밍 자동 평가 시스템은 문제, 채점 데이터 세트, 자동 평가 프로그램, 사용자 서비스 환경으로 구성된다. 문제는 배경 설명, 입력·출력 데이터 설명 및 예시, 요구사항 등으로 구성되어 있다. 채점 데이터 세트는 입력 데이터와 정답 데이터 쌍으로 구성되며 입력 데이터와 출력 데이터는 종적인 구성을 통해 정확성을 평가하고 입력 데이터의 범위를 증가시키는 횡적인 구성을 통해 효율성을 평가한다. 자동 평가 프로그램은 제출한 코드에 입력 데이터를 넣고 컴파일하여 실행하며 오류 여부를 확인하고 정상 작동하면 출력된 값과 정답 데이터를 비교하여 정답을 판정한다. 사용자 서비스 환경은 문제 제시, 코드 작성, 평가, 피드백이 이루어지는 환경으로 주로 웹 사이트를 통해 구성된다. 정종광(2010), 장원영(2014)은 온라인 상에서 글자·숫자를 기반으로 코드를 동적 평가 할 수 있는 시스템을 개발하였고 연구에 활용하였다[21][22].

프로그래밍 자동 평가 시스템을 활용하여 학습자의 인지적인 영향을 분석한 연구로 장원영, 김성식(2014)은 프로그래밍 자동 평가 시스템을 사용하여 학습한 집단이 예제를 보고 학습한 집단보다 프로그래밍 시험 점수가 유의미하게 높게 측정됨을 보고하였다[22]. 장원영(2020)은 자동 평가 시스템을 활용한 연구에서 학습목표지향성과 평가 횟수는 자기 효능감과 몰입을 매개로 컴퓨팅 사고력과 성취도에 정적인 영향을 미침을 보고하였다[23].

프로그래밍 자동 평가 시스템을 활용하여 학습자의 정의적인 영향을 분석한 연구로 김성식, 오소희, 정상수(2018)는 자료구조 과목에서 활용할 문제를 개발하고 이를 자동 평가 시스템에 탑재하여 교원양성대학생들에게 적용하였으며 그 결과 수업 태도, 코딩 흥미, 몰입과 경쟁에 대한 사전, 사후 검사에서 유의미하게 향상된 것을 보고하였다. 정상수(2019)는 프로그래밍 자동 평가 시스템을 활용한 집단이 전통적인 프로그래밍 수업을 한 집단보다 몰입에서 긍정적인 영향을 미치는 것을 보고하였다[24].

1-3. Data visualization education using programming language

프로그래밍 언어를 활용한 데이터 시각화의 특징은 Excel과 같은 상용 프로그램에 비해 사용하기 어렵지만 짧은 코드로 그래프를 작성할 수 있고 사용자에게 맞는 그래프 제작할 수 있으며 대용량의 데이터를 빠르게 처리할 수 있다[14].

이진영(2021)은 초등학교 정보영재 학생을 대상으로 파이썬을 활용한 데이터 시각화 교육을 실시하였으며, 그 결과, 컴퓨팅 사고력에 대한 사전, 사후 검사에서 유의미하게 향상된 것을 보고하였다[26].

김정아 등 5명(2019)는 초등학생을 대상으로 파이썬을 활용한 데이터 시각화 교육을 실시하였으며, 그 결과 계산적 인지력과 창의성 중 유창성, 정교성, 독창성에 대한 사전, 사후 검사에서 유의미하게 향상된 것을 보고하였다[15].

프로그래밍 언어를 활용한 데이터 시각화 연구는 많지 않지만 컴퓨팅 사고력 등을 향상시키는 것으로 보고되었다. 한편 두 연구에서 사용한 학습 자료는 서책형이며 코드와 출력 결과를 같이 제시하는 특징이 있다.

III. The Proposed Scheme

1. Design

본 연구에서는 프로그래밍 언어로 데이터 시각화 학습을 지원하는 도구를 설계하였다. 학습을 지원하는 방법은 데이터를 시각화하는 코드를 자동으로 평가하고 즉각적인 피드백을 제공할 수 있도록 하였다. 이를 위해 기존의 프로그래밍 자동 평가 시스템 중 출력된 이미지를 자동 평가할 수 있고 소스 코드가 공개된 주피터 노트북 기반 자동 평가 시스템을 선택하였다[25]. 선택한 자동 평가 시스템은 초기 설정이 쉽고 상호작용 컴퓨팅을 할 수 있는 특징을 가지고 있다[20].

프로그래밍 자동 평가 시스템을 활용하여 그래프 평가 모듈의 개발 방향은 다음과 같다.

첫째, 기반이 되는 자동 평가 시스템에 데이터 시각화 영역을 추가하도록 모듈 형태로 개발하였다. 또한 기존 자동 평가 시스템의 특징을 유지할 수 있도록 하였다.

둘째, 학생이 작성한 코드를 자기평가 하기 위해 학생이 생성한 그래프와 모범 답안으로 생성한 그래프를 동시에 출력하고 평가 준거를 제시하도록 하였다.

셋째, 학생이 제출한 코드로 생성한 그래프와 모범 답안으로 생성한 그래프를 이미지 비교하여 자동 평가가 이루어지도록 하였다.

2. Implement

그래프 평가 모듈은 파이썬 3.9.16과 pandas 1.5.3, matplotlib 3.7.1, numpy 1.22.4 라이브러리로 개발하였다. 파일 경로는 구글에서 서비스하는 주피터 노트북인Colab을 기준으로 설정했으며 파이썬 언어로 matplotlib를 활용하여 작성한 코드를 평가한다.

2.1 Composition

그래프 평가를 위한 모듈은 문제 모듈과 평가 모듈, 그래프 이미지가 저장된 폴더, 그래프 작성에 필요한 데이터가 저장된 폴더, 한글을 지원하는 글꼴로 구성하였다.

문제 모듈은 문제와 평가 기준은 서식있는 형태로 자료를 제공하기 위해 HTML tag를 포함하여 저장하였다. 문제 출력 함수는 HTML tag를 렌더링하여 서식 있게 출력하기 위하여 IPython.display 모듈의 display 함수와 HTML 함수를 사용하였다[27]. 정답 데이터는 정답 코드를 문자열로 저장하였고 메타 데이터는 평가할 파일 이름, 정답 데이터, 문제 변수 이름을 딕셔너리로 정의하였다.

평가 모듈은 그래프에서 한글을 사용하기 위한 설정과 평가할 코드를 전처리하는 함수, 전처리한 코드를 변환하는 함수, 변환한 코드를 실행하고 오류를 검증하는 함수, 전처리, 변환, 실행 및 오류 검증과 자동 평가 및 자기 평가를 하나로 통합한 함수로 구성하였다. 그래프에서 한글을 사용하기 위한 설정은 matplotlib의 fontManager 모듈과 rcParams 모듈에서 한글을 지원하는 글꼴을 등록하고 변경하도록 하였다. 전처리하는 함수는 불필요한 공백과 plt.show() 코드를 제거하며 plot_arrange()로 정의하였다. 변환하는 함수는 전처리한 코드에 평가에 필요한 라이브러리를 불러오는 코드, 그래프를 이미지로 저장하는 코드, 모범 답안 코드를 추가하며 plot_convert()로 정의하였다. 실행 및 오류 검증은 변환한 코드를 실행하며 오류가 발생하면 오류 메시지를 반환하고 정상 작동하면 평가 결과를 code cell output에 출력하도록 error_check()를 사용하였다[20]. 정답 데이터를 불러오고, 전처리, 변환, 실행 및 검증을 통합하고 자동 평가 및 자기 평가를 실시하는 함수는 plot_check()로 정의하였다. plot_check()에서 자기 평가는 한 행에 학생이 제출한 코드와 모범 답안으로 생성한 그래프를 동시에 출력하고 다음 행에 체크박스와 평가 준거를 함께 출력하여 실시한다. 자동 평가는 모범 답안에 해당하는 그래프 이미지와 학생이 제출한 코드로 생성한 그래프 이미지를 각각 배열로 변환한 후 일치 여부를 확인하여 실시한다. Fig 1.은 학생이 작성하여 제출한 코드의 예시이고 Fig 2.는 제출한 코드를 전처리하고 변환된 코드이다. 평가에 필요한 라이브러리를 추가하고 정답 그래프를 추가하는 코드가 추가되었다. Fig 3.은 제출한 코드로 plot_check()를 통해 평가되는 과정이다.

CPTSCQ_2023_v28n9_167_f0001.png 이미지

Fig. 1. Example of the code submitted

CPTSCQ_2023_v28n9_167_f0002.png 이미지

Fig. 2. Example of the code converted

CPTSCQ_2023_v28n9_167_f0003.png 이미지

Fig. 3. plot_check() operation process

Table 2는 문제 모듈과 평가 모듈에 포함된 함수 및 변수에 대한 설명이다.

Table 2. Variables and functions included in the evaluation module

CPTSCQ_2023_v28n9_167_t0002.png 이미지

*That function used the functions in the existing programming automatic assessment system.

2.2 Implementation

코드 셀에서 초기 설정, 문제 제시, 평가가 이루어지도록 그래프 평가 모듈을 기존 프로그래밍 자동 평가 시스템의 소스 코드에 추가하여 git에 공개하였다[25].

초기 설정은 코드 셀에서 shell 명령어와 magic command를 사용하여 평가 모듈을 Git에서 다운로드 받고 이를 실행하는 것이다. 초기 설정을 통해 평가에 필요한 변수와 함수를 불러오고 그래프에서 한글을 사용할 수 있도록 하였다. Fig 4.는 평가 모듈을 다운로드 받고 실행하는 초기 설정하는 코드이다.

CPTSCQ_2023_v28n9_167_f0004.png 이미지

Fig. 4. Code to Initialize

문제 제시는 코드 셀에서 문제가 저장된 변수를 매개변수로 하여 문제 출력 함수를 실행하고 코드 셀 output에 문제를 출력하는 것이다. Fig 5는 코드 셀에서 문제를 제시하는 코드와 코드를 시행하여 문제를 출력한 것이다.

CPTSCQ_2023_v28n9_167_f0005.png 이미지

Fig. 5. Print out the problem

평가 코드 작성은 코드 셀에 작성한 코드를 평가하기 위해 파일로 저장하는 것이다. 코드 셀을 파일로 저장하는 magic command(%%writefile filename)를 포함하며 코드를 작성한 후 실행하면 작성한 코드를 filename으로 저장된다. Fig 6은 코드 셀에 작성한 코드를 _8000.py로 저장하는 예시이다.

CPTSCQ_2023_v28n9_167_f0006.png 이미지

Fig. 6. Generate code to evaluate

평가 결과 출력은 코드 셀에서 평가할 파일 이름을 매개 변수로 하여 평가 함수를 실행하고 코드 셀 output에 평가 결과를 출력하는 것이다. 평가 결과는 한 행에 학생 코드와 모범 답안으로 생성한 그래프, 자동 평가 결과, 평가 준거가 출력된다. Fig 7.은 코드 셀에서 평가 결과를 출력하는 코드와 코드 셀 output에서 평가 결과를 출력한 것으로 정답일 경우이다. Fig 8.은 오답인 경우이다.

CPTSCQ_2023_v28n9_167_f0007.png 이미지

Fig. 7. Output when the evaluation result is correct

CPTSCQ_2023_v28n9_167_f0008.png 이미지

Fig. 8. Output when the evaluation result is incorrect

2.3 Code that can be evaluated

그래프 평가 모듈에서 평가할 수 있는 코드는 데이터 사용, 그래프를 작성하는 스타일, 그래프 모양에서 다음과 같은 특징을 가지고 있다.

그래프를 작성하는데 필요한 데이터는 리스트, 데이터 프레임 등으로 직접 입력하여 사용하는 경우와 csv형태의 외부 데이터를 불러와서 사용하는 경우 모두 평가할 수 있다. 그래프를 작성하는 스타일은 matplotlib의 pyplot 모듈을 활용하여 MATLAB 방식으로 그래프를 작성하는 코드를 평가할 수 있다[28]. 평가할 수 있는 그래프는 matplotlib의 pyplot 모듈에서 작성하는 그래프를 모두 평가할 수 있다. Fig 6.은 그래프를 작성하는데 필요한 데이터를 직접 입력하고 pyplot 모듈을 이용하여 MATLAB 방식으로 그래프를 작성한 예시이고 Fig 7.은 이를 평가한 예시이다. Fig 9.는 그래프를 작성하는데 필요한 데이터를 외부에서 불러오고 pyplot 모듈을 이용하여 MATLAB 방식으로 그래프를 작성하고 평가하는 예시이다.

CPTSCQ_2023_v28n9_167_f0009.png 이미지

Fig. 9. Output evaluation result using external data

2.4 Expert review

그래프 평가 모듈의 내용 타당도를 확인하기 위해 전문가 검토를 실시하였다. 전문가 검토 문항은 컴퓨터 교육 석사학위 소지자 2인과 협의하여 내용 요소, 학습 가능성, 학생의 요구와 관련된 문항으로 구성하였으며 문항의 상세 내용은 Table 3과 같다.

Table 3. Questionnaire of content validity review

CPTSCQ_2023_v28n9_167_t0003.png 이미지

그래프 평가 모듈 검토에 참여한 전문가는 컴퓨터 교육 박사 또는 석사학위를 소지하였으며 Table 4와 같다.

Table 4. Experts involoved in the review

CPTSCQ_2023_v28n9_167_t0004.png 이미지

각 문항은 4점 리커트 척도로 구성하였으며 4점을 매우 긍정, 1점을 매우 부정으로 표현하였다. 또한 영역별로 전문가 의견을 서술할 수 있도록 제시하였다. 전문가들의 검토 결과를 통계 분석한 방법은 I-CVI(Item Content Validity Index) 산출식을 활용하였다. I-CVI의 계산을 위해 각 문항에서 매우 긍정, 긍정으로 응답한 문항은 1로 변환하였고 매우 부정, 무정으로 응답한 문항은 0으로 변환하였다. 전문가 인원은 8명이므로 절단 값은 0.80으로 설정하였다[29]. 문항별 통계 결과는 Table 5.와 같다.

Table 5. Result of I-CVI statics analysis

CPTSCQ_2023_v28n9_167_t0005.png 이미지

평가 모듈에 대한 전문가 검토 결과 내용 요소, 학습 가능성, 학생의 요구와 관련하여 모두 .80이상으로 나타났다. 영역별 전문가 의견은 학습에 활용하는 것과 평가 모듈을 사용할 대상으로 분류할 수 있다. 먼저 평가 모듈을 학습에 활용하는 것과 관련하여 내용 요소 영역에서 ‘오답일 경우 어떤 부분이 잘못되었는지 피드백을 주는 부분이 있으면 자기주도학습에 더욱 도움이 될 것 같습니다.’, ‘⋯ 그래프 자체(표현에 한정된 기능적인 측면_역량의 측면으로 좀 더 가면 좋을 것 같아요)에 초점을 맞춘 듯한 느낌이 강해서 추후에 적용시 기능적인 측면 뿐만 아니라 다른 측면도 함께 고려되면 좋을 것 같습니다!’,와 같은 의견을 제시하였다. 사용성과 관련하여 ‘평가 모듈을 잘 활용하기 위해서는 학습목표, 학습목표에 따른 내용체계가 구체화되고, 그에 따라 평가 모듈이 만들어질 필요가 있어 보입니다. ⋯’ 의견을 제시하였다.

평가 모듈을 사용할 대상과 관련하여 내용 요소 영역에서 ‘⋯ 초등학교 과정에서는 그래프 그리는 방법으로 그래프의 범례, 제목, 그래프 종류, 쓰임새 등을 배우도록 되어 있는데, 데이터를 프로그래밍 하여 시각화 하는 것이 그래프를 그리는 방법을 학습하는데에는 다소 어려움이 있어 보입니다. ⋯’ 의견을 제시하였고, 학생들의 요구 영역에서 ‘ ⋯ 초등학교에서는 시각화 된 자료(큰 주머니, 과자 모형 등)으로 데이터를 제공하기 때문에 학습자에게 다소 어려움이 있을 것으로 보여집니다.’와 같이 의견을 제시하였다. 사용성 영역에서 ‘현장에 적용하여 사용하기에는 다소 어려움이 있어 보입니다. 특별 교육 (영재교육, 진로교육 등)에서 활용 될 수 있을 것으로 보입니다.’,와 같이 초등학교에서 사용하기에 어려울 것으로 보이며 영재교육이나 데이터 시각화와 관심이 있는 학생들을 대상으로 하기에 적절할 것 같다는 의견을 제시하였다.

2.5 Final development results

전문가 검토 결과를 반영하여 다음과 같은 수정을 하였다. 첫째, 평가하는 그래프 종류는 초·중학교 수학과 교육 과정에서 제시하는 막대·꺾은선·박스·원 그래프, 히스토그램, 산점도, 수직선, 수평선으로 한정하였다. 이는 수학교과와 융합하여 수학 교과의 목표 및 내용 체계에 그래프 평가 모듈을 공학도구로 사용하여 학습하기 위함이다[30].

둘째, 자동 평가 결과가 오답일 경우 피드백을 제공하도록 plot_check() 함수를 수정하였다. 오답 시 피드백을 제공하기 위해 matplotlib의 명령어를 사용하면 반환되는 값을 활용하였다. 반환되는 값에서 method를 실행하거나 attribute 값을 호출하는 방법으로 데이터를 추출하고 학생이 작성한 코드와 모범 답안 코드에서 얻어진 데이터를 비교하여 다를 경우 피드백을 제공하도록 하였다. Table 6은 matplotlib의 명령어와 반환되는 값에서 추출한 데이터를 정리한 표이다[31].

Table 6. Data extracted from the value returned by the command in matplotlib

CPTSCQ_2023_v28n9_167_t0006.png 이미지

matplotlib의 명령어에서 데이터를 얻기 위해 다음과 같이 수정하였다. 첫째, matplotlib의 명령어를 사용하는 경우 반환되는 값을 변수에 저장하도록 정답 데이터에서 matplotlib의 명령어를 사용하는 경우 ‘변수 = matplotlib 명령어’로 수정하였다. 또한 학생이 제출하는 코드에서 matplotlib의 명령어를 사용하는 경우 plot_check() 함수에서 ‘변수=matplotlib의 명령어’로 수정하도록 하였다. 둘째, 둘째, 데이터를 추출하는 get_return() 함수와 피드백을 제공하는 plot_feedback()함수를 정의하여 plot_check() 함수에 포함하였다. Fig 10.은 주피터 노트북 기반 프로그래밍 자동 평가 시스템에서 최종적으로 완성한 그래프 평가 모듈을 구현한 것으로 평가 결과 제시 및 피드백을 제공하는 이미지이다. Fig 11.는 전문가 의견을 바탕으로 수정한 그래프 평가 모듈에서 학생이 제출한 코드가 plot_check()를 통해 평가되는 과정이다.

CPTSCQ_2023_v28n9_167_f0010.png 이미지

Fig. 10. plot_check() revised operation process

CPTSCQ_2023_v28n9_167_f0011.png 이미지

Fig. 11. plot_check() revised operation process

IV. Conclusion

본 연구에서는 주피터 노트북 기반 프로그래밍 자동 평가 시스템에서 그래프를 자동 평가하고 피드백을 제공하는 모듈을 설계 및 구현하였다. 그래프 평가 모듈은 문제 모듈과 평가 모듈, 자동 평가를 위한 이미지 파일, 평가에 활용하기 위한 외부 데이터, 한글을 지원하는 글꼴로 구성하였다. 문제 모듈은 문제 출력 함수, 문제 변수, 정답 코드가 문자열로 저장된 정답 데이터, 자기평가 요소가 저장된 변수, 평가할 파일 이름·정답 데이터·자가 평가 변수를 딕셔너리로 종합한 메타 데이터로 구성하였다. 평가 모듈은 그래프에서 한글을 사용하기 위한 코드, 전처리하는 함수, 변환하는 함수, 그래프와 관련된 데이터를 추출하기 위한 함수, 추출한 데이터를 비교하여 피드백을 제공하는 함수, 평가 모듈에 포함된 함수를 하나의 함수로 통합하고 자기 평가와 자동 평가가 이루어지도록 구성하였다.

그래프 평가 모듈은 주피터 노트북에서 다음과 같이 구현하였다. 초기 설정은 코드 셀에서 Git에 공개된 모듈을 다운로드 받고 이를 커널에서 실행하도록 하였다. 문제 제시는 문제 변수를 매개변수로 하여 문제 출력 함수를 실행시키며 문제는 코드 셀 output에 출력하도록 하였다. 평가 코드 작성은 코드 셀을 파일로 저장하는 매직 커멘드를 포함하여 코드를 작성하고 실행시키면 저장되도록 하였다. 코드 평가는 코드 셀에서 평가할 파일 이름을 매개변수로 하여 평가 함수를 실행시키며 평가 결과를 코드 셀 output에 출력하도록 하였다. 평가 결과는 학생이 작성한 그래프와 모범답안으로 작성한 그래프를 한 행에 출력하고 자기 평가 요소, 자동 평가 결과, 오답 시 피드백 내용을 출력하도록 하였다.

그래프 평가 모듈은 전문가에게 내용 타당도 검토를 받았으며 모든 영역에서 타당도를 갖춘 것으로 확인되었다. 다만 전문가 의견을 반영하여 평가할 그래프는 수학 교육 과정에서 제시되는 것으로 한정하고 오답 시 피드백을 제공할 수 있도록 문제 모듈과 평가 모듈을 수정하여 최종 완성하였다.

개발한 그래프 평가 모듈은 프로그래밍 언어로 데이터를 시각화를 학습할 때 코드를 작성하고 즉각적인 평가 결과와 피드백을 제공받을 수 있어 학생들이 프로그래밍 언어로 데이터 시각화를 학습하는데 도움이 될 것으로 판단된다. 또한 프로그래밍 자동 평가 시스템에서 평가할 수 있는 영역이 글자, 숫자에서 그래프로 추가되어 다양한 영역의 문제를 평가할 수 있을 것으로 기대된다.

다만, 본 연구에서 개발한 그래프 평가 모듈은 내용 타당도를 확보하였지만 이를 활용하기 위한 문제가 개발과 효과성 검증이 이루어지지 않았다. 추후 연구에서는 그래프 평가 모듈을 활용할 수 있는 문항 개발과 이를 적용하여 컴퓨팅 사고력, 데이터 리터러시 등에 대한 효과성을 통계적으로 검증이 필요하다.

References

  1. Djkim, "Logical Computational thinking for problem solving," YoungJIn.com, 2019
  2. Ministry of Education, "Informatics education comprehensive plan", May 2020
  3. Yjlee, Shpaik, Jhshin, HcYu, IgJeong, SjAn, Jwchoi and Skjeon, "Research for Introducing Computational Thinking into Primary and Secondary Education," Korea Foundcation for the Advancement of Science & Creativity. April 2014
  4. Jmkim, "Problem solve skills based on Computing thinking," Korea Information Processing Society Review, Vol. 24, No. 2, pp. 13-21, 2017
  5. Skjeon, and yjlee, "The Effect of CPS Programming Model on promoting Elementary school students' divergent thinking," The Journal of Korean Association of Computer Education, Vol. 15, No. 2, pp. 1-8, 2012. DOI : 10.32431/kace.2012.15.2.001
  6. L. Malmi, Utting, I, and Ko, A, "Tools and Environments. In S. Fincher & A. Robins (Eds.)," The Cambridge Handbook of Computing Education Research. Cambridge: Cambridge University Press, 2019.
  7. A. Kurnia, A. Lim, and B. Cheang, "Online judge," Computers & Education, Vol. 36, No. 4, pp. 299-315, 2001. DOI : doi.org/10.1016/S0360-1315(01)00018-5
  8. Ministry of Education "Infomatics Science Curriculum," September 2015
  9. GSHS Informatics Teachers, KOISTDY, http://koistudy.net/
  10. Coding is fun, Coding is fun, http://codingfun.net/onlinejudge/index.
  11. Bjchoi, Baekjoon Online Judge, https://www.acmicpc.net/
  12. Hkkim, "New Information Strategy Using Big Data," Telecommunications Review, Vol. 22, No. 3, pp. 337-352, 2012. UCI : G704-000446.2012.22.3.008 G704-000446.2012.22.3.008
  13. Bkgye, Yjpark, "Data Visualization Trends in Education: Focusing on Cases and Issues," KERIS, 2017.
  14. L. Lo, Y. H, Ming, Y, & H. Qu, "Learning vis tools: Teaching data visualization tutorials," IEEE Visualization Conference (VIS), pp. 11-15, October 2019. DOI: 10.48550/arXiv.1907.08796
  15. Jakim, Mgkim, Ymkim, Hjyoo, and Jhkim. "Effect of data visualization education with using Python on dcomputational thinking of six grade in elementary," JOURNAL OF The Korean Association of information Education, Vol. 23, No. 3, pp.197-206, 2019. DOI : 10.14352/jkaie.2019.23.3.197
  16. Team Monolith Inc, codle, https://codle.io
  17. Groom, groomedu, https://edu.groom.io
  18. /*elice*/, elice LXP, https://elice.io/products/lxp
  19. F. S. Zamfir and E. Pricop, "On the design of an interactive automatic Python programming skills assessment system," 2022 14th International Conference on Electronics, Computers and Artificial Intelligence (ECAI), pp. 1-5, Ploiesti, Romania, 30 June-1 July 2022. DOI: 10.1109/ECAI54874.2022.9847414
  20. Hkgo, Swkim, Yjlee, "Design and Implementation of a Programming Automatic Assessment System in Jupyter Notebook," International Journal on Advanced Science, Engineering and Information Technology, Vol. 13, No. 3, pp. 1080-1086, 2023. DOI: http://dx.doi.org/10.18517/ijaseit.13.3.18457
  21. Jjkwang, "Design and Construct of Programming Assessment System based on Online Judge for a Science High School student," Master's Dissertation, Korea National University of Education, February 2010.
  22. Wychang and Sskim, "Development and application of algorithm judging system : analysis of effects on programming learning," The Journal of Korean Association of Computer Education, Vol. 17, No. 4, pp. 45-57, 2014. DOI : 10.32431/kace.2014.17.4.005
  23. Wychang, "The Effects of Online Judge System on Motivation and Thinking in Programming Education : Structural Relationships between Factors," The Journal of Korean Association of Computer Education, Vol. 24, No. 5, pp. 1-16, 2021. DOI : 10.32431/kace.2021.24.5.001
  24. Ssjeong, "The Effects of Programming Education Using an Automatic Programming Assessment System on Learning Flow of General High School Students," Master's Dissertation, Korea National University of Education, 2019.
  25. HakNeung Go, "Jupyter_judge," https://github.com/GoHakNeung/jupyter_judge.
  26. Jylee, "Effects of Data Visualization Education Using Python on Improvement of Computational Thinking Ability in Information Gifted Students of Elementary school," Master's Dissertation, Korea National University of Education, 2021
  27. Hngo and Yjlee, "Exploring how to present the problem of Automatic Assessment system in Jupyter Notebook," pp. 221-222, Daejeon, Korea, 9-11 January-1, 2023.
  28. Matplotlib development team, Pyplot tutorial, https://matplotlib.org/stable/tutorials/introductory/pyplot.html
  29. Tjseong, "Understanding and Application of Modern Basic Statistics," Hakgisa, 2019.
  30. Ministry of Education, "Mathematics Curriculum", December 2022
  31. Matplotlib development team, matplotlib.pyplot, https://matplotlib.org/stable/api/pyplot_summary.html