Fostering Motivation and Improving Student Performance in an introductory programming course: An Integrated Teaching Approach

Fostering Motivation and Improving Student Performance in an introductory programming course: An Integrated Teaching Approach

Contenido principal del artículo

Oswaldo Solarte Pabón
Liliana Machuca Villegas


This paper expands a teaching proposal presented at the Innovation and Technology in Computer Science Education Conference, in 2016.  The proposal provides an integrated teaching approach for improving students’ performance in a first programming course. The approach is based on four main components: the use of Python as first programming language, project-oriented and problem-based learning, multimedia resources, and assessment rubrics. Material and learning resources for the course development are available on virtual platforms. Our findings suggest that the approach enhanced students’ academic performance, as can be seen in their grades, as well as a decrease in dropout rates.


Los datos de descargas todavía no están disponibles.

Detalles del artículo

Biografía del autor/a (VER)

Oswaldo Solarte Pabón, Universidad del Valle

Profesor Asistente

Escuela de Ingeniería de Sistemas

Facultad de Ingeniería

Liliana Machuca Villegas, Universidad del Valle

Profesora Asistente

Escuela de Ingeniería de Sistemas

Facultad de Ingeniería

Referencias (VER)

Ali, A. and Smith, D. (2014) Teaching an Introductory Programming Language in a General Education Course, Proceedings of the 2008 International Conference on Frontiers in Education: Computer Science and Computer Engineering, FECS 2008, 13, pp. 236–240. Available at:

Alturki, R. (2016). Measuring and improving student performance in an introductory programming course. Informatics in Education, 15(2), 183.

Aris, H. (2015, July). Improving students performance in introductory programming subject: A case study. In Computer Science & Education (ICCSE), 2015 10th International Conference on (pp. 657-662). IEEE.

Bennedsen, J. and Caspersen, M. E. (2007). Failure rates in introductory programming, AcM SIGcSE Bulletin. ACM, 39(2), pp. 32–36.

Chan Mow, I. T. (2008). Issues and difficulties in teaching novice computer programming, Innovative Techniques in Instruction Technology, E-Learning, E-Assessment, and Education, pp. 199–204. doi: 10.1007/978-1-4020-8739-4-36.

Chapman, B. E. et al. (2015). Python as a First Programming Language for Biomedical Scientists, (Scipy), pp. 12–17.

Chien-An L. YU-Tzu L., and Cheng-Chih Wu (2015). ¿Which programming language should students learn first?. International Conference on Learning and Teaching in Computing Engineering, Taiwan.

Echeverría, L., Cobos, R., Machuca, L., and Claros, I. (2017). Using collaborative learning scenarios to teach programming to non-CS majors, Computer Applications in Engineering Education, (November 2016), pp. 719–731. doi: 10.1002/cae.21832.

Enbody R.J., Punch W. (2009) Python CS1 as preparation for C++ CS2. Conference Paper in ACM SIGCSE Bulletin·Chattanooga, Tennessee, USA

Furman B., Wertz E., (2010). A First Course in Computer Programming for Mechanical Engineers. Proceedings of 2010 IEEE/ASME International Conference on Mechatronic and Embedded Systems and Applications Pages 70-75.

Gomes, A. and Mendes, A. (2015). A teacher’s view about introductory programming teaching and learning: Difficulties, strategies and motivations, Proceedings - Frontiers in Education Conference, FIE, 2015–February(February). doi: 10.1109/FIE.2014.7044086.

Guo, P. (2014). Python is now the most popular introductory teaching language at top us universities, BLOG@ CACM, July, p. 47.

Hoffbeck P., Dilon H., Albright., Lu W., Doughty T. (2016) Teaching programming in the context of solving engineering problems. Frontiers in Education Conference (FIE), IEEE. Pennsilvania, USA.

Konecki, M. and Petrlic, M. (2014). Main problems of programming novices and the right course of action, in Central European Conference on Information and Intelligent Systems, p. 116.

Koulouri, T., Lauria, S. and Macredie, R. D. (2014). Teaching Introductory Programming: A Quantitative Evaluation of Different Approaches, Trans. Comput. Educ., 14(4), p. 26:1–26:28. doi: 10.1145/2662412.

Machuca, L. and Solarte Pabón, O. (2016). Improving Student Performance in a First Programming Course, in Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education, p. 367.

Mason, R., Cooper, G. and Raadt, M. De (2012). Trends in Introductory Programming Courses in Australian Universities – Languages, Environments and Pedagogy, 14th Australasian Computing Education Conference, pp. 33–42.

Pears, a et al. (2007). A survey of literature on the teaching of introductory programming, SIGCSE Bulletin, 39(4), pp. 204–223. doi: 10.1080/08993400500150747.

Salcedo, S. L. and Idrobo, A. M. O. (2011). New tools and methodologies for programming languages learning using the scribbler robot and Alice, Proceedings - Frontiers in Education Conference, FIE, pp. 1–6. doi: 10.1109/FIE.2011.6142923.

Soares, A. (2011). Problem based learning in introduction to programming courses, Journal of Computing Sciences in Colleges. Consortium for Computing Sciences in Colleges, 27(1), p. 36.

Stajano, F. (2000). Python in Education: Raising a Generation of Native Speakers, in 'Proceedings of the 8th International Python Conference'

Van Roy P., Armstrong J., Flatt M., and Magnusson (2003). The role of Language Paradigms in Teaching programming. SIGCSE February 19-23, 2003, Reno, Nevada, USA. ACM 1-58113-648-X/03/0002.

Vujošević-Janičić, M. and Tošić, D. (2008). The role of programming paradigms in the first programming courses, The Teaching of Mathematics. Društvo matematičara Srbije, (21), pp. 63–83.

Yadin, A. (2011). Reducing the dropout rate in an introductory programming course, ACM inroads. ACM, 2(4), pp. 71–76.

Zelle, J. M. (1999). Python as a First Programming Language, J. Comput. Sci. Coll., 29(6), pp. 153–154. Available at: