skip to main content
research-article

A survey of literature on the teaching of introductory programming

Published: 01 December 2007 Publication History

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].

References

[1]
H. Abelson, J. Sussman, and J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, 1984.
[2]
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.
[3]
K. Ala-Mutka. A survey of automated assessment approaches for programming assignments. Computer Science Education, 15(2):83--102, 2005.
[4]
E. Allen, R. Cartwright, and B. Stoler. DrJava: a lightweight pedagogic environment for Java. SIGCSE Bulletin, 34(1):137--141, 2002.
[5]
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.
[6]
J. R. Anderson and E. Skwarecki. The automated tutoring of introductory computer programming. Communications of the ACM, 29(9):842--849, 1986.
[7]
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.
[8]
K. Becker. Back to Pascal: Retro but not backwards. Journal of Computing in Small Colleges, 18(2):17--27, 2002.
[9]
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.
[10]
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.
[11]
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.
[12]
R. Biddle and E. Tempero. Java pitfalls for beginners. SIGCSE Bulletin, 30(2):48--52, 1998.
[13]
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.
[14]
J. Biggs. What the student does: teaching for enhanced learning. Higher Education Research and Development, 18(1):57--75, 1999.
[15]
L. Böszörményi. Why Java is not my favorite first-course language. Software-Concepts & Tools, 19(3):141--145, 1998.
[16]
E. Boyer. Scholarship Reconsidered: Priorities of the Professoriate. Jossey-Bass, Hillsdale, NJ, 1997.
[17]
S. Brilliant and T. Wiseman. The first programming paradigm and language dilemma. SIGCSE Bulletin, 28(1):338--342, 1996.
[18]
B. M. Brosgol. A comparison of Ada and Java as a foundation teaching language. Ada Letters, 18(5):12--38, 1998.
[19]
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.
[20]
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.
[21]
Computing curricula 2005; the overview report, 2005.
[22]
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.
[23]
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.
[24]
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.
[25]
S. Cooper, W. Dann, and R. Pausch. Using animated 3d graphics to prepare novices for CS1. Computer Science Education, 13(1):3--30, 2003.
[26]
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.
[27]
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.
[28]
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.
[29]
P. J. Denning. A debate on teaching computing science. Communications of the ACM, 32:1397--1414, 1989.
[30]
E. Dijkstra. Go To statement considered harmful. Communications of the ACM, 11(3):147--148, 1968.
[31]
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.
[32]
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.
[33]
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.
[34]
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.
[35]
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.
[36]
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.
[37]
M. B. Feldman. Ada experience in the undergraduate curriculum. Communications of the ACM, 35(11):53--67, 1992.
[38]
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.
[39]
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.
[40]
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.
[41]
E. Giangrande, Jr. CS1 programming language options. Journal of Computing in Small Colleges, 22(3):153--160, 2007.
[42]
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.
[43]
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.
[44]
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.
[45]
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.
[46]
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.
[47]
S. Hadjerrouit. Java as first programming language: a critical evaluation. SIGCSE Bulletin, 30(2):43--47, 1998.
[48]
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.
[49]
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.
[50]
C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576--580, 1969.
[51]
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.
[52]
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.
[53]
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.
[54]
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.
[55]
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.
[56]
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.
[57]
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.
[58]
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.
[59]
M. Kölling, B. Quig, A. Patterson, and J. Rosenberg. The BlueJ system and its pedagogy. Computer Science Education, 13, Dec 2003.
[60]
J. Kramer. Is abstraction the key to computing? Communications of the ACM, 50(4):36--42, 2007.
[61]
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.
[62]
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.
[63]
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.
[64]
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.
[65]
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.
[66]
R. P. Mody. C in education and software engineering. SIGCSE Bulletin, 23(3):45--56, 1991.
[67]
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.
[68]
T. L. Naps. JHAVÉ - Supporting Algorithm Visualization. IEEE Computer Graphics and Applications, 25(5):49--55, 2005.
[69]
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.
[70]
D. Palumbo. Programming language/problem-solving research: a review of relevant issues. Review of Educational Research, 60(1):65--89, 1990.
[71]
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.
[72]
R. E. Pattis. Karel the Robot: A Gentle Introduction to the Art of Programming. John Wiley & Sons, Inc., New York, NY, USA, 1981.
[73]
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.
[74]
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.
[75]
N. Pillay. Developing intelligent programming tutors for novice programmers. SIGCSE Bulletin, 35(2):78--82, 2003.
[76]
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.
[77]
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.
[78]
A. Ralston. Fortran and the first course in computer science. SIGCSE Bulletin, 3(4):24--29, 1971.
[79]
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.
[80]
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.
[81]
A. Robins, J. Rountree, and N. Rountree. Learning and teaching programming: a review and discussion. Computer Science Education, 13(2):137--172, 2003.
[82]
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.
[83]
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.
[84]
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.
[85]
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.
[86]
E. Soloway. Learning to program = learning to construct mechanisms and explanations. Communications of the ACM, 29(9):850--858, 1986.
[87]
J. T. Stasko. TANGO: A framework and system for algorithm animation. IEEE Computer, 23(9):27--39, 1990.
[88]
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.
[89]
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.
[90]
L. Stein. What we've swept under the rug: radically rethinking CS1. Computer Science Education, 8(2):118--129, 1998.
[91]
L. Stein. Challenging the computational metaphor: implications for how we think. Cybernetics & Systems, 30(6):473--507, 1999.
[92]
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.
[93]
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.
[94]
K. Trigwell and M. Prosser. Development and use of the approaches to teaching inventory. Educational Psychology Review, 16(4), December 2004.
[95]
K. Trigwell, M. Prosser, and F. Waterhouse. Relations between teachers' approaches to teaching and students' approaches to learning. Higher Education, 37:57--70, 1999.
[96]
P. Tymann, June 2007. http://www.cs.rit.edu/ptt/apac06/Life_After_CS.pdf.
[97]
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.
[98]
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.
[99]
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.
[100]
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.
[101]
A. Zeller and D. Lütkehaus. DDD, a free graphical front-end for UNIX debuggers. SIGPLAN Notices, 31(1):22--27, 1996.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGCSE Bulletin
ACM SIGCSE Bulletin  Volume 39, Issue 4
December 2007
236 pages
ISSN:0097-8418
DOI:10.1145/1345375
Issue’s Table of Contents
  • cover image ACM Other conferences
    ITiCSE-WGR '07: Working group reports on ITiCSE on Innovation and technology in computer science education
    December 2007
    255 pages
    ISBN:9781450378420
    DOI:10.1145/1345443
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 December 2007
Published in SIGCSE Volume 39, Issue 4

Check for updates

Author Tags

  1. bibliography
  2. computing education research
  3. introductory programming
  4. literature survey
  5. teaching

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)239
  • Downloads (Last 6 weeks)23
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media