An Exploration Of The Effects Of Enhanced Compiler Error Messages For Computer Programming Novices

Computer programming is an essential skill that all computing students must master and is increasingly important in many diverse disciplines. It is also difficult to learn. One of the many challenges novice programmers face from the start are notoriously cryptic compiler error messages. These report details on errors made by students and are essential as the primary source of information used to rectify those errors. However these difficult to understand messages are often a barrier to progress and a source of discouragement. A high number of student errors, and in particular a high frequency of repeated errors – when a student makes the same error consecutively – have been shown to be indicators of students who are struggling with learning to program. This instrumental case study research investigates the student experience with, and the effects of, software that has been specifically written to help students overcome their challenges with compiler error messages. This software provides help by enhancing error messages, presenting them in a straightforward, informative manner. Two cohorts of first year computing students at an Irish higher education institution participated over two academic years; a control group in 2014-15 that did not experience enhanced error messages, and an intervention group in 2013-14 that did. This thesis lays out a comprehensive view of the student experience starting with a quantitative analysis of the student errors themselves. It then views the students as groups, revealing interesting differences in error profiles. Following this, some individual student profiles and behaviours are investigated. Finally, the student experience is discovered through their own words and opinions by means of a survey that incorporated closed and open-ended questions. In addition to reductions in errors overall, errors per student, and the key metric of repeated error frequency, the intervention group is shown to behave more cohesively with fewer indications of struggling students. A positive learning experience using the software is reported by the students and the lecturer. These results are of interest to educators who have witnessed students struggle with learning to program, and who are looking to help remove the barrier presented by compiler error messages. This work is important for two reasons. First, the effects of error message enhancement have been debated in the literature – this work provides evidence that there can be positive effects. Second, these results should be generalisable at least in part, to other languages, students and institutions.

[1]  Ashok Kumar Veerasamy,et al.  Teaching English Based Programming Courses to English Language Learners / Non-Native Speakers of English , .

[2]  Cornelis H. A. Koster,et al.  Error Reporting, Error Treatment, and Error Correction in Algol Translation - Part 1 , 1972, GI Jahrestagung.

[3]  Michael Kölling,et al.  Meaningful categorisation of novice programmer errors , 2014, 2014 IEEE Frontiers in Education Conference (FIE) Proceedings.

[4]  James B. Fenwick,et al.  Another look at the behaviors of novice programmers , 2009, SIGCSE '09.

[5]  Oliver Mooney,et al.  A study of progression in Irish higher education , 2010 .

[6]  Ben Shneiderman,et al.  Designing computer system messages , 1982, CACM.

[7]  Jesse M. Heines,et al.  Experiences with IDEs and Java teaching: what works and what doesn't , 2003, ITiCSE.

[8]  Matthew C. Jadud,et al.  An exploration of novice compilation behaviour in BlueJ , 2006 .

[9]  Martinha Piteira,et al.  Innovate in your program computer class: an approach based on a serious game , 2011, OSDOC '11.

[10]  Ma. Mercedes T. Rodrigo,et al.  A detector for non-literal Java errors , 2010, Koli Calling.

[11]  Michael Kölling,et al.  Testing object-oriented programs: making it simple , 1997, SIGCSE '97.

[12]  Matthew Hertz,et al.  What do "CS1" and "CS2" mean?: investigating differences in the early courses , 2010, SIGCSE.

[13]  A. T. Chamillard,et al.  Transitioning to Ada in an introductory course for non-majors , 1997, TRI-Ada '97.

[14]  Gordon B. Davis,et al.  A study of errors, error-proneness, and error diagnosis in Cobol , 1976, CACM.

[15]  Joseph Weizenbaum,et al.  A program to teach programming , 1970, CACM.

[16]  Karen Anewalt,et al.  A snapshot of current practices in teaching the introductory programming sequence , 2011, SIGCSE.

[17]  Michael Kölling,et al.  An object-oriented program development environment for the first programming course , 1996, SIGCSE '96.

[18]  P. G. Moulton,et al.  DITRAN—a compiler emphasizing diagnostics , 1967, CACM.

[19]  Robert Chatley,et al.  KenyaEclipse: learning to program in eclipse , 2005, ESEC/FSE-13.

[20]  Richard L. Wexelblat,et al.  Maxims for malfeasant designers, or how to design languages to make programming as difficult as possible , 1976, ICSE '76.

[21]  Elsje Scott,et al.  The Fear Factor: How It Affects Students Learning to Program in a Tertiary Environment , 2010 .

[22]  Simon Dobson,et al.  Java decaffeinated: experiences building a programming language from components , 2000 .

[23]  Mitch Leslie,et al.  Whatever happened to , 2016, IEEE Spectrum.

