In the master's thesis, we analyzed students’ programming solutions for selected tasks in Project Tomo and evaluated the programming patterns they contain.
In the theoretical part of the master's thesis, we defined the concept of programming patterns, presented the advantages of their occurrence in the solutions analysis, and their inclusion in introductory programming learning. Programming patterns can help teachers in teaching programming concepts. Programming patterns are defined as cognitive structures that illustrate the ways of thinking while programming and provide problem-solving approaches at a conceptual level. The characteristics of novice programmers that can prevent an effective approach to programming problems are lack of experience, limited knowledge, and line-by-line programming. Expert programming differs significantly from novice programming, because they use meaningful pieces of programming code that represent programming patterns which are combined with each other to form complex solutions. The pattern may differ in the degree of complexity of the implementation and depends on the knowledge of the programmer. A novice's solution, although correct, may also contain redundant parts of the programming code. The pattern analysis has shown there are solutions that contain basic, expected patterns but also the novices have added redundant parts.
In the empirical part, we expertly examined the programming code for the solutions of the selected tasks by searching for the programming patterns in them. The research included anonymized solutions of selected tasks submitted by 50 first-year students in the Faculty of Mathematics and Physics, majoring in Practical Mathematics. They were using Project Tomo while they were solving homework in the Programming 1 course. We analyzed the submissions for ten assignments from Project Tomo to determine what patterns appear in correct and incorrect solutions, as well as how the programming patterns evolved in intermediate solutions, from beginning to end. The results of the code analysis showed that all correct solutions contained the expected programming patterns and that incorrect solutions did not contain all the expected programming patterns. Successive submissions of students’ solution showed the ”evolution” of the expected programming patterns toward the final correct submission.
The results of the study may be useful for computer science teachers when teaching introductory programming. By explicitly revealing patterns, students’ code can be evaluated and redundant parts of the code, and conceptual errors can be detected. Automating the pattern analysis could help tutoring system developers in providing quick feedback. It could also help evaluate students’ emerging code. In addition, cases where someone tries to bypass automatic correctness checking could be detected by adding an additional layer of verification.
|