ARAUJO, E. C.; http://lattes.cnpq.br/8032715047993974; ARAÚJO, Eliane Cristina de.
Abstract:
In programming education, the development of students’ programming skills through practical programming assignments is a fundamental activity. In order to succeed in those
assignments, instructors need to provide guidance, especially to novice learners, about
the programming process. We consider that this process, in the context of programming
education, encompasses steps needed to solve a computer-programming problem.
We took into consideration the programming process adapted from Polya (1957) to
computer programming problem-solving, that includes the following stages [Pól57]: (1)
Understand the problem; (2) Plan the solution; (3) Implement the program and (4) Look
Back. Focusing on the fourth stage, we want students to be proficient in correcting strategies and, with critical reflection, being able to refactor their code caring about good programming quality. During this doctoral research, we developed an approach to generate formative feedback to leverage programming problem-solving in the last stage of the programming process: targeting the solution evaluation. The challenge was to provide timely and elaborated feedback, referring to programming assignments, to stimulate students to reason about the problem and their solution, aiming to improve their programming skills. As a requirement for generating feedback, we compromised not to impose the creation of new artifacts or instructional materials to instructors, but to take advantage of a usual resource already created when proposing a new programming assignment: the reference solution. We implemented and evaluated our proposal in an introductory programming course in a longitudinal study. The results go beyond what we initially expected: the improved assignments’ code quality. We observed that students felt stimulated, and in fact, improved their programming abilities driven by the exercise of reasoning about their already functioning solution.