[24]  David E. Gray,et al.  Doing Research in the Real World , 2004 .

[25]  Jakob Nielsen,et al.  Heuristic Evaluation of Prototypes (individual) , 2022 .

[26]  V. Javier Traver,et al.  On Compiler Error Messages: What They Say and What They Mean , 2010, Adv. Hum. Comput. Interact..

[27]  Bertrand Meyer,et al.  Compiler error messages: what can help novices? , 2008, SIGCSE '08.

[28]  Robert H. Sloan,et al.  CS 0.5: a better approach to introductory computer science for majors , 2008, SIGCSE '08.

[29]  Glenn D. Blank,et al.  A tutoring system for debugging: status report , 2013 .

[30]  Michael Kölling,et al.  The design of an object-oriented environment and language for teaching , 1999 .

[31]  Brad A. Myers,et al.  Usability Issues in the Design of Novice Programming Systems , 1996 .

[32]  Joseph L. Zachary,et al.  Automated feedback on programs means students need less help from teachers , 2001, SIGCSE '01.

[33]  Jim Etheredge CMeRun: program logic debugging courseware for CS1/CS2 students , 2004 .

[34]  Said Hadjerrouit Java as first programming language: a critical evaluation , 1998, SGCS.

[35]  Lewis Elton,et al.  Professional development in higher education , 2002 .

[36]  Robert Cartwright,et al.  Taming Java for the classroom , 2005, SIGCSE '05.

[37]  Judy Kay,et al.  The Neglected Battle Fields of Syntax Errors , 2003, ACE.

[38]  Daan Leijen,et al.  Helium, for learning Haskell , 2003, Haskell '03.

[39]  D. Mertens Research and Evaluation in Education and Psychology: Integrating Diversity with Quantitative, Qualitative, and Mixed Methods , 1997 .

[40]  Arnold Pears,et al.  Students' experiences and attitudes towards learning computer science , 2012, 2012 Frontiers in Education Conference Proceedings.

[41]  Ioana Tuugalei,et al.  Analyses of Student Programming Errors In Java Programming Courses , 2012 .

[42]  Jon Shlens,et al.  A TUTORIAL ON PRINCIPAL COMPONENT ANALYSIS Derivation , Discussion and Singular Value Decomposition , 2003 .

[43]  Gail E. Kaiser,et al.  Backstop: a tool for debugging runtime errors , 2008, SIGCSE '08.

[44]  Matthew C. Jadud A First Look at Novice Compilation Behaviour Using BlueJ , 2005, Comput. Sci. Educ..

[45]  Natalie J. Coull,et al.  SNOOPIE : development of a learning support tool for novice programmers within a conceptual framework , 2008 .

[46]  Michael Kölling,et al.  Blue—a language for teaching object-oriented programming , 1996, SIGCSE '96.

[47]  Robert M. Siegfried,et al.  Whatever Happened to Richard Reid’s List of First Programming Languages? , 2012 .

[48]  Raymond Lister,et al.  Some empirical results for neo-Piagetian reasoning in novice programmers and the relationship to code explanation questions , 2012, ACE 2012.

[49]  Ishbel Duncan,et al.  Emergent Requirements for Supporting Introductory Programming , 2011 .

[50]  Michael Kölling,et al.  Objects First with Java - A Practical Introduction Using BlueJ (5th Edition) , 2002 .

[51]  Daniel M. Germán,et al.  Improving the usability of Eclipse for novice programmers , 2003, eclipse '03.

[52]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

[53]  Robert M. Siegfried,et al.  Will There Ever Be Consensus on CS1? , 2008, FECS.

[54]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[55]  Ronan G. Reilly,et al.  Programming: factors that influence success , 2005, SIGCSE '05.

[56]  Neil Brown,et al.  Investigating novice programming mistakes: educator beliefs vs. student data , 2014, ICER '14.

[57]  J. Jackson,et al.  Identifying Top Java Errors for Novice Programmers , 2005, Proceedings Frontiers in Education 35th Annual Conference.

[58]  Jeff Kramer,et al.  Is abstraction the key to computing? , 2007, CACM.

[59]  Susan L. Graham,et al.  Practical syntactic error recovery in compilers , 1973, POPL.

[60]  Ewan D. Tempero,et al.  All syntax errors are not equal , 2012, ITiCSE '12.

[61]  Robert Cartwright,et al.  A friendly face for Eclipse , 2003, eclipse '03.

[62]  Krishna Agarwal,et al.  Some deficiencies of C++ in teaching CS1 and CS2 , 2003, SIGP.

[63]  Kathi Fisler,et al.  Mind your language: on novices' interactions with error messages , 2011, Onward! 2011.

[64]  Peter C. Rigby,et al.  Study of novice programmers using Eclipse and Gild , 2005, eclipse '05.

[65]  Andrew Luxton-Reilly,et al.  Enhancing syntax error messages appears ineffectual , 2014, ITiCSE '14.

[66]  Xiaosong Li,et al.  Effectively teaching coding standards in programming , 2005, SIGITE '05.

[67]  Robert Cartwright,et al.  DrJava: a lightweight pedagogic environment for Java , 2002, SIGCSE '02.

[68]  B. Young Postpositivism and Educational Research , 2000 .

[69]  Mark Guzdial,et al.  Success in introductory programming: what works? , 2013, CACM.

[70]  Elliot Soloway,et al.  PROUST: Knowledge-Based Program Understanding , 1984, IEEE Transactions on Software Engineering.

[71]  Rebecca T. Mercuri,et al.  Identifying and correcting Java programming errors for introductory computer science students , 2003, SIGCSE.

[72]  Aharon Yadin,et al.  Reducing the dropout rate in an introductory programming course , 2011, INROADS.

[73]  Thomas R. Flowers,et al.  Empowering students and building confidence in novice programmers through Gauntlet , 2004, 34th Annual Frontiers in Education, 2004. FIE 2004..

[74]  Margaret Hamilton,et al.  A taxonomic study of novice programming summative assessment , 2009, ACE '09.

[75]  Andreas Stefik,et al.  An Empirical Investigation into Programming Language Syntax , 2013, TOCE.

[76]  Lynda Thomas,et al.  Learning styles and performance in the introductory programming sequence , 2002, SIGCSE '02.

[77]  Peter J. Brown,et al.  Error messages: the neglected area of the man/machine interface , 1983, CACM.

[78]  Neil Brown,et al.  37 Million Compilations: Investigating Novice Programming Mistakes in Large-Scale Student Data , 2015, SIGCSE.

[79]  David Gries,et al.  What should we teach in an introductory programming course? , 1974, SIGCSE '74.

[80]  Frederick W. B. Li,et al.  Failure rates in introductory programming revisited , 2014, ITiCSE '14.

[81]  Warren Toomey Quantifying The Incidence of Novice Programmers ’ Errors , 2011 .

[82]  André P. Calitz,et al.  The effects of professional and pedagogical program development environments on novice programmer perceptions , 2010, South Afr. Comput. J..

[83]  Meredith Lawley,et al.  The Learning and Productivity Benefits to Student Programmers from Real-World Development Environments , 2012 .

[84]  Neil Brown,et al.  Blackbox: a large scale repository of novice programmers' activity , 2014, SIGCSE.

[85]  Ewan D. Tempero,et al.  CodeWrite: supporting student-driven practice of java , 2011, SIGCSE.

[86]  Kathi Fisler,et al.  Measuring the effectiveness of error messages designed for novice programmers , 2011, SIGCSE.

[87]  Caitlin Kelleher,et al.  Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers , 2005, CSUR.

[88]  Bob Lang Teaching new programmers: a Java tool set as a student teaching aid , 2002, PPPJ/IRE.

[89]  Renee Hobbs,et al.  Conditions of Learning in Novice Programmers , 1986 .

[90]  Robert Cartwright,et al.  Taming a professional IDE for the classroom , 2004, SIGCSE '04.

[91]  Charmain Cilliers,et al.  Jenuity: a lightweight development environment for intermediate level programming courses , 2008, ITiCSE.

[92]  Anne B. Ryan Post-Positivist Approaches to Research , 2006 .

[93]  Lauri Malmi,et al.  A survey of literature on the teaching of introductory programming , 2007, ITiCSE-WGR '07.

[94]  Sudhir Gupta,et al.  Case Studies , 2013, Journal of Clinical Immunology.

[95]  Ásrún Matthíasdóttir,et al.  The novice problem in computer science , 2011, CompSysTech '11.

[96]  Raymond Lister,et al.  Concrete and other neo-Piagetian forms of reasoning in the novice programmer , 2011, ACE 2011.

[97]  Scott R. Klemmer,et al.  What would other programmers do: suggesting solutions to error messages , 2010, CHI.

[98]  Tom Schorsch,et al.  CAP: an automated self-assessment tool to check Pascal programs for syntax, logic and style errors , 1995 .

[99]  John Mason,et al.  Why the high attrition rate for computer science students: some thoughts and observations , 2005, SGCS.

[100]  Ma. Mercedes T. Rodrigo,et al.  Predicting at-risk novice Java programmers through the analysis of online protocols , 2011, ICER.

[101]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[102]  Michael Kölling,et al.  Requirements for a first year object-oriented teaching language , 1995, SIGCSE.

[103]  Jim Etheredge CMeRun: program logic debugging courseware for CS1/CS2 students , 2004, SIGCSE.