A Real-time Monitoring System for Programming Education using a Generator of Program Animation Systems



Similar documents
An Online Automated Scoring System for Java Programming Assignments

Animating Programs and Students in the Laboratory

Error Log Analysis for Improving Educational Materials in C Programming Language Courses

Program Visualization for Programming Education Case of Jeliot 3

PRODUCING AN EDUCATIONALLY EFFECTIVE AND USABLE TOOL FOR LEARNING, THE CASE OF JELIOT FAMILY

Development of an online exam platform for the programming language course: ontology-based approach

A tool to facilitate interactive and collaborative learning of execution flow and code for novice computer science students

Computational Modeling and Simulation for Learning an Automation Concept in Programming Course

Lifting the Hood of the Computer: * Program Animation with the Teaching Machine

Development and Application of a Distance Learning System by Using Virtual Reality Technology

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Self-adaptive e-learning Website for Mathematics

GSPIM: Graphical Visualization Tool for MIPS Assembly

An online Peer-Tutoring Platform for Programming Languages based on Learning Achievement and Teaching Skill

Multi-agent System Learning Support Software with Fighting Games

Semantic Concept Based Retrieval of Software Bug Report with Feedback

Grid Middleware for Realizing Autonomous Resource Sharing: Grid Service Platform

Interactive Information Visualization of Trend Information

VIP, a Visual Interpreter for Learning Introductory Programming with C++

Computer Science Course Descriptions Page 1

HAVING a good mental model of how a

TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION

Pedagogical Use of Tablet PC for Active and Collaborative Learning

Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102

Toward a community enhanced programming education

DEGREE PLAN INSTRUCTIONS FOR COMPUTER ENGINEERING

Technical paper review. Program visualization and explanation for novice C programmers by Matthew Heinsen Egan and Chris McDonald.

Programming Languages

Use of Human Big Data to Help Improve Productivity in Service Businesses

The Development of School Websites Management System and Its Trials during School Field Work in a Distant Place

CURRICULUM VITAE EDUCATION:

METHODOLOGIES FOR STUDIES OF PROGRAM VISUALIZATION

Assessment for Master s Degree Program Fall Spring 2011 Computer Science Dept. Texas A&M University - Commerce

Computer Programming. Course Details An Introduction to Computational Tools. Prof. Mauro Gaspari:

Writing in the Computer Science Major

Chapter 12 Programming Concepts and Languages

CSCI 3136 Principles of Programming Languages

Compiler Construction

Introducing PyLighter: Dynamic Code Highlighter

A TOOL FOR DATA STRUCTURE VISUALIZATION AND USER-DEFINED ALGORITHM ANIMATION

PHP FRAMEWORK FOR DATABASE MANAGEMENT BASED ON MVC PATTERN

ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises

Using Visual Logic with Pseudocode to Teach an Introductory Programming Course

WESTMORELAND COUNTY PUBLIC SCHOOLS Integrated Instructional Pacing Guide and Checklist Computer Math

Distance-Learning Remote Laboratories using LabVIEW

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Tudumi: Information Visualization System for Monitoring and Auditing Computer Logs

AC : MATHEMATICAL MODELING AND SIMULATION US- ING LABVIEW AND LABVIEW MATHSCRIPT

Extend Table Lens for High-Dimensional Data Visualization and Classification Mining

What a Novice Wants: Students Using Program Visualization in Distance Programming Course

Finding Plagiarisms with Evidence in Java Programming Courses

COURSE SYLLABUS EDG 6931: Designing Integrated Media Environments 2 Educational Technology Program University of Florida

Feature Factory: A Crowd Sourced Approach to Variable Discovery From Linked Data

Rethinking the First Year Programming Course

Improving learning outcomes for first year introductory programming students

EPISODE: AN EXTREME PROGRAMMING METHOD FOR INNOVATIVE SOFTWARE BASED ON SYSTEMS DESIGN AND ITS PRACTICAL STUDY

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Function Point Measurement from Java Programs

KS3 Computing Group 1 Programme of Study hours per week

The C Programming Language course syllabus associate level

Toad for Oracle 8.6 SQL Tuning

An Approach to Teaching Introductory-Level Computer Programming

Semantic Analysis: Types and Type Checking

Fig.1 Electoronic whiteboard and programming education system

Students who successfully complete the Health Science Informatics major will be able to:

10CS73:Web Programming

Design and Implementation of Automatic Attendance Check System Using BLE Beacon

Course Descriptions. preparation.

A Case Study of Calculation of Source Code Module Importance

