Students enter values in the context of the program. This reinforces the step-by-step nature of the process.
Automatically grading programs is hard. However, breaking a program into fragments and asking the student to reassemble the fragments into a correct program is quite easy to grade.
This allows us to assess a student’s fundamental language skills before launching them into actual programming problems.