Teaching Introductory Programming: A Quantitative Evaluation of Different Approaches

Teaching programming to beginners is a complex task. In this article, the effects of three factors—choice of programming language, problem-solving training, and the use of formative assessment—on learning to program were investigated. The study adopted an iterative methodological approach carried out across 4 consecutive years. To evaluate the effects of each factor (implemented as a single change in each iteration) on students’ learning performance, the study used quantitative, objective metrics. The findings revealed that using a syntactically simple language (Python) instead of a more complex one (Java) facilitated students’ learning of programming concepts. Moreover, teaching problem solving before programming yielded significant improvements in student performance. These two factors were found to have variable effects on the acquisition of basic programming concepts. Finally, it was observed that effective formative feedback in the context of introductory programming depends on multiple parameters. The article discusses the implications of these findings, identifies avenues for further research, and argues for the importance of studies in computer science education anchored on sound research methodologies to produce generalizable results.

[1]  Tapio Salakoski,et al.  Why complicate things?: introducing programming in high school using Python , 2006 .

[2]  T. Reeves Can Educational Research Be Both Rigorous and Relevant , 2011 .

[3]  R. Slavin A Reader's Guide to Scientifically Based Research. , 2003 .

[4]  Christine Shannon Another breadth-first approach to CS I using python , 2003, SIGCSE.

[5]  Marc Roper,et al.  Investigating the viability of mental models held by novice programmers , 2007, SIGCSE.

[6]  P. Black,et al.  Assessment and Classroom Learning , 1998 .

[7]  Quintin I. Cutts,et al.  Experience report: peer instruction in introductory computing , 2010, SIGCSE.

[8]  John R. Johnson,et al.  Can computer programming improve problem-solving ability? , 1990, SGCS.

[9]  Jenny Edwards,et al.  The teaching of novice computer programmers: bringing the scholarly-research approach to Australia , 2008, ACE '08.

[10]  Mary Goodwin,et al.  Testing skills and knowledge: introducing a laboratory exam in CS1 , 2002, SIGCSE.

[11]  C. Rust The Impact of Assessment on Student Learning , 2002 .

[12]  ShannonChristine Another breadth-first approach to CS I using python , 2003 .

[13]  T. Lillis,et al.  Student Writing in Higher Education: Contemporary confusion, traditional concerns , 2001 .

[14]  R. Moreno Decreasing Cognitive Load for Novice Students: Effects of Explanatory versus Corrective Feedback in Discovery-Based Multimedia , 2004 .

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

[16]  James C. Spohrer,et al.  Cognitive Consequences of Programming Instruction , 2013 .

[17]  Roland N. Ibbett,et al.  Grand Challenges in Computing: Education - A Summary , 2005, Comput. J..

[18]  Lauri Malmi,et al.  Values and Objectives in Computing Education Research , 2009, TOCE.

[19]  Mariana Lilley,et al.  Students' perceived usefulness of formative feedback for a computer-adaptive test , 2007 .

[20]  Janine Rogalski,et al.  Acquisition of Programming Knowledge and Skills , 1990 .

[21]  L. Stenhouse An introduction to curriculum research and development , 1975 .

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

[23]  Stephen Bostock,et al.  Motivation and electronic assessment , 2004 .

[24]  Janet Carter,et al.  Teaching Delivery Issues: Lessons from Computer Science , 2002, J. Inf. Technol. Educ..

[25]  Charles E. McDowell,et al.  The impact of pair programming on student performance, perception and persistence , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[26]  D. Janaki Ram,et al.  Identification of Cognitive Processes of Effective and Ineffective Students During Computer Programming , 2010, TOCE.

[27]  A. T. Chamillard,et al.  Evaluating programming ability in an introductory computer science course , 2000, SIGCSE '00.

[28]  Cynthia Bailey Lee,et al.  Experience report: CS1 in MATLAB for non-majors, with media computation and peer instruction , 2013, SIGCSE '13.

[29]  Carsten Schulte,et al.  Empirical comparison of objects-first and objects-later , 2009, ICER '09.

[30]  Mary Beth Rosson,et al.  Orientation of Undergraduates Toward Careers in the Computer and Information Sciences: Gender, Self-Efficacy and Social Support , 2011, TOCE.

[31]  Yvonna S. Lincoln,et al.  The landscape of qualitative research: theories and issues Sage The landscape of qualitative research: theories and issues 480 £24.95 0761926941 0761926941 [Formula: see text]. , 2004, Nurse researcher.

[32]  Tapio Salakoski,et al.  What about a simple language? Analyzing the difficulties in learning to program , 2006, Comput. Sci. Educ..

[33]  Olly Gotel,et al.  A Motivation Guided Holistic Rehabilitation of the First Programming Course , 2011, TOCE.

[34]  D OldhamJoseph What happens after Python in CS1 , 2005 .

[35]  David B. Palumbo,et al.  Programming Language/Problem-Solving Research: A Review of Relevant Issues , 1990 .

[36]  Elaine Harries Jenkins,et al.  From both sides of the table: the role of the Quality Assurance Agency for Higher Education , 2015 .

[37]  M. Weaver,et al.  Do students value feedback? Student perceptions of tutors’ written responses , 2006 .

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

[39]  Tim Wahls,et al.  The Case for Pair Programming in the Computer Science Classroom , 2011, TOCE.

[40]  Peter Dorman Values and Objectives , 2014 .

[41]  Linda McIver,et al.  Research Agenda for Computer Science Education , 2001, PPIG.

