Developing Assessments to Determine Mastery of Programming Fundamentals

Current CS1 learning outcomes are relatively general, specifying tasks such as designing, implementing, testing and debugging programs that use some fundamental programming constructs. These outcomes impact what we teach, our expectations, and our assessments. Although prior work has demonstrated the utility of single concept assessments, most assessments used in formal examinations combine numerous heterogeneous concepts, resulting in complex and difficult tasks. The exclusive use of these traditional assessments results in two major problems. Firstly, teachers who are administering the assessments find it difficult to quantify what students are struggling with. A program that fails to compile or fails to pass test cases provides little information about what a student can successfully achieve. Secondly, it deprives the students of feedback about what they do know and what they can achieve, which we know is one of the most significant factors that influence student learning. Our traditional compound assessment tasks limit the nature and quality of feedback to teachers and students alike, and may contribute to the perceived difficulty and high drop out rates observed in introductory programming courses. This working group aims to decompose existing CS1 learning outcomes into their component parts, and develop assessment items focused on these individual components. We aim to create exemplar assessments that may be used for formative or summative feedback on student understanding of specific components of programming knowledge. Focusing on independent components of programming increases opportunities for students to demonstrate what they can achieve, and may improve diagnosis of student difficulties. It is likely that this project would be of particular relevance to teachers and researchers interested in mastery learning, or those who wish to demonstrate tight coupling between learning outcomes and assessment tasks. It may also be of relevance to teachers and researchers interested in promoting a more positive mindset in the classroom, focusing on what students do know and what they can achieve during a typical CS1 course.

[1]  James Skene,et al.  Introductory programming: examining the exams , 2012, ACE 2012.

[2]  Andrew Luxton-Reilly,et al.  Learning to Program is Easy , 2016, ITiCSE.

[3]  Jorge C. A. de Figueiredo,et al.  Students Satisfaction with Mastery Learning in an Introductory Programming Course , 2014 .

[4]  Brendan McCane,et al.  Mastery Learning in Introductory Programming , 2017, ACE '17.

[5]  Viera K. Proulx,et al.  Programming patterns and design patterns in the introductory computer science course , 2000, SIGCSE '00.

[6]  Anya Tafliovich,et al.  Revisiting why students drop CS1 , 2016, Koli Calling.

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

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

[9]  Mark Guzdial,et al.  Subgoals, Context, and Worked Examples in Learning Computing Problem Solving , 2015, ICER.

[10]  Peter Hubwieser,et al.  Handling Heterogeneity in Programming Courses for Freshmen , 2015, 2015 International Conference on Learning and Teaching in Computing and Engineering.

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

[12]  Otto Jelsma,et al.  Training for reflective expertise: A four-component instructional design model for complex cognitive skills , 1992 .

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

[14]  Jorma Sajaniemi,et al.  A role-based analysis model for the evaluation of novices' programming knowledge development , 2006, ICER '06.

[15]  Peter Hubwieser,et al.  Design and First Results of a Psychometric Test for Measuring Basic Programming Abilities , 2015, WiPSCE.

[16]  Cynthia Taylor,et al.  Computer science concept inventories: past and future , 2014, Comput. Sci. Educ..

[17]  Kate Sanders,et al.  Checklists for grading object-oriented CS1 programs: concepts and misconceptions , 2007, ITiCSE.

[18]  Raymond Lister,et al.  Longitudinal think aloud study of a novice programmer , 2014, ACE.

[19]  Andrew Luxton-Reilly,et al.  The Compound Nature of Novice Programming Assessments , 2017, ACE '17.

[20]  Mark Guzdial,et al.  Replication, Validation, and Use of a Language Independent CS1 Knowledge Assessment , 2016, ICER.

[21]  Daryl J. D'Souza,et al.  Benchmarking Introductory Programming Exams: How and Why , 2016, ITiCSE.

[22]  Juha Sorva,et al.  Visual program simulation in introductory programming education , 2012 .

[23]  Carsten Schulte,et al.  What do teachers teach in introductory programming? , 2006, ICER '06.

[24]  Mordechai Ben-Ari,et al.  Roles of variables in three programming paradigms , 2006, Comput. Sci. Educ..

[25]  Bertrand Meyer,et al.  Object-Oriented Modeling of Object-Oriented Concepts , 2009, ISSEP.

[26]  Philipp Mayring,et al.  Qualitative Content Analysis: Theoretical Background and Procedures , 2015 .

[27]  Daniel Zingaro,et al.  Reviewing CS1 exam question content , 2011, SIGCSE '11.

[28]  Mark Guzdial,et al.  Developing a validated assessment of fundamental CS1 concepts , 2010, SIGCSE.

[29]  Mark Urban-Lurain,et al.  "I do and I understand": mastery model learning for a large non-major course , 1999, SIGCSE.

[30]  James H. Block,et al.  1: Mastery Learning , 1976 .

[31]  Simon,et al.  Soloway's Rainfall Problem Has Become Harder , 2013, 2013 Learning and Teaching in Computing and Engineering.

[32]  Anthony V. Robins,et al.  Learning edge momentum: a new account of outcomes in CS1 , 2010, Comput. Sci. Educ..

[33]  Simon,et al.  Mental models, consistency and programming aptitude , 2008, ACE '08.

[34]  F. Keller "Good-bye, teacher...". , 1968, Journal of applied behavior analysis.

[35]  Robert McCartney,et al.  Can graduating students design software systems? , 2006, SIGCSE '06.

