## 3 Proposed ITS and Notation of Road and Traffic Signs  
The system proposed in this paper is intended to facilitate the introduction of programming to university students who are just beginning to program and who lack sufficient knowledge to solve problems through some programming language. Mainly, this situation is linked to the abstraction required to understand the programming concepts that are taught, to the lack of knowledge of the language, or to the difficulty to design and build algorithms [7]. Thus, the proposed ITS integrates the use of metaphors that allow us to reduce this level of abstraction by including analogies between concepts from the real world and aspects of programming, trying to reduce the complexity linked to the task of programming. This analogy establishes a notation with roads and traffic signs that we have called ANGELA, which represents the structure and sentences that compose a program (static visualization), going through the representation by means of a vehicle that goes through its structure, and executing these sentences (dynamic visualization). This metaphor is intended to be motivating and easy to understand, as it includes familiar elements from the daily lives of the students. Thus, a direct analogy is established between the graphic representations in the metaphor and the sentences defined in the Java programming language, whose choice is due not only to the popularity in the professional field, but also in the educational one [38]. The statements defined allowed us to represent graphically the function definition, the condition statement, the loop statement, the expression evaluation, and the function return. In addition, a representation was added to this set for the breakpoints and another one to simulate the execution thread of a program in order to include dynamic visualization mechanisms in the system. It is interesting to note that this set did not distinguish between different types of loops (e.g., while, for, or do-while), as well as with types of conditions (e.g., if-then-else or switch-case), simplifying the construction of the visualizations to a reduced set of graphic elements that were easily understood by the students. Figure 2 shows the set of elements that are part of the notation:  
* Function definition (Figure 2a): It provides information related to the name of the function and its input arguments. This is the first graphic representation with which a full visualization must begin. The arrow of the traffic sign includes the reading direction of the visualization. * Conditional statement (Figure 2b): It provides information related to the condition. This condition will then be used to set the new execution flow that will be followed by the program; if the condition is met, the program will execute its left side, otherwise its right side. * Loop statement (Figure 2c): It provides information about the condition to be met to enter the loop. If the condition is fulfilled, the execution flow will be driven to the right road of the graphic representation, running all the sentences on such side. Otherwise, the execution flow will be driven through the left road. In both cases, the arrows on the road show the direction to be followed. Using a roundabout, we make an analogy with the concept of repetition. * Function return (Figure 2d): It provides information related to the function that is finished including its name and variables to be returned. * Evaluation of expressions (Figure 2e): It provides information related to arbitrary expressions such as assignments, function calls, etc. We use a tunnel to illustrate the evaluation of the expression when the vehicle goes through it. * Breakpoint (Figure 2f): It provides a mechanism to stop the program execution as if it is a debugger. In this case, and with the aim of being integrated with the rest of the metaphor, we use a traffic cone.