Enhancing programming logic thinking using analogy mapping

Programming logic thinking is the most important competence for computer science students. However, programming is one of the difficult subject in computer science program. This paper reports our work about enhancing students' programming logic thinking using Analogy Mapping for basic programming subject. Analogy Mapping is a computer application which converts source code into analogies images. This research used time series evaluation and the result showed that Analogy Mapping can enhance students' programming logic thinking.


Introduction
Computer science major students should have the skills to make computer program. Making computer program needs logic thinking to understand the algorithm sequence in order to solve the given problem. Therefore, logic thinking needs to be enhanced in computer science students. There were many researches about how to enhance students' logic thinking in learning programming, for instance, enhancing logical thinking using cooperative learning among Computer Science students [1], learning programming at the computational thinking level using digital game-play [2], algorithmic and logical thinking development based on programming skills [3], enhance logical thinking using RAPTOR (a visual programming development) [4], teaching programming using Scratch [5]. Therefore, this paper proposed our works using Analogy Mapping as media which converts source code in C programming language into analogies images for enhancing students' logical thinking.

Programming Logic Thinking
Computational thinking is a particular approach to solving problems, designing systems and understanding human behaviour that represents the fundamental concepts to computing. Computational thinking is a kind of analytical thinking in many fields [6]. Logic in computational thinking is fundamental to understand about how a computer works because everything in a computer is controlled by logic therefore logic is used to reason about program behavior. Reasoning is the process of determining the conclusions while kind of reasoning performed by humans is also known as intelligent reasoning [7]. Logical reasoning helps humans to explain why something happens.
Logic programming is a particular approach to represent programming. In programming, a logic is a kind of language and it has syntax and semantics. Computations are logic inferences while programs are logic formulas of certain form. Inference rules describe correct ways to determine the conclusions [7]. Therefore, the computer science students need to have programming logic thinking for learning programming as the vital subject in their major.

Analogy Mapping
Analogy Mapping is a computer program which developed using compiler principle for reading source code in C language. This computer program uses CodeMirror library for showing the source code and giving different color for every type of token. This library uses the first process of compiler principle such as  lexical analysis, which gets every token from source code,  syntactic analysis, which gives a label for every token,  semantic analysis, which identifies token as tree and coloring every token. Analogy Mapping converts sequence of token to be analogies images. This process uses state machine principle [8]. The Analogy Mapping interface is shown in figure 1

Minimalism Learning
John Millar Carroll is a scientist who made many researches about computer and interface design documentation. His biggest research is about minimalism documentation which cited by many researches in computer science. He developed minimalism model for system approach [9].
Minimalism model is usually used for people who prefer problem solving than tutorial. John M. Carrol adopted the Nurnberg Funnel that represent minimalism as nine principles and implement the principles into three innovative research projects. The nine principles are as follows [ 8. Developing Optimal Training Designs (developing optimal learning design) 9. Reasoning and Improvising.

Methods
Analogy Mapping is being one menu of an online judge system calling CSPC System. It is used by students for practice, exercise, and evaluation of the basic programming subject and It is a web-based application supported by DOM Judge library [10]. Therefore, students can access the system easily anytime.
The learning process was done using minimalism model approach during time series evaluation milestone. Every evaluation milestone was done as follows: 1. the students did the pre-test using CSPC System, 2. the students got the minimalism explanation about the lesson concept and examples using Analogy Mapping as learning media in the class, this part fulfill the getting started fast principle, 3. the students were given a time duration for practicing to solve the problem, making source code using CSPC System and Analogy Mapping, and get online response to questions, these processes fulfil the rest eight principles of minimalism model, 4. the students did the posttest. Every pre-test and posttest problems was a programming problem solving focused on logic and there are four lesson topics for evaluation. Every lesson topic is shown in table 1.

Evaluation Result
There are 48 first year students and 5 students from other year level in basic programming class. They consist of 13 female students (24.5%) and 40 male students (75.5%). There were 23 students learning basic programming before (43.4%). The most of those students learned basic programming focused on syntax than logic. The basic programming subject in this research was focused on basic programming logic and C languages was a tool for helping the students how making the implementation as a computer program.
The pretest and posttest results in every evaluation are shown in table 2 and 3.   N-Gain or normalized gain was first introduced by Hake as a rough measure of the effectiveness of a course in promoting conceptual understanding. The overall N-Gain [11] is as follows, N-Gain = (71.24057 -2.0377356) / (100 -2.0377356) = 69.2028344 / 97.9622644 = 0.7064234 Therefore, the N-Gain category is high which means that the learning process has high effectively.

Discussion
There were only several students who can do their pretest because the pretest problem focused on programming logic of the lesson topics using C programming language and most of the students did not learn about it before. In the other hand, almost all of the students tried to do their posttest after they learn about programming logic thinking in every lesson topic. The fourth evaluation has the lowest N-Gain because the lesson topic was more complex than the other.

Conclusion
Based on the research result, the N-Gain reaches 0.7, therefore, it shows that the learning process has high effectively for learning basic programming.