On automated grading of programming assignments in an academic institution Brenda Cheang a, *, Andy Kurnia a , Andrew Lim b , Wee-Chong Oon c a IOPT, SoC Incubation Centre, National University of Singapore, 3 Science Drive 2, Singapore 117543, Singapore b Department of IEEM, Hong Kong University of Science and Technology Clear Water Bay, Kowloon, Hong Kong c Department of Computer Science, National University of Singapore 3 Science Drive 2, Singapore 117543, Singapore Received 21 June 2002; accepted 28 January 2003 Abstract Practise is one of the most important steps in learning the art of computer programming. Unfortunately, human grading of programming assignments is a tedious and error-prone task, a problem compounded by the large enrolments of many programming courses. As a result, students in such courses tend to be given fewer programming assignments than should be ideally given. One solution to this problem is to automate the grading process such that students can electronically submit their programming assignments and receive instant feedback. This paper studies the implementation of one such automated grading system, called the Online Judge, in the School of Computing of the National University of Singapore for a com- pulsory first-year course that teaches basic programming techniques with over 700 students, describing the student reactions and behavior as well as the difficulties encountered. The Online Judge was also success- fully employed for an advanced undergraduate course and an introductory high school course. # 2003 Elsevier Ltd. All rights reserved. Keywords: Automated grading; Online judge; Computer science; Education 1. Introduction One of the primary functions of an academic institution that teaches computer science must be to imbue all its students with the ability to program. After all, in order for anyone to claim to have knowledge of computer science, the ability to write a working program is a definite pre- requisite. Furthermore, one of the most important steps in learning the art of programming is practise, i.e. getting one’s hands dirty by actually sitting down to write working programs. Indeed, when it comes to learning computer programming, practise makes perfect. 0360-1315/03/$ - see front matter # 2003 Elsevier Ltd. All rights reserved. doi:10.1016/S0360-1315(03)00030-7 Computers & Education 41 (2003) 121–131 www.elsevier.com/locate/compedu * Corresponding author.