2. Advance Certificate Course in Information Technology

Designing Programming Exercises with Computer Assisted Instruction *

Europass Curriculum Vitae

Plagiarism detection using software tools: a study in a Computer Science degree

Master Degree Project Ideas (Fall 2014) Proposed By Faculty Department of Information Systems College of Computer Sciences and Information Technology

Preventing and Detecting Plagiarism in Programming Course

JAWAA: Easy Web-Based Animation from CS 0 to Advanced CS Courses

Transcription:

12 JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 A Real-time Monitoring System for Programming Education using a Generator of Program Animation Systems Youzou Miyadera Tokyo Gakugei University / Division of Natural Science, 4-1-1,Nukuikita, Koganei, Tokyo 184-8501, Japan Email: miyadera@u-gakugei.ac.jp Kunimi Kurasawa Tokyo Gakugei University / Division of Natural Science, 4-1-1,Nukuikita, Koganei, Tokyo 184-8501, Japan Email: kunimi923@hotmail.com Shoichi Nakamura Fukushima University / Department of Computer Science and Mathematics, Kanayagawa 1, Fukushima 960-1296, Japan Email: nakamura@sss.fukushima-u.ac.jp Nobuyoshi Yonezawa Kogakuin University / Department of Computer Science and Communication Engineering, 2665-1 Nakano, Hachioji, Tokyo 192-0015, Japan Email: ct72058@ns.kogakuin.ac.jp Setsuo Yokoyama Tokyo Gakugei University / Computer Center, 4-1-1, Nukuikita, Koganei, Tokyo 184-8501, Japan Email: yokoyama@u-gakugei.ac.jp Abstract We have developed a meta-system that generates program animation systems. The generated animation systems visually display changes in program actions and help students (novice programmers) understand them. The animation systems also accumulate historical records of the students operations as they execute a program step by step while trying to understand it. By analyzing accumulated records, the meta-system pinpoints common areas of difficulty and their causes for the lecturer. To develop this meta-system, we first analyzed the relation between difficult to understand parts and records of which control operations students applied when using the program animation system. For this analysis, we developed a function enabling the program animation system to record each student s history of operations. Next, we devised a technique to predict which parts of a program would be difficult for students to understand. Finally, we developed a generator of program animation systems based on this technique. Consequently, this meta-system enables lecturers to monitor the classroom learning of students in real-time and provide support to groups of students experiencing common difficulties. Index Terms Program Animation, Programming Education, Learning Situation, Real-time Monitoring I. INTRODUCTION Novice students in university-level computer programming courses often have many problems while doing programming exercises. It can be difficult for students to follow execution processes while tracing sample programs the lecturer presents. In the early stages of programming language courses, lecturers typically provide sample programs to students and explain program actions. Tracing work to execute program source code step by step and to manually change the memory in the computer is indispensable for novice students; however, many find this difficult. Understanding how such programs operate is the foundation of programming language education; therefore, it cannot be taken lightly. One reason novice students have difficulty is that they often cannot understand the correspondence between the source code and the change in memory (Problem 1). Lecturers, on the other hand, have to help students cope with these types of problems, but usually have to instruct large numbers of students within limited amounts

JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 13 of time; therefore, it is difficult for a lecturer to adequately deal with each problem students face (Problem 2). This problem can be alleviated if lecturers can simultaneously communicate with several students struggling with the same problem. Our goal is to solve these two problems. Our approach is based on a belief that a lecturer who can see in realtime where students are experiencing common difficulties in tracing work will be able to simultaneously help all students experiencing them. However, it is difficult to determine in real-time which difficulties students are experiencing, and a lecturer needs ways of doing this. Some research has been done on ways to help lecturers monitor the general level of student understanding during programming exercises [1 8]. For example, methods have been developed to help lecturers understand the tendency of students to make particular errors, monitor the degree of student understanding during lectures, and predict questions likely to be asked during exercises. Real-time learning records were not collected during this research. In contrast, another method enables lecturers to instruct students while reproducing the practice process for them. Yet another system enables lecturers to monitor whether the program of a student is executing, the progress of each student doing a practice problem, and the status of reports students are required to submit. However, these methods do not immediately show the lecturer which difficulties students tend to encounter. Thus, these methods do not provide an understanding of real-time learning situations that enable simultaneous instruction. This is related to Problem 2. Other previous research was aimed at program animation to enhance the understanding of program execution [9 12]. While these studies have led to methods that provide effective support for students, they do not help lecturers monitor the students learning situations in realtime. Therefore, our objective is to develop a real-time support system that enables lecturers to monitor the learning situations of novice students so that they can see which problems students are having during the process of program understanding and the programming exercise. We define a novice student as one who has been studying computer programming for three or fewer months. To achieve our objective, we have developed an add-on function for a program animation system. This function enables lecturers to acquire historical records of each student s control operations and information on where the student has encountered difficulties in understanding; this helps to solve Problems 1 and 2. From the acquired information, the system estimates the points at which students have trouble understanding the actions of a program and notifies the lecturer. Our system thus makes it possible for lecturers to see in real-time the problem tendencies of an entire class and then provide instructions for students experiencing a common difficulty. The system consists of a program animation generator, which automatically generates Java program animation source codes from input C codes, and a system for monitoring students operations. In this paper, we describe the method that allows lecturers to monitor students learning situations in realtime and the system incorporating this method. Section II describes the current condition and problems that arise in programming exercises. Section III proposes a learning situation comprehension method based on program animation systems to deal with problems 1 and 2. Section IV describes the development of a system that incorporates the methods of Section III. II. CURRENT CONDITION AND PROBLEMS IN PROGRAMMING EXERCISES Programming exercises in our university are based on the following learning cycle. Figure 1 shows the concept of the learning cycle. Phase 1. Lecture: The lecturer explains sample programs in during a class. Phase 2. Students understanding the actions of sample programs: In the tracing work, students execute the sample program one line at a time and try to understand the actions. Phase 3. Students developing programs as exercise problems: In the programming exercise, students develop a program as an exercise, which is an application of the sample program. Phase 4. Students writing and submitting reports: Students write a report on the developed program in Phase 3 and submit it to the lecturer. Students then try the other samples and continue to repeat the same phases. This is the programming learning cycle. Unfortunately, there are two problems with this cycle. Figure 1. Programming Learning Cycle. When trying to understand the action of a sample program, novice students often find it difficult to imagine the action as an instructor explains a program by stepping through the code line by line. This is Problem 1. This difficulty is mainly because novice students are unable to anticipate changes in variable values after each source code executes and the changes in controls caused by codes

14 JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 of conditions, repetitions, and loops, which both control the flow of code execution. Moreover, the lecturer not only has to help the students cope with these types of problems but usually also has to instruct a large number of students within a limited time. Therefore, it is difficult for the lecturer to adequately deal with each problem individually. This is Problem 2. If the lecturer can identify the general trend of the students main difficulties in real-time and can simultaneously guide several students experiencing the same difficulties, then these two problems can be eliminated. Our research is aimed at helping lecturers identify the most common problems students experience, which cause novice students difficulties, and provide simultaneous guidance to students experiencing common difficulties. Specifically, we have designed a system that supports students doing tracing work. III. MONITORING A LEARNING SITUATION BASED ON ANALYSIS OF OPERATION HISTORY IN PROGRAM ANIMATION SYSTEMS A. Outline of the method For a lecturer to provide simultaneous real-time guidance to students in need and deal with Problems 1 and 2, he or she has to identify: (1) Where in the sample source code are the common points of difficulty that confuse novice students? We call these difficult points. (2) What are the main reasons for students failing to understand the difficult points. To enable a lecturer to better understand the learning situation, a system has to perform the following procedures. Procedure 1: To identify which points are difficult to understand and the main causes of the students difficulties, a historical learning record is collected in real-time. Procedure 2: The trend of the difficulties novice students encounter is provided to the lecturer so that he or she can help the students. Therefore, we have to collect various learning records in real-time. Then we can focus on using program animation to solve the problems. a program part that is difficult to understand. A system can probably identify which parts are difficult for each student based on a history of the student s use of the program animation system s control operations. We then compared situations where there were various degrees of understanding of a program s actions and the corresponding historical operation records of the students who studied the program, and we tested whether points where the program actions were difficult to understand could be estimated from the operation records. C. Verification of the hypothesis C-1 Outline The purpose of this test was to determine what relation exists between difficult points in understanding program actions and the operation of the program animation system by students whose understanding of the program operation is incomplete. We then examined the method of estimating the difficult points from the historical operation records. We tested the hypothesis stated in Section III-B through the following four procedures. Procedure 1: Students attempted to understand the action of sample programs by using the program animation system. A history of the program animation system s control operations was accumulated. It consisted of student ID, source code ID, the kind of control buttons pushed with their line numbers, and the date & time. Procedure 2: The students completed a questionnaire asking at which points the program actions were difficult to understand. Procedure 3: The questionnaire also asked the students about what situation each operation was used in. Procedure 4: Student tendencies regarding points at which the program action was difficult to understand and the correspondence between these points and the animation system operation records were analyzed using the questionnaire results. B. Program animation system Program animation systems are one of effective ways to enhance the understanding of program action [7 10]. These systems display the changes in the memory corresponding to the execution of a program while tracing it line by line through animation to make it more comprehensible. Furthermore, students can use the control button to enter commands, such as [execute the program], [stop], [back], [step execute], and [change the speed], so that they can go through the operation at a pace suitable for their level of understanding. Therefore, we used program animation systems to collect various learning records. This study is started with a hypothesis that students tend to use certain system operations when they encounter Figure 2. Experimental system interface. For this analysis, we developed an experimental system, shown in Figure 2, which was capable of, at least the

JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 15 necessary support specified in [9 12] with regard to program action understanding. The experimental system was applied to the sample programs used during the test and displayed as animation how the value of the variable changed depending on the source code which was highlighted using a background color. Furthermore, the system had several operation control functions (i.e., [execute the program], [stop], [back], [step execute], and [change the speed]), and enabled acquisition of a historical record of student operations to control the animation system. The other function is just animation of the memory changing in accordance with the line of the source cord. C-2 Verification The operation of the experimental program animation system was explained to 30 novice students in a programming class. After the students had become accustomed to operating the system, we tested our hypothesis given in Section III-B through the procedures stated above. The sample programs were ones to obtain the maximum number from a set, to obtain the greatest common divisor from a set of numbers, and to sort data. Specifically, in the first place, we administered a questionnaire and determined the specific lines difficult to understand in the sample programs. Next, we analyzed the accumulated historical operation record around those difficult lines. We found the following tendencies regarding the relation between the troublesome lines and peculiar behaviors of the operations in our experimental animation system. - Stopping at a difficult point by using the [stop] button. - Going back to a difficult point by using the [back] button. - Step executing at a difficult point by using the [step] button. - Repeating the above operations at difficult points by using the control buttons. - Increasing the execution speed of the program at a line where the action was easy to understand. Thus, the students tended to use the [stop], [back], and [step execution] functions at lines where the program action was difficult to understand. Neither the usual execution nor the speed adjustment functions were used at lines where the program action was difficult to understand. Therefore, it is conceivable that the hypothesis is valid. We next analyzed whether the lines where the program action was difficult to understand coincided with those where the three operations ([stop], [back], and [step execution]) were most often used. The agreement rate refers to the number of operations corresponding to difficult lines divided by the total number of each operation. In other words, the agreement rate is the level of difficulty of understanding of a particular line. The agreement rates are shown in Table I. The high agreement rate for [step execution], indicating that the students used [step execution] to gain a better understanding of the program action, suggests a high probability that this operation will be used at a line where a student finds it difficult to understand the program action. TABLE I. AGREEMENT RATE BETWEEN DIFFICULT TO UNDERSTAND LINES AND OPERATIONS [stop] [back] [step execution] Number of operations corresponding to 235 245 403 difficult points Total number of 312 346 513 operations Agreement rate 0.753 0.708 0.786 D. Degree of difficulty in understanding the program action Students tended to repeat the same line when the program action was difficult to understand. Thus, we tried to determine which lines were difficult to understand based on the agreement rate for each operation. Our estimation method uses the following expression (1), where the degree of difficulty in understanding the action is calculated for each line in order to identify difficult to understand lines. The difficulty in understanding the program action of line j of program i for student S is defined as follows. [Definition] Difficulty in understanding program action The difficulty in understanding the program action of line j in program i for student S (DIFF S ij ) is defined as DIFF S ij = ax ij S + by ij S + czs ij, (1) where a, b, and c are the agreement rates (from Table 1) for the [stop], [back], and [step execution] operations, and Xij S, Y ij S, and ZS ij are the numbers of times each operation was used by student S. // Because each student operated the system to repeat lines where understanding was difficult, we defined that the difficulty in understanding (DIFF) was related to the repetition of the operations for the same line. This means that the difficulty in understanding the program action is high when the operations at the same line are repeated. Therefore, if we can get the number of repetitions of each operation from a program animation system, we will be able to estimate the difficult points (lines of code that are difficult to understand). Next, to verify our definition (DIFF), we calculated the degree of difficulty in understanding for each line using the historical operation records of 10 students who did not take part in the previous test but were in the same year of study, and we compared the previously determined difficult to understand lines with the degree of difficulty in understanding expressed by this group of students. We found that the degree of difficulty in understanding tended to be high for those lines previously classified as difficult to understand. Table II shows one set of evaluation results regarding the relation between a difficult point and the difficulty in