[36]  Anne Venables,et al.  A closer look at tracing, explaining and code writing skills in the novice programmer , 2009, ICER '09.

[37]  Robert McCartney,et al.  Commonsense computing: what students know before we teach (episode 1: sorting) , 2006, ICER '06.

[38]  Ian Douglas Sanders,et al.  Mental models of recursion: investigating students' understanding of recursion , 2010, ITiCSE '10.

[39]  Jens Bennedsen,et al.  Failure rates in introductory programming , 2007, SGCS.

[40]  Raymond Lister,et al.  Geek genes, prior knowledge, stumbling points and learning edge momentum: parts of the one elephant? , 2013, ICER.

[41]  Andrew Luxton-Reilly,et al.  Worked examples in computer science , 2014, ACE.

[42]  Chen-Lin C. Kulik,et al.  Effectiveness of Mastery Learning Programs: A Meta-Analysis , 1990 .

[43]  Mark Guzdial,et al.  The FCS1: a language independent assessment of CS1 knowledge , 2011, SIGCSE.

[44]  Noel LeJeune,et al.  Contract grading with mastery learning in CS 1 , 2010 .

[45]  J. Hattie,et al.  The Power of Feedback , 2007 .

[46]  Benedict du Boulay,et al.  Some Difficulties of Learning to Program , 1986 .

[47]  Heidi L. Eyre,et al.  Keller's Personalized System of Instruction: Was It a Fleeting Fancy or Is There a Revival on the Horizon?. , 2007 .

[48]  Mark Guzdial,et al.  Growing computer science education into a STEM education discipline , 2016, Commun. ACM.

[49]  Raymond Lister,et al.  Relationships between reading, tracing and writing skills in introductory programming , 2008, ICER '08.

[50]  F. Paas,et al.  Instructional control of cognitive load in the training of complex cognitive tasks , 1994 .

[51]  B. Bloom The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring , 1984 .

[52]  Kate Ehrlich,et al.  Tapping into tacit programming knowledge , 1982, CHI '82.

[53]  Nell B. Dale Content and emphasis in CS1 , 2005, SGCS.

[54]  Angela Carbone,et al.  Going SOLO to assess novice programmers , 2008, SIGCSE 2008.

[55]  Raymond Lister,et al.  Not seeing the forest for the trees: novice programmers and the SOLO taxonomy , 2006, ITICSE '06.

[56]  Daryl J. D'Souza,et al.  Benchmarking Introductory Programming Exams: Some Preliminary Results , 2016, ICER.

[57]  Lauri Malmi,et al.  A Review of Generic Program Visualization Systems for Introductory Programming Education , 2013, TOCE.

[58]  J. Sweller COGNITIVE LOAD THEORY, LEARNING DIFFICULTY, AND INSTRUCTIONAL DESIGN , 1994 .

[59]  Pavol Návrat Hierarchies of programming concepts: abstraction, generality, and beyond , 1994, SGCS.

[60]  Stephen H. Edwards,et al.  The Canterbury QuestionBank: building a repository of multiple-choice CS1 and CS2 questions , 2013, ITiCSE -WGR '13.

[61]  Jesse Berlin,et al.  Evidence that computer science grades are not bimodal , 2019, Commun. ACM.

[62]  Robert M. Siegfried,et al.  A Longitudinal Analysis of the Reid List of First Programming Languages , 2016 .

[63]  Charles Kelemen,et al.  A 2007 Model Curriculum For A Liberal Arts Degree In Computer Science , 2007 .

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

[65]  John Sweller,et al.  Cognitive Load During Problem Solving: Effects on Learning , 1988, Cogn. Sci..

[66]  T. Jong Cognitive load theory, educational research, and instructional design: some food for thought , 2010 .

[67]  Amruth N. Kumar Fork diagrams for teaching selection in CS I , 1996, SIGCSE '96.

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

[69]  Petri Ihantola,et al.  Do we know how difficult the rainfall problem is? , 2015, Koli Calling.

[70]  Daniel Zingaro,et al.  Identifying challenging CS1 concepts in a large problem dataset , 2014, SIGCSE.

[71]  Iain Milne,et al.  Difficulties in Learning and Teaching Programming—Views of Students and Tutors , 2002, Education and Information Technologies.

[72]  John R. Anderson,et al.  Student Modeling and Mastery Learning in a Computer-Based Proramming Tutor , 1992, Intelligent Tutoring Systems.

[73]  Rodolfo Azevedo,et al.  Developing a Computer Science Concept Inventory for Introductory Programming , 2016, SIGCSE.

[74]  P. Chandler,et al.  Why Some Material Is Difficult to Learn , 1994 .

[75]  Jacqueline L. Whalley,et al.  How difficult are novice code writing tasks?: a software metrics approach , 2014, ACE.

[76]  Raymond Lister,et al.  Early relational reasoning and the novice programmer: swapping as the hello world of relational reasoning , 2011, ACE 2011.

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

[78]  Cruz Izu,et al.  A Study of Code Design Skills in Novice Programmers using the SOLO taxonomy , 2016, ICER.

[79]  Deborah J. Armstrong The quarks of object-oriented development , 2006, CACM.

[80]  Colleen M. Lewis Exploring variation in students' correct traces of linear recursion , 2014, ICER '14.

[81]  Peter Hubwieser,et al.  The gap between knowledge and ability , 2012, Koli Calling.