컴파일러와 언어구현 교과목은 컴퓨터과학 교과과정에서 오랫동안 중요한 주제로 인식되어 왔다. 그것은 컴파일러에 관한 지식이 프로그래밍 언어와 시스템을 이해하는 데에 중요한 역할을 할 뿐 아니라, 컴파일러 기술이 많은 응용 영역에서 활용될 수 있기 때문이다. 그러나 제한된 자원과 시간적 제약 때문에 컴파일러 기술을 효과적으로 전달하기 위해서는 많은 노력이 필요하다. 본 논문에서는 교육용 컴파일러 개발환경인 Edu-IDEC을 이용한 컴파일러 수업모형을 제시한다. Edu-IDEC는 로봇 플랫폼에서의 컴파일러 개발환경으로서, 컴파일러 제작도구, 레퍼런스 컴파일러, 구문트리 시각화도구, 목적언어 시각화 도구, 로봇제어기, 그리고 로봇시뮬레이터 등의 기능이 있으며, 이클립스플러그인 기반으로 동작한다. 그리고 제시된 모형을 실제 수업에 적용하여 그 평가결과를 제시한다.
컴파일러와 언어구현 교과목은 컴퓨터과학 교과과정에서 오랫동안 중요한 주제로 인식되어 왔다. 그것은 컴파일러에 관한 지식이 프로그래밍 언어와 시스템을 이해하는 데에 중요한 역할을 할 뿐 아니라, 컴파일러 기술이 많은 응용 영역에서 활용될 수 있기 때문이다. 그러나 제한된 자원과 시간적 제약 때문에 컴파일러 기술을 효과적으로 전달하기 위해서는 많은 노력이 필요하다. 본 논문에서는 교육용 컴파일러 개발환경인 Edu-IDEC을 이용한 컴파일러 수업모형을 제시한다. Edu-IDEC는 로봇 플랫폼에서의 컴파일러 개발환경으로서, 컴파일러 제작도구, 레퍼런스 컴파일러, 구문트리 시각화도구, 목적언어 시각화 도구, 로봇제어기, 그리고 로봇시뮬레이터 등의 기능이 있으며, 이클립스 플러그인 기반으로 동작한다. 그리고 제시된 모형을 실제 수업에 적용하여 그 평가결과를 제시한다.
Compiler and language implementation courses have long been recognized as an important subject in Computer Science curricula. It is because not only the knowledge for a compiler plays important roles in understanding programming languages and systems but compiler technologies can be used in many app...
Compiler and language implementation courses have long been recognized as an important subject in Computer Science curricula. It is because not only the knowledge for a compiler plays important roles in understanding programming languages and systems but compiler technologies can be used in many applications. However it requires much effort to teach effectively it due to limited resources and time restriction. We present a compiler teaching model using Edu-IDEC which is a development environment of educational compilers. Edu-IDEC is a tool on the robot platform. It uses the Eclipse plug-ins and has functions like compiler developing tools, a reference compiler, visualization tool of syntax tree, visualization tool of object language, NXT robot controllers, and its simulator. We also present the evaluation results for our model by applying it to an actual class.
Compiler and language implementation courses have long been recognized as an important subject in Computer Science curricula. It is because not only the knowledge for a compiler plays important roles in understanding programming languages and systems but compiler technologies can be used in many applications. However it requires much effort to teach effectively it due to limited resources and time restriction. We present a compiler teaching model using Edu-IDEC which is a development environment of educational compilers. Edu-IDEC is a tool on the robot platform. It uses the Eclipse plug-ins and has functions like compiler developing tools, a reference compiler, visualization tool of syntax tree, visualization tool of object language, NXT robot controllers, and its simulator. We also present the evaluation results for our model by applying it to an actual class.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 Edu-IDEC을 이용한 컴파일러 수업 모형을 제시하고, 이를 실제 수업에 적용한 결과를 제시하였다. 본 논문에서 제시한 수업 모형의 궁극적인 목적은 Edu-IDEC을 이용하여 보다 쉽게 컴파일러를 직접 설계하고 제작함으로서 컴파일러 복잡도에 대한 어려움을 완화하고 학생들의 흥미와 동기 유발을 돕는 것이며, 나아가 컴파일러 구현을 통해서 다양한 응용영역에 대한 적응력을 키우기 위함이다.
본 논문에서는 Edu-IDEC를 활용한 컴파일러 교육 모델을 제시하고, 이를 실제 교육에 적용한 결과를 제시한다.
본 논문에서는 Edu-IDEC을 이용한 컴파일러 수업 모형을 제시하고, 이를 실제 수업에 적용한 결과를 제시하였다. 본 논문에서 제시한 수업 모형의 궁극적인 목적은 Edu-IDEC을 이용하여 보다 쉽게 컴파일러를 직접 설계하고 제작함으로서 컴파일러 복잡도에 대한 어려움을 완화하고 학생들의 흥미와 동기 유발을 돕는 것이며, 나아가 컴파일러 구현을 통해서 다양한 응용영역에 대한 적응력을 키우기 위함이다.
본 논문은 기존의 연구보다 강력한 교육지원 기능을 가지고 있는 Edu-IDEC를 활용한 컴파일러 수업모형을 제시하고, 이를 실제 교육에 적용한 결과를 제시한다.
Java/C 언어 기반의 Chirp언어와 Handy Crickets 이라는 마이크로 컨트롤러를 이용한 컴파일러 교육용 개발환경을 이용한 6주간의 교육과정을 정의하였다. 이 모델의 목적은 고학년에 개설된 과목을 중간학년에서 개설하도록 하여 더 많은 학생이 수강토록 유도하는 것이다. 실제로는 RobotStudio[6]을 수업에 활용한 것으로 볼 수 있다.
이에 우리는 실습 위주의 컴파일러 교과목 운영을 도와주는 컴파일러 개발환경 Edu-IDEC(Educational Integrated Development Environment for Compiler Development)을 개발하였는데, 본 논문에서는 Edu-IDEC를 이용한 컴파일러 수업 모형을 제시하고, 이를 실제수업에 적용하여 그 평가결과를 제시한다. Edu-IDEC에는 레고(LEGO) 마인드스톰 NXT 로봇을 목적시스템으로 하는 레퍼런스 컴파일러, 컴파일러 제작도구, 목적언어 테스트 도구, 코드생성 시각화 도구 등의 기능이 포함되어 있는 통합 개발 환경이다.
제안 방법
Edu-IDEC은 이클립스 기반으로 구현되어 있다. 1주차는 Edu-IDEC을 이클립스 플러그인을 이용하여 실습환경을 구축하고, 목적 시스템인 레고 마인드스톰 NXT 로봇을 작동시키기 위한 USB 드라이버 및 라이브러리를 설치한다. 그리고 이클립스에서 Mini NBC 언어를 이용하여 레고 마인드스톰 NXT 로봇을 통해서 그 결과를 확인하기 위해 목적 언어 테스트 도구의 사용법을 학습한다.
2~3주차는 레퍼런스 컴파일러의 목적 언어인 Mini NBC 언어의 문법을 소개하며, 간단한 Mini NBC 언어를 이용한 프로그래밍 문제를 제공한다. 이때 Mini NBC 코드 뷰어를 통해서 디버깅을 편하게 하며, NXT 제어기를 활용하여, NBC를 사용한 로봇 프로그래밍한 결과를 로봇의 동작으로 확인한다.
수강생은 기본적으로 Java 언어와 이클립스 환경에 대한 선수학습이 이미 이루어진 학생들로 제한하였다. Edu-IDEC을 이용하여 수업을 진행하면서 실제 학생들에게 레퍼런스 컴파일러를 참고하여 새로운 문법기능을 추가 혹은 보완하여 독자적인 컴파일러를 설계하고 제작하도록 하였다. 이에 대한 결과물로서 4개의 보고서(어휘분석기, 구문분석기, 코드생성기, 총괄)와 소스코드를 차례대로 제출토록 하였고, 이를 이용하여 학생들의 프로젝트를 평가하였다.
구문분석기의 출력결과는 구문트리이다. Edu-IDEC의 구문트리 시각화도구를 사용하여 생성된 구문트리의 구조를 확인하고, 구문트리에서 사용되는 Node 클래스를 통하여 트리노드의 구조를 분석하고, CUP을 활용한 구문분석기 소스코드를 분석한다.
CUP의 명세에서 터미널(terminal)과 논터미널(nonterminal)을 정의하고 원시언어의 BNF를 정의한다. 그리고 BNF에서 문법에 대한 액션코드를 정의하여 구문분석기를 생성한다.
이때 Edu-IDEC가 제공하는 JFLEX 편집기를 사용한다. 그리고 레퍼런스 컴파일러의 어휘분석기를 분석하고 그 기능을 확대한 어휘분석기 제작 과제를 수행한다.
1주차는 Edu-IDEC을 이클립스 플러그인을 이용하여 실습환경을 구축하고, 목적 시스템인 레고 마인드스톰 NXT 로봇을 작동시키기 위한 USB 드라이버 및 라이브러리를 설치한다. 그리고 이클립스에서 Mini NBC 언어를 이용하여 레고 마인드스톰 NXT 로봇을 통해서 그 결과를 확인하기 위해 목적 언어 테스트 도구의 사용법을 학습한다.
또 다른 연구로서 Bantam 프로젝트[2]는 한 학기에 컴파일러를 만들 수 있도록 자바 언어의 부분집합인 Bantam Java를 정의하고 이에 대한 컴파일러 개발을 통하여 컴파일러 과목을 학습하는 방법을 제시하였다. 대상 플랫폼을 MIPS와 X86으로 선정하여 교육용 컴파일러를 개발하였으며, 학생에게 컴파일러 개발 매뉴얼을 제공하여 컴파일러 학습에 활용하였다. 학습모형에 관한 내용이 미약하여 구체적인 교육효과에 대하여 알기 어렵다.
마지막 10주차에는 구문트리를 순회하며 코드를 생성하는 알고리즘과 함께 코드 생성기의 소스코드를 분석한다. 이때 코드생성 소스코드를 이해를 돕기 위하여 구문트리 시각화도구를 활용하고, 생성된 코드가 올바른지 확인하기 위하여 NXT 제어기를 활용하여 NXT 로봇을 통해서 컴파일러에 오류가 있는지 확인한다.
본 장에서는 Edu-IDEC 을 이용한 실습 프로젝트 중심의 컴파일러 수업 모형을 제시한다.
이 도구를 활용하여, 컴파일러의 기본 개념을 이해시키고, 한 학기용 컴파일러 개발 프로젝트를 수행하는 데에 필요한 기본적인 컴파일러를 제공하여 학생들이 스스로 그 기능을 재정의 혹은 확대 설계하고 구현할 수 있도록 유도하며, 레고 마인드스톰 NXT 로봇을 목적시스템으로 활용하여 현실감을 높이고, 교육용 컴파일러 개발 프로젝트를 보다 쉽고 편리하게 수행할 수 있는 프로그래밍 환경을 활용하는 학습모형을 제시한다.
2~3주차는 레퍼런스 컴파일러의 목적 언어인 Mini NBC 언어의 문법을 소개하며, 간단한 Mini NBC 언어를 이용한 프로그래밍 문제를 제공한다. 이때 Mini NBC 코드 뷰어를 통해서 디버깅을 편하게 하며, NXT 제어기를 활용하여, NBC를 사용한 로봇 프로그래밍한 결과를 로봇의 동작으로 확인한다.
마지막 10주차에는 구문트리를 순회하며 코드를 생성하는 알고리즘과 함께 코드 생성기의 소스코드를 분석한다. 이때 코드생성 소스코드를 이해를 돕기 위하여 구문트리 시각화도구를 활용하고, 생성된 코드가 올바른지 확인하기 위하여 NXT 제어기를 활용하여 NXT 로봇을 통해서 컴파일러에 오류가 있는지 확인한다.
Edu-IDEC을 이용하여 수업을 진행하면서 실제 학생들에게 레퍼런스 컴파일러를 참고하여 새로운 문법기능을 추가 혹은 보완하여 독자적인 컴파일러를 설계하고 제작하도록 하였다. 이에 대한 결과물로서 4개의 보고서(어휘분석기, 구문분석기, 코드생성기, 총괄)와 소스코드를 차례대로 제출토록 하였고, 이를 이용하여 학생들의 프로젝트를 평가하였다.
4~6주차는 어휘분석기에 대해서 학습한다. 정규 표현식을 소개하고, 어휘분석기 제작도구인 JFLEX의 구조와 명세 방법을 익힌다. 이때 Edu-IDEC가 제공하는 JFLEX 편집기를 사용한다.
구체적인 설문 문항의 내용은 <표 3>과 같다. 편리성, 적절성, 효과성, 만족도에 관한 문항에 덧붙여서 서술형 2문항을 추가하였다. 서술형을 제외한 각 문항은 '절대 아니다' 에 1점, '정말 그렇다'에 5점으로 구성된 5점 Likert 척도로 구성되어 있다.
학생들은 프로젝트를 수행하여 레퍼런스 컴파일러보다 많은 기능을 추가 혹은 보완하여 명세를 만들고 이에 대한 코드를 생성하였다. 그리고 본 모델을 수업에 적용한 결과, Edu-IDEC를 이용한 컴파일러 수업이 매우 효과적인 것으로 평가되었다.
대상 데이터
본 논문에서 제시한 컴파일러 수업모형에 대한 효과를 측정하기 위해 컴퓨터과학과 4학년 '컴파일러 및 프로젝트' 교과목을 수강신청한 학생 15명을 대상으로 설문조사를 실시하였다.
이론/모형
구문분석기는 자바 기반의 파서생성도구인 CUP[9]을 이용해서 구현된다. 구문분석기는 어휘 분석기가 제공하는 토큰을 입력으로 받아 구문트리를 생성한다.
성능/효과
학생들은 프로젝트를 수행하여 레퍼런스 컴파일러보다 많은 기능을 추가 혹은 보완하여 명세를 만들고 이에 대한 코드를 생성하였다. 그리고 본 모델을 수업에 적용한 결과, Edu-IDEC를 이용한 컴파일러 수업이 매우 효과적인 것으로 평가되었다.
문자열을 할당받을 수 있는 변수의 자료형을 제공하기 위해 NBC 배열에 문자열을 받아서 처리하도록 코드를 생성하고 있다. 그리고 이외에도 레퍼런스 컴파일러에는 없는 다양한 기능을 정의하고 제공하고 있음을 확인할 수 있다.
후속연구
Edu-IDEC은 이클립스 플러그인 프레임워크를 기반으로 구현되었기 때문에 확장이 가능하고 배포가 용이하다. 향후 컴파일러 이론을 더 잘 이해할 수 있는 다양한 도구가 개발되어 본 도구에 포함되면 더욱 효과적인 수업환경을 구축할 수 있을 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
RobotStudio는 무엇으로 구성되어 있는가?
RobotStudio는 이클립스(Eclipse) RCP(Rich Client Platform)로 구현된 Cricket 로봇 컨트롤러 기반의 교육용 컴파일러 개발환경이다. RobotStudio는 편집기, 파일관리, 텍스트 출력창 등을 제공하는 GUI 작업환경, 자원관리기, 레퍼런스 컴파일러, 그리고 Cricket 로봇 시뮬레이터로 구성되어 있다. NXT 로봇 환경에 비하여 학생들의 흥미를 쉽게 유도하기 어렵고, 컴파일러 이해를 돕는 지원기능이 미약한 편이다.
RobotStudio의 단점은 무엇인가?
RobotStudio는 편집기, 파일관리, 텍스트 출력창 등을 제공하는 GUI 작업환경, 자원관리기, 레퍼런스 컴파일러, 그리고 Cricket 로봇 시뮬레이터로 구성되어 있다. NXT 로봇 환경에 비하여 학생들의 흥미를 쉽게 유도하기 어렵고, 컴파일러 이해를 돕는 지원기능이 미약한 편이다.
RobotStudio란?
RobotStudio[4]와 Edu-IDEC[5]는 교육용 컴파일러 개발과제를 보다 쉽게 수행할 수 있는 프로 그래밍 환경이다. RobotStudio는 이클립스(Eclipse) RCP(Rich Client Platform)로 구현된 Cricket 로봇 컨트롤러 기반의 교육용 컴파일러 개발환경이다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.