D. Freire-Obregón, M. Castrillón-Santana, A.C. Domínguez-Brito

SIANI-Universidad de Las Palmas de Gran Canaria (SPAIN)
Nowadays, computer science programming is a basic subject for obtaining any engineering degree. Three main features characterize the profile of these students: creative, application-orientation, and technical. Thus, when we are teaching programming, at first the level is so basic that students come into the class knowing a bit about programming. Inevitably, most of these students do great in the first few weeks only to fall further and further behind as the course go on. The reason of this is that they went too fast through the introductory part of the course, thinking they knew it all and getting self confidence about what they understood but they rarely associated what they knew to what they had to learn. Perhaps, the most important skill for programming is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. Thus, we distinguish two different goals for programming: problem solving and language structure. The solving problem combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer programs use formal languages to denote ideas. Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems. On the other hand, the language structure refers to the events that happen during this process of learning to program. The student needs to develop different skills such as the syntax, the semantics and he pragmatics of the programming language. Syntax refers to the ways symbols may be combined to create well-formed sentences in the language, while Semantics reveals the meaning of syntactically valid strings in a language. On the other hand, pragmatics alludes to those aspects of language that involve the users of the language; it includes issues such as ease of implementation and programming methodology. Syntax must be specified prior to semantics since meaning can be given only to correctly formed expressions in a language. Similarly, semantics needs to be formulated before considering the issues of pragmatics, since interaction with human users can be considered only for expressions whose meaning is understood. In the current text, we are primarily concerned about the syntax. The goal of this paper is to present a new technique for helping students to develop structure programming skills during their learning process. Due to our experience evaluating programming skills, we have realized that almost a 28% of exam’s programming mistakes are caused because of misplacing programming structures. We strongly believe that helping our students to build some syntax puzzles of solved algorithms could help them to develop a spatial programming learning in order to achieve better results by getting familiar to these structures. Our application can read algorithms and divide them into different pieces. The students must drag the pieces and drop them in a correct way. By doing this, they are developing the spatial way to organize an algorithm when they are programming. It is important to bear in mind that they are not starting the algorithm from zero. Having all the pieces, they must think how the pieces fill correctly based on the information contained inside each piece.