Several tools have been developed to support novices learning to program. Most of them focus on the code and provide features regarding the visualization of the data structures or the debugging. However, in practice, in introductory programming courses, students are typically given exercises in the form of a problem written in natural language; and the first challenge they face is understanding the problem, identifying the relevant information on it, and then translating that information into code. To our knowledge, little attention has been paid to proposing tools targeted at supporting this analysis step, even though it is crucial for deriving the correct solution.

The goal of the thesis is to identify, based on the perception of the students, the features that a tool of this kind should offer, in addition to design, implement and evaluate a first version of this tool.

The following steps are planned:

  1. Literature Review. The aim of this step is to gain an overview on the strategies adopted by related tools and systems, as well as to investigate whether prior tools have already exploited some concepts that can be related to the “understanding the problem” issue.
  2. Needfinding. Conduct a study involving students learning to program to gain an overview of the difficulties they face when conducting the analysis step. This will be done by recruiting some students from the Computer Science course at the first year and it could be informed by the results of the previous step.
  3. Design and implement a tool in accordance with the most significant insights from the previous step. The tool will be developed a web application.
  4. Evaluate the usability of the tool and assess to what extent it effectively supports novice programmers and helps them to overcome the issues related to the understanding of the problem.


Andrea Bruno

Thesis Details

Fulvio Corno, Luigi De Russis, Juan Pablo Sáenz
Master Degree in Computer Engineering