In-class coding-based summative assessments: tools, challenges, and experience

Pencil-and-paper coding questions on computer science exams are unrealistic: real developers work at a keyboard with extensive resources at hand, rather than on paper with few or no notes. We address the challenge of administering a proctored exam in which students must write code that passes instructor-provided test cases as well as writing test cases of their own. The exam environment allows students broad access to Internet resources they would use for take-home programming assignments, while blocking their ability to use that facility for direct communication with colluders. Our system supports cumulative questions (in which later parts depend on correctly answering earlier parts) by allowing the test-taker to reveal one or more hints by sacrificing partial credit for the question. Autograders built into the exam environment provide immediate feedback to the student on their exam grade. In case of grade disputes, a virtual machine image reflecting all of the student's work is preserved for later inspection. While elements of our scheme have appeared in the literature (autograding, semi-locked-down computer environments for exam-taking, hint "purchasing"), we believe we are the first to combine them into a system that enables realistic in-class coding-based exams with broad Internet access. We report on lessons and experience creating and administering such an exam, including autograding-related pitfalls for high-stakes exams, and invite others to use and improve on our tools and methods.

[1]  David A. Patterson,et al.  MAGIC: Massive Automated Grading in the Cloud , 2015, CHANGEE/WAPLA/HybridEd@EC-TEL.

[2]  Petri Ihantola,et al.  Mutation analysis vs. code coverage in automated assessment of students' testing skills , 2010, SPLASH/OOPSLA Companion.

[3]  Craig Zilles,et al.  Computerized Testing: A Vision and Initial Experiences , 2015 .

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

[5]  Luciano Baresi,et al.  An Introduction to Software Testing , 2006, FoVMT.

[6]  A. Jefferson Offutt,et al.  Introduction to Software Testing , 2008 .

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

[8]  Chris Gregg,et al.  BlueBook: A Computerized Replacement for Paper Tests in Computer Science , 2018, SIGCSE.

[9]  Craig B. Zilles,et al.  Do Performance Trends Suggest Wide-spread Collaborative Cheating on Asynchronous Exams? , 2017, L@S.

[10]  Alexander G. Hauptmann,et al.  Massive Open Online Proctor: Protecting the Credibility of MOOCs certificates , 2015, CSCW.

[11]  Bertrand Meyer,et al.  An Incremental Hint System For Automated Programming Assignments , 2015, ITiCSE.

[12]  Susan Bergin,et al.  Automated assessment in CS1 , 2006 .

[13]  Cornelis A.W. Glas,et al.  Computerized adaptive testing : theory and practice , 2000 .

[14]  John DeNero,et al.  Fuzz Testing Projects in Massive Courses , 2016, L@S.