[42]  Leland L. Beck,et al.  Cooperative learning instructional methods for CS1: Design, implementation, and evaluation , 2013, TOCE.

[43]  Anders Berglund,et al.  Qualitative Research Projects in Computing Education Research: An Overview. , 2006 .

[44]  Ela Zur,et al.  Fundamental concepts of CS1: procedural vs. object oriented paradigm - a case study , 2007, ITiCSE '07.

[45]  Alastair Irons,et al.  Effective Learning and Teaching in Computing , 2004 .

[46]  Michael H. Goldwasser,et al.  Teaching object-oriented programming in python , 2007, ITiCSE '07.

[47]  CaliffMary Elaine,et al.  Testing skills and knowledge , 2002 .

[48]  Stuart Reges,et al.  Back to basics in CS1 and CS2 , 2006, SIGCSE '06.

[49]  Michael H. Goldwasser,et al.  Using Python To Teach Object-Oriented Programming in CS1 , 2008 .

[50]  Holly Patterson-McNeill Experience: from C++ to Python in 3 easy steps , 2006 .

[51]  Michael Kölling,et al.  The Problem of Teaching Object-Oriented Programming, Part I: Languages , 1999, J. Object Oriented Program..

[52]  Valsa Koshy,et al.  Action Research for Improving Educational Practice: A Step-by-Step Guide , 2009 .

[53]  A Agresti,et al.  Modeling a Categorical Variable Allowing Arbitrarily Many Category Choices , 1999, Biometrics.

[54]  Jens Bennedsen,et al.  Assessing Process and Product , 2007 .

[55]  Allan Collins,et al.  Design Research: Theoretical and Methodological Issues , 2004 .

[56]  Allan Collins,et al.  Toward a Design Science of Education , 1992 .

[57]  Quintin I. Cutts,et al.  Experience report: a multi-classroom report on the value of peer instruction , 2011, ITiCSE '11.

[58]  MaLinxiao,et al.  Investigating the viability of mental models held by novice programmers , 2007 .

[59]  H SloanRobert,et al.  CS 0.5 , 2008 .

[60]  GuzdialMark,et al.  A multi-national, multi-institutional study of assessment of programming skills of first-year CS students , 2001 .

[61]  M. Emre Celebi,et al.  Python puts a squeeze on java for CS0 and beyond , 2008 .

[62]  B DowneyAllen Python as a first language , 2007 .

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

[64]  Erkki Sutinen,et al.  A Methodological Review of Computer Science Education Research , 2008, J. Inf. Technol. Educ..

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

[66]  Kim B. Bruce Controversy on how to teach CS 1: a discussion on the SIGCSE-members mailing list , 2004, ACM SIGCSE Bull..

[67]  R. Higgins,et al.  The Conscientious Consumer: Reconsidering the role of assessment feedback in student learning , 2002 .

[68]  John Stamey,et al.  A boot camp approach to learning programming in a CS0 course , 2010 .

[69]  John Waldron,et al.  Assessing the assessment of programming ability , 2004, SIGCSE '04.

[70]  R Core Team,et al.  R: A language and environment for statistical computing. , 2014 .

[71]  John R. Anderson,et al.  Locus of feedback control in computer-based tutoring: impact on learning rate, achievement and attitudes , 2001, CHI.

[72]  Jens Bennedsen,et al.  Assessing Process and Product - A Practical Lab Exam for an Introductory Programming Course , 2006, Proceedings. Frontiers in Education. 36th Annual Conference.

[73]  Linda Mannila,et al.  An objective comparison of languages for teaching introductory programming , 2006, Baltic Sea '06.

[74]  Atanas Radenski "Python first": a lab-based digital introduction to computer science , 2006, ITICSE '06.

[75]  J. Atkinson The landscape of qualitative research: theories and issuesSage The landscape of qualitative research: theories and issues 480 £24.95 0761926941 0761926941 , 2004 .

[76]  P. Campbell How to Solve It: A New Aspect of Mathematical Method , 2005 .

[77]  Laurie A. Williams,et al.  Voices of women in a software engineering course: reflections on collaboration , 2004, JERC.

[78]  V. Shute Focus on Formative Feedback , 2007 .

[79]  Ewan D. Tempero,et al.  Understanding the syntax barrier for novices , 2011, ITiCSE '11.

[80]  Alastair Irons,et al.  An investigation into the impact of formative feedback on the student learning experience , 2010 .

[81]  Hukuk No Child Left Behind Act , 2010 .

[82]  Rance D. Necaise Transitioning from Java to Python in CS2 , 2008 .

[83]  Richard E. Mayer,et al.  Teaching and Learning Computer Programming : Multiple Research Perspectives , 1988 .

[84]  Jussi Kasurinen,et al.  Lower dropout rates and better grades through revised course infrastructure , 2007 .

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

[86]  Gary Hill,et al.  Robots in problem solving in programming , 2007 .

[87]  Sook Ning Chua Just Tell Me What to Do , 2015 .

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

[89]  Enrique Castro,et al.  Teaching Experiments within Design Research , 2007 .

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

[91]  Bradley N. Miller,et al.  Freedom to succeed: a three course introductory sequence using Python and Java , 2006 .

[92]  Abbie Brown,et al.  Design experiments: Theoretical and methodological challenges in creating complex interventions in c , 1992 .

[93]  Samuel N. Kamin,et al.  Scavenger hunt: computer science retention through orientation , 2006, SIGCSE '06.

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

[95]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .