F. Brito Correia, A. Gomes

Polytechnic Institute of Coimbra/Coimbra Institute of Engineering (PORTUGAL)
It doesn’t matter where you are in the world, learning to program for the first time is usually problematic. There is a well-known concern about low pass rates on introductory programming courses. For some time we have been studying the difficulties associated with this problem paying special attention to the teaching and learning of the first programming subject. There is a wide research about the reasons for this situation. Even though many of the general parameters leading failure in the subject are known we are interested in specific problems students face when they program. So, from 2011/2012 academic years on, we have been registering the type of errors students make when programming. The analysed data was collected during classes and exams. There are several types of errors classifications proposed by different authors. In this paper we will report the diverse type of errors students commit when programming. The errors classification was made in terms of the following categories: syntactic errors, semantic errors and logical errors. Some type of inefficiencies and incompleteness students usually do when try to make a program are also analysed. One of the problems encountered when writing programs is that of preciseness, thus we dedicated some space to analyse the type of inaccuracies that students make. These inaccuracies do not mean mere details missing but sometimes reveal deep misunderstandings. Other type of problems and inabilities students face when try to start to solve a programming problem are also analysed. Some type of tasks involving the development of a correct algorithm can be a significant intellectual challenge for a student; so several factors that can conduct to this type of situations are also analysed. According to the collected and analysed data we give correspondingly recommendations for teachers and students to help to minimize all the detected difficulties. We also give suggestions used by us as teachers about some strategies that have shown positive results in order to surpass or avoid some problems. The results and the analysis presented in the paper suggest that students may engage in surface learning and need different types of approaches in order to better understand computer programming concepts. These aspects will serve to guide future developments in our research.