Computer Programming: Fail Fast to Learn Sooner

  • Miguel A. Brito
  • Filipe de Sá-Soares
Part of the Communications in Computer and Information Science book series (CCIS, volume 73)


Computer programming is not only to know about the languages or the processes, it is essentially to know how to do it. This involves a constructivist approach in learning. For a newbie in computer programming it is hard to understand the difference between know-about disciplines and the know-how-to-do-it ones. This leads to failure because when they understand they aren’t able to solve a programming problem it is usually too late to catch all the time meanwhile lost. Our solution is to get them to fail soon enough. This way they still have time to recover from an eventually bad start.

For an average student to realize a failure it is required a failed examination. This is the fourth year we are adopting automated weekly tests for fast failure and consequent motivation for study, in the university first year discipline of computer programming fundamentals. The results are convincing.


programming education learning and teaching computer programming to novice students constructivism 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Robins, A., Rountree, J., Rountree, N.: Learning and Teaching Programming: A Review and Discussion. Computer Science Education 13(2), 137–172 (2003)CrossRefGoogle Scholar
  2. 2.
    Cook, W.R.: High-level problems in teaching undergraduate programming languages. SIGPLAN Not. 43(11), 55–58 (2008)CrossRefGoogle Scholar
  3. 3.
    Duke, R., et al.: Teaching programming to beginners - choosing the language is just the first step. In: Proceedings of the Australasian conference on Computing education. ACM, Melbourne (2000)Google Scholar
  4. 4.
    Teague, D., Roe, P.: Collaborative learning: towards a solution for novice programmers. In: Proceedings of the tenth conference on Australasian computing education, vol. 78. Australian Computer Society, Inc., Wollongong (2008)Google Scholar
  5. 5.
    Winslow, L.E.: Programming pedagogy – a psychological overview. SIGCSE Bull. 28(3), 17–22 (1996)CrossRefGoogle Scholar
  6. 6.
    Spohrer, J.C., Soloway, E.: Novice mistakes: Are the folk wisdoms correct? Commun. ACM 29(7), 624–632 (1986)CrossRefGoogle Scholar
  7. 7.
    Jenkins, T.: On the Difficulty of Learning to Program. In: 3rd annual Conference of LTSN-ICS (2002)Google Scholar
  8. 8.
    Gomes, A., Mendes, A.J.: Learning to program - difficulties and solutions. In: International Conference on Engineering Education – ICEE 2007, Coimbra, Portugal (2007)Google Scholar
  9. 9.
    Kolb, D., Fry, R.: Toward an applied theory of experiential learning. In: Cooper, C. (ed.) Theories of Group Process. John Wiley, London (1975)Google Scholar
  10. 10.
    Steffe, L.P., Gale, J. (eds.): Constructivism in Education. Lawrence Erlbaum Associates, Hillsdale (1995)Google Scholar
  11. 11.
    Ben-Ari, M.: Constructivism in computer science education. SIGCSE Bull. 30(1), 257–261 (1998)CrossRefGoogle Scholar
  12. 12.
    Hadjerrouit, S.: Constructivism as guiding philosophy for software engineering education. SIGCSE Bull. 37(4), 45–49 (2005)CrossRefGoogle Scholar
  13. 13.
    Wulf, T.: Constructivist approaches for teaching computer programming. In: Proceedings of the 6th conference on Information technology education, ACM, Newwark (2005)Google Scholar
  14. 14.
    Lui, A.K., et al.: Saving weak programming students: applying constructivism in a first programming course. SIGCSE Bull. 36(2), 72–76 (2004)CrossRefGoogle Scholar
  15. 15.
    Ranjeeth, S., Naidoo, R.: An Investigation Into the Relationship between the Level of Cognitive Maturity and the Types of Errors Made by Students in a Computer Programming Course. College Teaching Methods & Styles Journal 3(2), 31–40 (2007)CrossRefGoogle Scholar
  16. 16.
    Lahtinen, E., Ala-Mutka, K., Järvinen, H.-M.: A study of the difficulties of novice programmers. In: Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education. ACM, Caparica (2005)Google Scholar
  17. 17.
    Becker, D.A., Devine, M.: Automated assessments and student learning. Int. J. Learn. Technol. 3(1), 5–17 (2007)CrossRefGoogle Scholar
  18. 18.
    Milne, I., Rowe, G.: Difficulties in Learning and Teaching Programming—Views of Students and Tutors. Education and Information Technologies 7(1), 55–66 (2002)CrossRefGoogle Scholar
  19. 19.
    Lister, R., Leaney, J.: Introductory programming, criterion-referencing, and Bloom. In: Proceedings of the 34th SIGCSE technical symposium on computer science education. ACM, Reno (2003)Google Scholar
  20. 20.
    Costello, F.J.: Web-based Electronic Annotation and Rapid Feedback for Computer Science Programming Exercises. In: O’Neill, G., Huntley-Moore, S., Race, P. (eds.) Case Studies of Good Practices in Assessment of Student Learning in Higher Education, Dublin, pp. 61–63 (2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Miguel A. Brito
    • 1
  • Filipe de Sá-Soares
    • 1
  1. 1.Department of Information SystemsUniversity of MinhoGuimarãesPortugal

Personalised recommendations