We investigate the pedagogical impact of Graphical Loop Invariant Based Programming (GLIBP) in an introductory programming course. This approach encourages students to visually model the objects and variables handled in the loop, before implementing it. To evaluate the efficiency of this GLI model, a four-condition A/B/C/D test was conducted across two problems, with students receiving varying levels of scaffolding (from no support to a fully constructed GLI). Analysis of students’ code showed that a well-designed GLI reduced errors related to the loop guard and the update of variables. However, many students struggled to understand or represent a GLI. The fill-in-the-blank GLI version, in particular, often added cognitive load rather than reducing it. Three recommendations emerged: train students to interpret a provided GLI when writing code; second, teach students to sketch their own model by recognizing similarities to previously solved problems; finally, guide students with questions to ensure all necessary variables and relationships are properly identified.
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.
This research investigates university students’ success in their first programming course (CS1) in relation to their motivation, mathematical ability, programming self-efficacy, and initial goal setting. To our knowledge, these constructs have not been measured in a single study before in the Finnish context. The selection of the constructs is in line with the statistical model that predicts student performance (“PreSS”) (Quille and Bergin, 2018). The constructs are compared with various demographic and background variables, such as study major, prior programming experience, and average weekly working hours. Some of the main results of this study are as follows: (1) students generally entered with a high interest in programming and high motivation, but these factors did not increase during the course, i.e., interest in programming did not increase. (2) Having prior experience yielded higher initial programming self-efficacy, grade expectations, and spending less time on tasks, but not better grades (although worse neither). While these results can be seen as preliminary (and alarming in some parts), they give rise to future research for investigating possible expectation–performance gaps in CS1 and later CS studies. As our dataset accumulates, we also hope to be able to construct a valid success prediction model.
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.
The scope of the paper is animation facilities of computer algebra systems (CAS). Animation offers opportunities for visualization of complex mathematical concepts, provides convincing demonstration of ideas and influence of quantities or parameters, helps to generate hypothesis, encourages exploration. Animation can be used to demonstrate many mathematical concepts that are difficult to explain verbally or to show with static pictures. Using animation allows students to explore, experiment and visualize mathematics as a dynamic process. But CAS creates only opportunities. The problem remains for users to realize this potential. So features of CAS such as ease of use, convenience of procedures are important for teaching and learning. The paper deals with animation features of the three most popular CAS - Maple, Matlab, Mathcad and their usefulness in education. The results of practical use of the three CAS in teaching animation procedures are discussed and students' opinion about animation tools of CAS is presented.