A key determinant of success for novice programmers is the extent to which they practice writing code. In a typical introductory programming course, students are given numerous projects, assignments and lab exercises to work through to develop their confidence and skill. In general, designing and preparing suitable problems for these tasks requires a great deal of time and draws heavily on the experience of the instructor. However, for certain small scale problems, students may be quite capable of inventing their own exercises. In fact, research across various disciplines indicates this can be a useful learning activity in itself.   We explored this idea in an introductory computing course ( n  > 180) by conducting a randomized, controlled experiment in which a group of students invented programming exercises prior to an exam. Although the created exercises were used by all students in the course for practice, the group that invented them performed significantly better on the exam. Further to this, students perceived the process of inventing exercises as contributing to their learning in the course. We discuss the conditions under which similar approaches may also be successful, and we investigate the quality and difficulty of the student-invented exercises.
['Paul Denny', 'Diana Cukierman', 'Jonathan Bhaskar']
Measuring the effect of inventing practice exercises on learning in an introductory programming course