title: Half human, half machine - machine assisted tutoring in programming education.
keywords: Machine learning, static analysis, programming education
topics: Case studies and Applications , Software Technology , Other
committee: Ansgar Fehnker


Machine learning techniques have been entering many areas that were previously the domain of humans. Machine learning techniques have been used to automate tasks that are typically assigned to tutors in programming classes.  This included giving student feedback on code quality. But even before the advent of modern machine learning techniques, traditional static analysis of source code has been used to automate feedback.

The aim of the project is to use machine learning techniques to leverage static analysis to improve the feedback tutors give in programming classes, and vice versa use the tutors feedback to improve the precision and quality of feedback given by static analysis tools. In one direction the tool should static analysis feedback that has been vetted by tutors to predict how useful static analysis warning will be. On the other hand, machine learning should also be used to feedback by tutors, to discover a combination of static analysis feedback that is relevant to the feedback by the tutor. 

This project will include the implementation of a tool for said analysis. Experience with machine learning, static code analysis, parsing and compilation will be considered an advantage. 


  1. Ask-Elle: an Adaptable Programming Tutor for Haskell Giving Automated Feedback (Digital version available here)
  2. Automated Program Analysis for Novice Programmers. (Digital version available here)
  3. Learning natural coding conventions (Digital version available here)