Applying Gamification to Motivate Students to Write High-Quality Code in Programming Assignments

Background: Traditional programming education focuses on training students' ability to write correct code that meets the specifications in programming assignments. In addition to correctness, software engineering studies argue that code quality is important. Problem: Nurturing students' ability to write high-quality code in programming assignments is difficult due to two main reasons. (1) Considering code quality while grading is undesirable because there are no objective and fair measurement metrics. (2) Grading assignments from multiple viewpoints (correctness and quality) is difficult and time-consuming. Approach: We propose applying gamification with code metrics to measure code quality in programming assignments. Our approach can motivate students to write code with good metric scores independent of grading. We implemented our approach and conducted a control experiment in a programming course at a university. Result: Our approach did not interfere with students' submissions but improved metric scores significantly. Hence, our approach can engage students to write high-quality code.

[1]  Seiji Isotani,et al.  The Dark Side of Gamification: An Overview of Negative Effects of Gamification in Education , 2017, HEFA.

[2]  Salvador Roura,et al.  Jutge.org: an educational programming judge , 2012, SIGCSE '12.

[3]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[4]  Lennart E. Nacke,et al.  From game design elements to gamefulness: defining "gamification" , 2011, MindTrek.

[5]  Edward T. Chen,et al.  Program Complexity and Programmer Productivity , 1978, IEEE Transactions on Software Engineering.

[6]  Sheng Yu,et al.  A survey on metric of software complexity , 2010, 2010 2nd IEEE International Conference on Information Management and Engineering.

[7]  Eduardo Figueiredo,et al.  Evaluating Domain-Specific Metric Thresholds: An Empirical Study , 2018, 2018 IEEE/ACM International Conference on Technical Debt (TechDebt).

[8]  Petri Ihantola,et al.  Review of recent systems for automatic assessment of programming assignments , 2010, Koli Calling.

[9]  Peter Mozelius,et al.  Visualisation and Gamification of e-Learning and Programming Education. , 2015 .

[10]  Andrew Lim,et al.  Online Judge , 2001, Comput. Educ..

[11]  Matthias Jarke,et al.  Gamification for enforcing coding conventions , 2015, ESEC/SIGSOFT FSE.

[12]  Steff Lewis,et al.  Forest plots: trying to see the wood and the trees , 2001, BMJ : British Medical Journal.

[13]  G. Glass Primary, Secondary, and Meta-Analysis of Research1 , 1976 .

[14]  Hironori Washizaki,et al.  A Gamified Tool for Motivating Developers to Remove Warnings of Bug Pattern Tools , 2014, 2014 6th International Workshop on Empirical Software Engineering in Practice.

[15]  Gordon Fraser,et al.  Code Defenders: A Mutation Testing Game , 2016, 2016 IEEE Ninth International Conference on Software Testing, Verification and Validation Workshops (ICSTW).

[16]  Jacob Brunekreef,et al.  Measuring static quality of student code , 2011, ITiCSE '11.

[17]  Guangzhong Sun,et al.  The framework of a new online judge system for programming education , 2018, TURC.

[18]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[19]  Mario Piattini,et al.  Gamification in software engineering - A systematic mapping , 2015, Inf. Softw. Technol..

[20]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[21]  Gordon Fraser,et al.  Code Defenders: Crowdsourcing Effective Tests and Subtle Mutants with a Mutation Testing Game , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[22]  Xiao-Hua Zhou,et al.  Statistical Methods for Meta‐Analysis , 2008 .

[23]  Noraidah Sahari Ashaari,et al.  The study of gamification application architecture for programming language course , 2015, IMCOM.