Abstract
Three decades of active research on the teaching of introductory programming has had limited effect on classroom practice. Although relevant research exists across several disciplines including education and cognitive science, disciplinary differences have made this material inaccessible to many computing educators. Furthermore, computer science instructors have not had access to a comprehensive survey of research in this area. This paper collects and classifies this literature, identifies important work and mediates it to computing educators and professional bodies.
We identify research that gives well-supported advice to computing academics teaching introductory programming. Limitations and areas of incomplete coverage of existing research efforts are also identified. The analysis applies publication and research quality metrics developed by a previous ITiCSE working group [74].
- H. Abelson, J. Sussman, and J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1984. Google ScholarDigital Library
- T. Ahoniemi and T. Reinikainen. ALOHA - A Grading Tool for Semi-Automatic Assessment of Mass Programming Courses. In Proceedings of the 6th Baltic Sea Conference on Computing Education Research, pages 139--140. Department of Information Technology, Uppsala University, 2006. Google ScholarDigital Library
- K. Ala-Mutka. A survey of automated assessment approaches for programming assignments. Computer Science Education, 15(2):83--102, 2005.Google ScholarCross Ref
- E. Allen, R. Cartwright, and B. Stoler. DrJava: a lightweight pedagogic environment for Java. SIGCSE Bulletin, 34(1):137--141, 2002. Google ScholarDigital Library
- C. Alphonce and B. Martin. Green: a customizable UML class diagram plug-in for Eclipse. In Companion to the 20th annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 168--169. ACM Press, 2005. Google ScholarDigital Library
- J. R. Anderson and E. Skwarecki. The automated tutoring of introductory computer programming. Communications of the ACM, 29(9):842--849, 1986. Google ScholarDigital Library
- B. W. Becker. Teaching CS1 with Karel the Robot in Java. In Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, pages 50--54. ACM Press, 2001. Google ScholarDigital Library
- K. Becker. Back to Pascal: Retro but not backwards. Journal of Computing in Small Colleges, 18(2):17--27, 2002. Google ScholarDigital Library
- M. Ben-Ari. Constructivism in computer science education. In Proceedings of the 29th SIGCSE Technical Symposium on Computer Science Education, pages 257--261. ACM Press, 1998. Google ScholarDigital Library
- J. Bennedsen and M. E. Caspersen. Programming in context: a model-first approach to CS1. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, pages 477--481. ACM Press, 2004. Google ScholarDigital Library
- J. Bergin, J. Roberts, R. Pattis, and M. Stehlik. Karel++: A Gentle Introduction to the Art of Object-Oriented Programming. John Wiley & Sons, Inc., New York, NY, USA, 1996. Google ScholarDigital Library
- R. Biddle and E. Tempero. Java pitfalls for beginners. SIGCSE Bulletin, 30(2):48--52, 1998. Google ScholarDigital Library
- K. Bierre, P. Ventura, A. Phelps, and C. Egert. Motivating OOP by blowing things up: an exercise in cooperation and competition in an introductory Java programming course. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, pages 354--358. ACM Press, 2006. Google ScholarDigital Library
- J. Biggs. What the student does: teaching for enhanced learning. Higher Education Research and Development, 18(1):57--75, 1999.Google ScholarCross Ref
- L. Böszörményi. Why Java is not my favorite first-course language. Software-Concepts & Tools, 19(3):141--145, 1998.Google Scholar
- E. Boyer. Scholarship Reconsidered: Priorities of the Professoriate. Jossey-Bass, Hillsdale, NJ, 1997.Google Scholar
- S. Brilliant and T. Wiseman. The first programming paradigm and language dilemma. SIGCSE Bulletin, 28(1):338--342, 1996. Google ScholarDigital Library
- B. M. Brosgol. A comparison of Ada and Java as a foundation teaching language. Ada Letters, 18(5):12--38, 1998. Google ScholarDigital Library
- D. Buck and D. J. Stucki. JKarelRobot: a case study in supporting levels of cognitive development in the computer science curriculum. In Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, pages 16--20, 2001. Google ScholarDigital Library
- M. C. Carlisle, T. A. Wilson, J. W. Humphries, and S. M. Hadfield. Raptor: introducing programming to non-majors with flowcharts. Journal of Computing in Small Colleges, 19(4):52--60, 2004. Google ScholarDigital Library
- Computing curricula 2005; the overview report, 2005.Google Scholar
- D. Clark, C. MacNish, and G. F. Royle. Java as a teaching language: opportunities, pitfalls and solutions. In Proceedings of the 3rd Australasian Conference on Computer Science Education, pages 173--179, 1998. Google ScholarDigital Library
- R. Close, D. Kopec, and J. Aman. CS1: perspectives on programming languages and the breadth-first approach. In Proceedings of the 5th annual CCSC Northeastern Conference on Computing in Small Colleges, pages 228--234. Consortium for Computing Sciences in Colleges, 2000. Google ScholarDigital Library
- A. Collins, J. Brown, and S. E. Newman. Knowing, learning and instruction: Essays in honour of Robert Glaser, section Cognitive apprenticeship: Teaching the craft of reading, writing and mathematics. Erlbaum, San Francisco, 1989.Google Scholar
- S. Cooper, W. Dann, and R. Pausch. Using animated 3d graphics to prepare novices for CS1. Computer Science Education, 13(1):3--30, 2003.Google ScholarCross Ref
- L. N. de Barros, A. P. dos Santos Mota, K. V. Delgado, and P. M. Matsumoto. A tool for programming learning with pedagogical patterns. In Proceedings of the 2005 OOPSLA Workshop on Eclipse Technology Exchange, pages 125--129. ACM Press, 2005. Google ScholarDigital Library
- M. de Raadt, R. Watson, and M. Toleman. Language Trends in Introductory Programming. In Proceedings of Informing Science and IT Education Conference, pages 329--337. InformingScience.org, June 2002.Google Scholar
- M. de Raadt, R. Watson, and M. Toleman. Introductory programming: what's happening today and will there be any students to teach tomorrow? In Proceedings of the 6th Conference on Australasian Computing Education, pages 277--282. Australian Computer Society, Inc., 2004. Google ScholarDigital Library
- P. J. Denning. A debate on teaching computing science. Communications of the ACM, 32:1397--1414, 1989. Google ScholarDigital Library
- E. Dijkstra. Go To statement considered harmful. Communications of the ACM, 11(3):147--148, 1968. Google ScholarDigital Library
- A. Dingle and C. Zander. Assessing the ripple effect of CS1 language choice. In Proceedings of the 2nd Annual CCSC Computing in Small Colleges Northwestern Conference, pages 85--93. Consortium for Computing Sciences in Colleges, 2000. Google ScholarDigital Library
- C. Douce, D. Livingstone, and J. Orwell. Automatic test-based assessment of programming: a review. ACM Journal of Educational Resources in Computing, 5(3):4, 2005. Google ScholarDigital Library
- A. B. Downey and L. A. Stein. Designing a small-footprint curriculum in computer science. In Proceedings of the 36th Frontiers in Education Conference, pages 21--26. IEEE Computer Society, 2006.Google ScholarCross Ref
- J. Driel, D. Beijaard, and N. Verloop. Professional development and reform in science education: the role of teachers' practical knowledge. Journal of Research in Science Teaching, 38:137--158, 2001.Google ScholarCross Ref
- S. H. Edwards. Improving student performance by evaluating how well students test their own programs. ACM Journal of Educational Resources in Computing, 3(3):1, 2003. Google ScholarDigital Library
- J. English. Automated assessment of GUI programs using JEWL. In Proceedings of the 9th Annual Conference on Innovation and Technology in Computer Science Education, pages 137--141. ACM Press, 2004. Google ScholarDigital Library
- M. B. Feldman. Ada experience in the undergraduate curriculum. Communications of the ACM, 35(11):53--67, 1992. Google ScholarDigital Library
- M. Felleisen, R. B. Findler, M. Flatt, and S. Krishnamurthi. The TeachScheme! Project: computing and programming for every student. Computer Science Education, 14(1):55--77, 2004.Google ScholarCross Ref
- A. Forte and M. Guzdial. Motivation and nonmajors in computer science: identifying discrete audiences for introductory courses. IEEE Transactions on Education, 48(2):248--253, 2005. Google ScholarDigital Library
- U. Fuller, A. Pears, J. Amillo, C. Avram, and L. Mannila. A computing perspective on the Bologna process. SIGCSE Bulletin, 38(4):142--158, December 2006. Google ScholarDigital Library
- E. Giangrande, Jr. CS1 programming language options. Journal of Computing in Small Colleges, 22(3):153--160, 2007. Google ScholarDigital Library
- K. J. Goldman. A concepts-first introduction to computer science. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, pages 432--436. ACM Press, 2004. Google ScholarDigital Library
- T. R. G. Green. Instructions and descriptions: some cognitive aspects of programming and similar activities. In Proceedings of the Working Conference on Advanced Visual Interfaces, pages 21--28. ACM Press, 2000. Google ScholarDigital Library
- T. R. G. Green and M. Petre. Usability analysis of visual programming environments: a 'cognitive dimensions' framework. Journal of Visual Languages and Computing, 7(2):131--174, 1996.Google ScholarCross Ref
- D. Gries. What should we teach in an introductory programming course? In Proceedings of the 4th SIGCSE Technical Symposium on Computer Science Education, pages 81--89. ACM Press, 1974. Google ScholarDigital Library
- P. Gross and K. Powers. Evaluating assessments of novice programming environments. In Proceedings of the First International Workshop on Computing Education Research, pages 99--110. ACM Press, 2005. Google ScholarDigital Library
- S. Hadjerrouit. Java as first programming language: a critical evaluation. SIGCSE Bulletin, 30(2):43--47, 1998. Google ScholarDigital Library
- P. Henriksen and M. Kölling. Greenfoot: combining object visualisation with interaction. In Companion to the 19th annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 73--82. ACM Press, 2004. Google ScholarDigital Library
- C. A. Higgins, G. Gray, P. Symeonidis, and A. Tsintsifas. Automated assessment and experiences of teaching programming. ACM Journal on Educational Resources in Computing, 5(3):5, 2005. Google ScholarDigital Library
- C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576--580, 1969. Google ScholarDigital Library
- E. Howe, M. Thornton, and B. W. Weide. Components-first approaches to CS1/CS2: principles and practice. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, pages 291--295. ACM Press, 2004. Google ScholarDigital Library
- C. Hundhausen, S. Douglas, and J. T. Stasko. A meta-study of algorithm visualization effectiveness. Journal of Visual Languages and Computing, 13(3):259--290, 2002.Google ScholarCross Ref
- C. Hundhausen and S. A. Douglas. SALSA and ALVIS: A language and system for constructing and presenting low fidelity algorithm visualizations. In Proceedings of the IEEE International Symposium on Visual Languages, pages 67--68. IEEE Press, 2000. Google ScholarDigital Library
- J. Jain, I. James H. Cross, T. D. Hendrix, and L. A. Barowski. Experimental evaluation of animated-verifying object viewers for Java. In Proceedings of the 2006 ACM Symposium on Software Visualization, pages 27--36. ACM Press, 2006. Google ScholarDigital Library
- M. Joy, N. Griffiths, and R. Boyatt. The BOSS online submission and assessment system. ACM Journal of Educational Resources in Computing, 5(3):2, 2005. Google ScholarDigital Library
- V. Karavirta, A. Korhonen, L. Malmi, and K. Stålnacke. MatrixPro - A tool for on-the-fly demonstration of data structures and algorithms. In Proceedings of the 3rd Program Visualization Workshop, pages 26--33, The University of Warwick, UK, July 2004.Google Scholar
- C. Kelleher and R. Pausch. Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. ACM Computing Surveys, 37(2):83--137, 2005. Google ScholarDigital Library
- E. B. Koffman. The case for Modula-2 in CS1 and CS2. In Proceedings of the 19th SIGCSE Technical Symposium on Computer Science Education, pages 49--53. ACM Press, 1988. Google ScholarDigital Library
- M. Kölling, B. Quig, A. Patterson, and J. Rosenberg. The BlueJ system and its pedagogy. Computer Science Education, 13, Dec 2003.Google ScholarCross Ref
- J. Kramer. Is abstraction the key to computing? Communications of the ACM, 50(4):36--42, 2007. Google ScholarDigital Library
- L. Malmi, V. Karavirta, A. Korhonen, J. Nikander, O. Seppälä, and P. Silvasti. Visual algorithm simulation exercise system with automatic assessment: TRAKLA2. Informatics in Education, 3(2):267--288, 2004.Google ScholarCross Ref
- L. Mannila, M. Peltomäki, and T. Salakoski. What about a simple language? Analyzing the difficulties in learning to program. Computer Science Education, 16(3):211--227, 2006.Google ScholarCross Ref
- E. Martin, M. Prosser, K. Trigwell, P. Ramsden, and J. Benjamin. What university teachers teach and how they teach it. Intructional Science. Special issue: Teacher Thinking, Beliefs and Knowledge in Higher Education, 28((5--6)):387--412, 2000.Google Scholar
- L. McIver and D. Conway. Seven deadly sins of introductory programming language design. Proceedings of the 1996 International Conference on Software Engineering Education and Practice, pages 309--316, 1996. Google ScholarDigital Library
- J. Meyer and R. Land. Threshold concepts and troublesome knowledge (2): Epistemological considerations and a conceptual framework for teaching and learning. Higher Education, 49(3):725--734, 2003.Google Scholar
- R. P. Mody. C in education and software engineering. SIGCSE Bulletin, 23(3):45--56, 1991. Google ScholarDigital Library
- A. Moreno, N. Myller, E. Sutinen, and M. Ben-Ari. Visualizing programs with Jeliot 3. In Proceedings of the Working Conference on Advanced Visual Interfaces, pages 373--376. ACM Press, 2004. Google ScholarDigital Library
- T. L. Naps. JHAVÉ - Supporting Algorithm Visualization. IEEE Computer Graphics and Applications, 25(5):49--55, 2005. Google ScholarDigital Library
- T. L. Naps, G. Rößling, V. Almstrum, W. Dann, R. Fleischer, C. Hundhausen, A. Korhonen, L. Malmi, M. McNally, S. Rodger, and J. Ángel Velázquez-Iturbide. Exploring the role of visualization and engagement in computer science education. In Working Group Reports from the 2002 Conference on Innovation and Technology in Computer Science Education, pages 131--152. ACM Press, 2002. Google ScholarDigital Library
- D. Palumbo. Programming language/problem-solving research: a review of relevant issues. Review of Educational Research, 60(1):65--89, 1990.Google ScholarCross Ref
- A. Patterson, M. Kölling, and J. Rosenberg. Introducing unit testing with BlueJ. In Proceedings of the 8th Annual Conference on Innovation and Technology in Computer Science Education, pages 11--15. ACM Press, 2003. Google ScholarDigital Library
- R. E. Pattis. Karel the Robot: A Gentle Introduction to the Art of Programming. John Wiley & Sons, Inc., New York, NY, USA, 1981. Google ScholarDigital Library
- R. E. Pattis. The "procedures early" approach in CS 1: a heresy. In Proceedings of the 24th SIGCSE Technical Symposium on Computer Science Education, pages 122--126. ACM Press, 1993. Google ScholarDigital Library
- A. Pears, S. Seidman, C. Eney, P. Kinnunen, and L. Malmi. Constructing a core literature for computing education research. SIGCSE Bulletin, 37(4):152--161, 2005. Google ScholarDigital Library
- N. Pillay. Developing intelligent programming tutors for novice programmers. SIGCSE Bulletin, 35(2):78--82, 2003. Google ScholarDigital Library
- B. A. Price, R. M. Baecker, and I. S. Small. A principled taxonomy of software visualization. Journal of Visual Languages and Computing, 4(3):211--266, 1993.Google ScholarCross Ref
- N. Ragonis and M. Ben-Ari. On understanding the statics and dynamics of object-oriented programs. In Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education, pages 226--230. ACM Press, 2005. Google ScholarDigital Library
- A. Ralston. Fortran and the first course in computer science. SIGCSE Bulletin, 3(4):24--29, 1971. Google ScholarDigital Library
- S. Reges. Back to basics in CS1 and CS2. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, pages 293--297. ACM Press, 2006. Google ScholarDigital Library
- E. S. Roberts. Using C in CS1: evaluating the Stanford experience. In Proceedings of the 24th SIGCSE Technical Symposium on Computer Science Education, pages 117--121. ACM Press, 1993. Google ScholarDigital Library
- A. Robins, J. Rountree, and N. Rountree. Learning and teaching programming: a review and discussion. Computer Science Education, 13(2):137--172, 2003.Google ScholarCross Ref
- H. Roumani. Practice what you preach: full separation of concerns in CS1/CS2. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, pages 491--494. ACM Press, 2006. Google ScholarDigital Library
- R. Saikkonen, L. Malmi, and A. Korhonen. Fully automatic assessment of programming exercises. In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, pages 133--136. ACM Press, 2001. Google ScholarDigital Library
- D. Sanders and B. Dorn. Jeroo: a tool for introducing object-oriented programming. In Proceedings of the 34th SIGCSE Technical Symposium on Computer Science Education, pages 201--204. ACM Press, 2003. Google ScholarDigital Library
- G. M. Schneider. The introductory programming course in computer science: ten principles. In Papers of the 9th SIGCSE/CSA Technical Symposium on Computer Science Education, pages 107--114. ACM Press, 1978. Google ScholarDigital Library
- E. Soloway. Learning to program = learning to construct mechanisms and explanations. Communications of the ACM, 29(9):850--858, 1986. Google ScholarDigital Library
- J. T. Stasko. TANGO: A framework and system for algorithm animation. IEEE Computer, 23(9):27--39, 1990. Google ScholarDigital Library
- J. T. Stasko. Using student-built algorithm animations as learning aids. In The Proceedings of the 28th SIGCSE Technical Symposium on Computer Science Education, pages 25--29. ACM Press, 1997. Google ScholarDigital Library
- J. T. Stasko and E. Kraemer. A methodology for building application-specific visualizations of parallel programs. Journal of Parallel and Distributed Computing, 18(2):258--264, 1993. Google ScholarDigital Library
- L. Stein. What we've swept under the rug: radically rethinking CS1. Computer Science Education, 8(2):118--129, 1998.Google ScholarCross Ref
- L. Stein. Challenging the computational metaphor: implications for how we think. Cybernetics & Systems, 30(6):473--507, 1999.Google Scholar
- C. Stephenson and T. West. Language Choice and Key Concepts in Introductory Computer Science Courses. Journal of Research on Computing in Education, 31(1):89--95, 1998.Google ScholarCross Ref
- M.-A. Storey, D. Damian, J. Michaud, D. Myers, M. Mindel, D. German, M. Sanseverino, and E. Hargreaves. Improving the usability of Eclipse for novice programmers. In Proceedings of the 2003 OOPSLA Workshop on Eclipse Technology Exchange, pages 35--39. ACM Press, 2003. Google ScholarDigital Library
- K. Trigwell and M. Prosser. Development and use of the approaches to teaching inventory. Educational Psychology Review, 16(4), December 2004.Google ScholarCross Ref
- K. Trigwell, M. Prosser, and F. Waterhouse. Relations between teachers' approaches to teaching and students' approaches to learning. Higher Education, 37:57--70, 1999.Google ScholarCross Ref
- P. Tymann, June 2007. http://www.cs.rit.edu/ptt/apac06/Life_After_CS.pdf.Google Scholar
- D. W. Valentine. CS educational research: a meta-analysis of SIGCSE technical symposium proceedings. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, pages 255--259. ACM Press, 2004. Google ScholarDigital Library
- T. Vilner, E. Zur, and J. Gal-Ezer. Fundamental concepts of CS1: procedural vs. object oriented paradigm - a case study. In Proceedings of the 12th Annual Conference on Innovation and Technology in Computer Science Education, pages 171--175. ACM Press, June 2007. Google ScholarDigital Library
- G. Weber and P. Brusilovsky. ELM-ART: An adaptive versatile system for web-based instruction. International Journal of Artificial Intelligence in Education, 12:351--384, 2001.Google Scholar
- S. Xinogalos, M. Satratzemi, and V. Dagdilelis. An introduction to object-oriented programming with a didactic microworld: objectKarel. Computers and Education, 47(2):148--171, 2006. Google ScholarDigital Library
- A. Zeller and D. Lütkehaus. DDD, a free graphical front-end for UNIX debuggers. SIGPLAN Notices, 31(1):22--27, 1996. Google ScholarDigital Library
Index Terms
- A survey of literature on the teaching of introductory programming
Recommendations
Introductory programming: a systematic literature review
ITiCSE 2018 Companion: Proceedings Companion of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science EducationAs computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been ...
A survey of literature on the teaching of introductory programming
ITiCSE-WGR '07: Working group reports on ITiCSE on Innovation and technology in computer science educationThree decades of active research on the teaching of introductory programming has had limited effect on classroom practice. Although relevant research exists across several disciplines including education and cognitive science, disciplinary differences ...
A Survey of Introductory Programming Courses in Ireland
ITiCSE '19: Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science EducationBetween January and April of 2018, a comprehensive survey of introductory programming courses was undertaken across all sectors of Irish third-level institutions (universities, institutes of technology, and private colleges). The survey instrument was ...
Comments