D. Pedrosa1, J. Cravino1, L. Morgado2, C. Barreira3, R.R. Nunes4, P. Martins4, H. Paredes4

1Universidade de Trás-os-Montes e Alto Douro; Research Centre “Didactics and Technology in Education of Trainers" (PORTUGAL)
2Universidade Aberta; INESC TEC (PORTUGAL)
3Faculdade de Psicologia e de Ciências da Educação - Universidade de Coimbra (PORTUGAL)
4Universidade de Trás-os-Montes e Alto Douro; INESC TEC (PORTUGAL)
Computer programming courses in higher education tend to have high rates of academic failure and students struggle, particularly so in the transition from entry-level programming to advanced programming. Some of the reasons given in the literature relate to the type of teaching approach and the strategies used by students and their attitudes towards computer programming. The literature also mentions that educational approaches are not always appropriate to the needs of students and to the development of skills required in the job market.
We developed a teaching approach to try to address some of these issues and support students learning computer programming in the transition from entry-level to advanced computer programming: the SimProgramming approach. This approach was introduced at the University of Trás-os-Montes e Alto Douro (Portugal), within the scope of the course “Programming Methodologies III”, part of the second curricular year of the programmes of studies in Informatics Engineering and in Information & Communication Technologies.
We present in detail the origins of the SimProgramming approach, starting from the first trials that introduced, in two iterations, learning activities based on problem-based learning, and up to the third iteration where the current SimProgramming approach was implemented. We describe the reasoning, design and implementation of these three iterations, to show how the approach evolved.
The SimProgramming approach is based in four conceptual foundations: business-like learning environment, self-regulated learning, co-regulated learning and formative assessment. For each of these conceptual foundations, we explain the teaching strategies adopted. In SimProgramming, the learning activity process develops in four phases, and students have specific tasks in each phase.
We analyse interview data regarding student perceptions about the SimProgramming approach, and registration grids data on team work dynamics and final assessment of the assignment, noting the impact of SimProgramming in student grades.
The application of SimProgramming revealed promising evidences in the overall results of student learning in the activities proposed in this approach. The average grades improved, and did the number of students regularly submitting their tasks on schedule. The perceptions of students regarding the SimProgramming approach are very positive: they recommend using it in the following years, and provided some suggestions to improve the approach.
We conclude with reflections and recommendations for subsequent development of the SimProgramming approach in its application to the teaching of computer programming and potential for using it in other educational contexts.