16 JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 understanding. Through this verification, we were able to confirm that our definition was well defined. A difficult to understand line may be in a group of two or more lines that a student repeats with the system to aid understanding. Even so, this is useful information for the lecturer. In addition, an experienced lecturer will probably be able to estimate which line of two or more lines is the source of difficulty. TABLE II. EVALUATION RESULT Line Source code of Difficult difficulty No. a sample program point 0 main(){ 1 int x, y, z; 2 scanf( %d, &x ); 3 scanf( %d, &y ); 4 z = gcd( x, y ); 5 printf( %d, z ); 6 7 int gcd( int a, int b ){ yes 2.504 8 int d; 1.164 9 if ( b == 0 ){ 1.896 10 d=a; 11 else{ 12 d = gcd( b, a%b ); yes 2.896 13 1.112 14 return d; yes 1.112 15 E. Monitoring difficulty in understanding program actions Based on the above evaluation, we used the historical operation record of the program animation system to predict which will be difficult to understand. However, the cause of a student s difficulty in understanding the action cannot be found from only the historical operation record. In such cases, the lecturer can determine the cause by having the student input a cause for the difficult point. We call the cause difficulty information. We therefore collected the following information for inclusion in a real-time historical operation record during Procedure 1 in Section III-C: - Student ID - Source code ID - Line number - Kind of operation ([stop], [back], or [step execution]) - Difficulty information From this information, lines where the action of the sample program is difficult to understand can be identified for each student in real-time, and the cause of the difficulty can be determined. Next, the difficulty in understanding the program action of each line for each student was obtained from the collected historical study records. A table was made that shows the problems all students tend to encounter, and this was presented to the lecturer. Table III shows the design of the table. The sample program is shown in one column of the table, and the degree of difficulty (A) in understanding the program for all students is shown on each row through a color classification code. In addition, the lecturer can obtain the difficulty information (C) from information shown for each line of the sample program. The label (B) in Table III means link-buttons to the difficulty information. The implementation of the table is shown in Figure 10. As a result, the lecturer can see which lines are difficult for students to understand and can directly and simultaneously instruct all students experiencing the difficulty, thus solving problems 1 and 2. TABLE III. DESIGN IMAGE OF THE TABLE Line Source code of (A) (B) (C) No. a sample program 0 main(){ 1 int x, y, z; Difficulty 2 scanf( %d, &x ); Information 3 scanf( %d, &y ); 4 z = gcd( x, y ); 3 * What are the 5 printf( %d, z ); main reasons 6 for students 7 int gcd( int a, int b ){ 2 failing to 8 int d; understand 9 if ( b == 0 ){ the difficult 10 d=a; points. 11 else{ The reasons 12 d = gcd( b, a%b ); 1 * are inputted 13 by students. 14 return d; 4 15 IV. DEVELOPMENT OF A SUPPORT SYSTEM FOR UNDERSTANDING PROGRAM ACTION A. Outline Figure 3 shows the outline of our developed prototype system which incorporates the method proposed in Section III. The system consists of three main parts: (1) A generator of program animation systems (2) Program animation systems with operation history collection (3) Learning situation monitoring. The programming languages and database management system used to implement this system are as follows: - CGI: Perl - Parser: GNU Bison, flex, and C - Program animation generation: Java - Program animation system: Java Swing - Learning situation monitoring: PHP - Database management for animation system and operation histories: MySQL. B. Program animation generation To prepare for a class, a lecturer initially uploads the C source code of a sample program to the server by using the start window shown in Figure 4. Our system receives C source code by using CGI program, and it performs

JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 17 main(){ int x, y, z; scanf( "%d", &x ); scanf( "%d", &y ); z = gcd( x, y ); printf( "%d", z ); int gcd( int a, int b ){ int d; if ( b == 0 ){ d = a; else{ d = gcd( b, a%b ); return d; Figure 5. Input Source Code. Figure 3. Configuration of the system to monitor students understanding of program action. lexical analysis and syntax analysis, constructs a parse tree, and generates intermediate code. The system then generates Java source code for the program animation system, including the operation history collection. The system registers this in the animation database. Figure 4 is a screen shot of the start window. This generator currently targets a primary lecture on C programming for an undergraduate class. Specifically, our targets include standard I/O operations such as printf and scanf, loop controls such as for and while, conditional controls such as if, functions including recursive calls and basic data structures such as simple variables and arrays; however, it does not include structures and pointers. Lecturers can select the sample source code using this window. For example, if a lecturer inputs the sample source code shown in Figure 5, the system generates the intermediate code shown in Figure 6 and then generates the Java source code shown in Figure 7. In Figure 6, the number before @ means an ID of the non-terminal symbol, a negative number means an ID of the terminal symbol, and terms after,,, are tokens representing the input source code. (4@(7@(14@(23@(-259,,,int@)))(52@(59@(54@( -304,,,gcd@))(-274,,,(@)(68@(71@(70@(72@(14 @(23@(-259,,,int@)))(52@(54@(-304,,,a@))))) (-280,,,,@)(72@(14@(23@(-259,,,int@)))(52@( 54@(-304,,,b@))))))(-275,,,)@)))(108@(-276,,,{@)(109@(11@(14@(23@(-259,,,int@)))(18@( 20@(52@(54@(-304,,,d@)))))(-281,,,;@))) (112@(111@(99@(116@(-267,,,if@)(-274,,,(@) (180@(176@(174@(172@(170@(168@(166@(164@( 163@(162@(160@(158@(156@(153@(151@(141@( 132@(128@(-304,,,b@))))))))))(-288,,,==@) (160@(158@(156@(153@(151@(141@(132@(129@( -305,,,0@))))))))))))))))))(-275,,,)@)(97@( 107@(-276,,,{@)(111@(98@(114@(180@(177@( 141@(132@(128@(-304,,,d@))))(179@(-285,,, =@))(176@(174@(172@(170@(168@(166@(164@( 162@(160@(158@(156@(153@(151@(141@(132@( 128@(-304,,,a@)))))))))))))))))))(-281,,, ;@))))(-277,,,@)))(-262,,,else@)(97@(107@ (-276,,,{@)(111@(98@(114@(180@(177@(141@( 132@(128@(-304,,,d@))))(179@(-285,,,=@))( 176@(174@(172@(170@(168@(166@(164@(162@(160@ (158@(156@(153@(151@(141@(135@(132@(128@( -304,,,gcd@)))(-274,,,(@)(140@(139@(176@( 174@(172@(170@(168@(166@(164@(162@(160@( 158@(156@(153@(151@(141@(132@(128@(-304,,, b@))))))))))))))))))(-(-280,,,,@)(176@(174@ (172@(170@(168@(166@(164@(162@(160@(158@( 156@(153@(151@(141@(132@(128@(-304,,,z@)))) ))))))))))))))(-275,,,)@))))))))))))))))) (-281,,,;@))))(-277,,,@)))))(4@(7@(14@(23@( -259,,,int@))) (52@(59@(54@(-304,,,gcd@))( -274,,,(@)(68@(71@(70@(72@(14@(23@(-259,,, int@)))(52@(54@(-304,,,a@))))) Figure 6. Example of Intermediate Code. Figure 4. Start Window. Here, we explain some Java code methods shown in Figure 7. These methods implement program animations. - showline(): The line of the source code, which means the current execution point, is highlighted using a background color. - addvariable(): When a variable is declared, the situation in which the variable is added to the memory area is animated. - judgepanel(): The situation in which the conditional statement is executed and the result is obtained is animated. - move(): The situation in which the value is substituted into the variable is animated. - addfunction(): When a function call appears, the situation in which the function area is added to the memory is animated.

18 JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 public void main ( ) { showline(0); addfunction("main"); showline(1); VariableNode x = new VariableNode("x",2); addvariable(x); VariableNode y = new VariableNode("y",2); addvariable(y); VariableNode z = new VariableNode("z",2); addvariable(z); showline(2); inputvariable( x ); showline(3); inputvariable( y ); showline(4); move( z, gcd ( x.getvalueint(), y.getvalueint() ) ); showline(5); showline(6); int gcd ( int tmp_a, int tmp_b ) { addfunction("gcd"); showline(7); VariableNode a = new VariableNode("a",2); addvariable(a); move( a, tmp_a ); VariableNode b = new VariableNode("b",2); addvariable(b); move( b, tmp_b ); showline(8); VariableNode d = new VariableNode("d",2); addvariable(d); showline(9); if ( judge( b.getvalueint() == 0 ) ) { showline(10); move( d, a.getvalueint() ); else { showline(11); showline(12); move( d, gcd ( b.getvalueint(), a.getvalueint(),b.getvalueint())); showline(13); showline(14); int tmp_d = d.getvalueint(); removefunction(); return tmp_d ; Figure 7. Generated JAVA Code. Moreover, when the student clicks the Quest button, an input window pops up (Figure 9) into which the student can input information regarding the causes of the difficulty (difficulty information) for each difficult line in the program. Figure 8. Program Animation System. Figure 9. Problem information input form. - removefunction(): When a function terminates, the situation in which the function area is released from the memory is animated. The system is implemented by separating the program animation and the execution of the source code. Therefore, the system generates only the Java source code for execution when C source code is input. C. Program animation system with operation history collection As each student tries to understand the program action using the program animation system (Figure 8) in the tracing work, the operation history collection records the operation history and registers it in the operation history database every time the student pushes an operation button. D. Learning situation monitoring Difficult line estimation calculates the difficulty in understanding the program action based on the operation histories of the program animation, as explained in Section III-D. To help the lecturer monitor the learning state, the learning situation monitoring module totals the information concerning each difficult line, collects the difficulty information and provides a summary to the lecturer. Figure 10 shows the user interface of the learning situation presentation. Each row of the table displays a line of the source code. A column indicates which lines each student is likely to find difficult, estimated from the total degree of difficulty for all students. The lines, which show the top ten difficulty values, are color-coded. Therefore, a lecturer can immediately see which lines the

JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 19 students find most difficult and provide supplementary instruction regarding those lines. For the information in Figure 10, for example, the lecturer could provide suggestions to improve the students understanding of the code around line 7, which is the most difficult line. Furthermore, difficulty information, which is input by the students, can be displayed on the right side of the window by clicking a link on each line. lines that the students are having trouble understanding, and provide simultaneous guidance to many students concerning the lines they find difficult. The system can also be used in debugging students programs in Phase 3 of the programming learning cycle. Students can upload their developed source code to the system and then check the program action by watching the program animation. Consequently, this system promises to make programming education for beginners more effective. Our next step will be to evaluate the system through practical trials. ACKNOWLEDGMENT This work was supported in part by the Japan Society for the Promotion of Science under Grant-in-Aid for Scientific Research (B) (No.17300262) and by the Ministry of Education, Culture, Sports, Science and Technology, Japan under Grant-in-Aid for Young Scientists (B) (No.17700599). Figure 10. User interface for learning situation presentation. This support system enables a lecturer to identify the difficult lines of the program and determine the cause of the difficulty for all students in the class. The lecturer can then provide simultaneous guidance to many students regarding the lines they find problematic by basing the priority of the guidance on the appearance frequency of the students difficulties. Here, an actual process of learning using our generator is described. During class time, a lecturer will provide sample programs corresponding to the lecture contents. Students will then try to execute their samples and understand their source codes and corresponding actions. In this step, students can obtain assistance through program animation by simply inputting a sample program into this generator. After that, students try to draw a program by themselves to solve the assigned subject related to the samples. Consequently, Problems 1 and 2 can be solved. Mechanisms to accept student-written programs that include syntax errors should be investigated as future work since trial and error through finding bugs and fixing them is also an important part of the learning process. V. CONCLUSION This paper has described a support system and its implementation for real-time monitoring of students understanding of program actions. This system is aimed at helping lecturers provide simultaneous guidance to novice programming students during classroom exercises. It emphasizes that our real-time monitoring method uses original program animations. The prototype system generates a program animation system and functions for real-time collection and analysis of information on student difficulties. These functions enable a lecturer to monitor the progress of all students in real-time, identify tendencies regarding programming REFERENCES [1] Miyadera, Y., Yaku, T. and Konya, H., Network-Based Programming Language Education Environment Based on AModular Program Diagram, Proc. Int. Conf. Multi Media in Education, IEEE, pp.425-434, 1996. [2] R. Martinez-Unanue, M. Paredes-Velasco, Electronic Books for Programming Education: A Review and Future Prospects, Proc. ITiCSE 02, pp. 34-38, ACM, 2002. [3] Pillay, N., Developing Intelligent Programming Tutors for Novice Programmers, The SIGCSE Bulletin, Vol.35, No.2, pp. 78-82, 2003. [4] Kelleher, C., Pausch, R., Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers, ACM Computing Surveys, Vol.37, No. 2, pp. 83-137, 2005. [5] Chiken,K., Hazeyama, A., Miyadera, Y., A Programming Learning Environment Focusing on Failure Knowledge, J. IEICE in Japan, Vol.J88-D1, No.1, pp.66-75, 2005. [6] Takamoto, A., Fujii, M., Izumi, N. and Tanaka, M, A Support System Based on a Bug Factor for Programming and its Effectiveness, Trans. JSiSE in Japan, Vol.17, No.4, pp.533-540, 2000. [7] Efopoulos, V., Dagdilelis,V., Evangelidis, G. and Satratzemi,M., WIPE: a programming environment for novices, ACM SIGCSE Bulletin, Proc. the 10th annual SIGCSE Conference on Innovation and Technology in Computer Science Education ITiCSE 05, Vol.37, Issue 3, pp.113-117, 2005. [8] Bancroft, P. and Roe, P., Program Annotations: Feedback for Students Learning to Program, Proc. the Eighth Australasian Computing Education Conference (ACE2006), Vol. 52., 2006. [9] Stasko, J. T., A framework and system for algorithm animation, J. IEEE Computer, Vol.23, No.9, pp. 27-39, 1990. [10] Ben-Ari, M., Myller, N., Sutinen, E., Tarhio, J., Perspective on Program Animation with Jeliot, Software Visualization, in LNCS2269, pp.31-45, 2002. [11] Sanders, D., Dom, B., Classroom experience with Jeroo, The Journal of Computing in Small Colleges, Vol.8, pp. 308-316, 2003.

20 JOURNAL OF COMPUTERS, VOL. 2, NO. 3, MAY 2007 [12] Miyadera, Y., Huang, N. and Yokoyama, S., A Programming Language Education System Based on Program Animation, Proc. Education Uses of Information and Communication Technologies, in IFIP 16th World Computer Congress, pp.258-261, 2000. Youzou Miyadera Youzou Miyadera was born in 1962. He received B.Sc., M.Sc. and D.Sc. degrees in sciences and engineering from Tokyo Denki University in 1984, 1986 and 1998, respectively. He was an instructor in the Department of Information Sciences at Tokyo Denki University from April 1986 to March 1997. He has been an associate professor in the Department of Mathematics and Information Science at Tokyo Gakugei University. His current research interests include information visualization, knowledge management, drawing algorithms for trees, programming language education environments, and program analysis. He is a member of the IEEE Computer Society, ACM, the Institute of Electronics, Information and Communication Engineers (IEICE), the Information Processing Society of Japan (IPSJ), The Japanese Society for Artificial Intelligence (JSAI), the Japan Society for Information and Systems in Education (JSiSE), Japan Society for Educational Technology (JSET) and the Japan Society for Software Science and Technology. Shoichi Nakamura Shoichi Nakamura was born in 1975. He received his B.A. degree from Tokyo Gakugei University in 1998. He also received his M.Sc. and D.Sc. degree in computer science and engineering from the University of Aizu in 2000 and 2003, respectively. Until September 2004, he was an assistant professor at Tohoku Gakuin University. Since October 2004, he has been an assistant professor in the Department of Computer Science and Mathematics, Fukushima University. His research interests include knowledge management, information retrieval, information visualization and their application to education. He is a member of IEEE Computer Society, IEICE, IPSJ, JSAI and JSiSE. Nobuyoshi Yonezawa Nobuyoshi Yonezawa was born in 1948. He received B.E., M.E. and D.E. degrees in electrical engineering from the Department of Electronic Engineering at Kogakuin University in 1970, 1972 and 1998, respectively. He is currently a professor of the Department of Computer Science and Communication Engineering at Kogakuin University. His research interests include theory of learning, ICAI, and application of the Internet and multimedia in the field of education. He is a member of IEICE, JPSJ, JSiSE and JSET. Kunimi Kurasawa Kunimi Kurasawa was born in 1981. He received his B.A. and M.Edu. from the Department of Mathematics and Information Science at Tokyo Gakugei University in 2003 and 2005, respectively. He has been an engineer at Hitachi Information Systems from April 2005. He is now engaged in the development of infrastructure software. His current research interests include programming language education environments and program analysis. He is a member of IEICE. Setsuo Yokoyama Setsuo Yokoyama was born in 1945. He received B.Sc, M.Sc and D.Sc degrees in physics from the School of Science and Engineering at Waseda University in 1968, 1970 and 1974, respectively. He became a research assistant at Tokyo Gakugei University in 1974 and was then promoted to associate professor. Currently, he is a professor at the University. He was a visiting scholar at Stanford University, USA, from 1992 to 1993. His research interests include educational technology, especially application of information technology in education. He is a member of the IEICE, IPSJ, JSiSE and JSET.