Learning programming has become increasingly popular, with learners from diverse backgrounds and experiences requiring different support. Programming-process analysis helps to identify solver types and needs for assistance. The study examined students’ behavior patterns in programming among beginners and non-beginners to identify solver types, assess midterm exam scores’ differences, and evaluate the types’ persistence. Data from Thonny logs were collected during introductory programming exams in 2022, with sample sizes of 301 and 275. Cluster analysis revealed four solver types: many runs and errors, a large proportion of syntax errors, balance in all features, and a late start with executions. Significant score differences were found in the second midterm exam. The late start of executions characterizes one group with lower performance, and types are impersistent during the first programming course. The findings underscore the importance of teaching debugging early and the need to teach how to program using regular executions.
Motivating students of the Nintendo generation for Computer Science can only be achieved by providing them with an exiting and fresh CS1 course. The article describes the experience of redesigning the introductory programming course at ETH Zurich and shows how the combination of state-of-the-art visualizations with open project assignments enlivens students' enthusiasm for programming. It shows the setup and the involved libraries, provides example applications that were built in the course, and presents the data gathered in the evaluation of the open assignment.
This paper presents an approach for educators to evaluate student progress throughout a course, and not merely based on a final exam. We introduce progress reports and describe how these can be used as a tool to evaluate student learning and understanding during programming courses. Complemented with data from surveys and the exam, the progress reports can be used to build an overall picture of individual student progress in a course, and to answer questions related to how students (1) understand program code as a whole, (2) understand individual constructs, and (3) perceive the difficulty level of different programming topics. We also present results from using this approach in introductory programming courses at secondary level. Our initial experience from using the progress reports is positive, as they provide valuable information during the course, which most likely would remain uncovered otherwise.