Department of Computer Science and Technology

Course pages 2018–19

Machine learning for programming

Principal lecturer: Dr Andrew Rice
Additional lecturers: Miltos Allamanis, Marc Brockschmidt
Taken by: MPhil ACS, Part III
Code: R252
Hours: 16 (8 2-hours sessions)
Class limit: 16 students
Prerequisites: Undergraduate-level knowledge of compilers, program analysis, machine learning. Good programming skills are essential.


This module investigates how machine learning techniques can be applied to the analysis and synthesis of computer programs. A variety of machine learning techniques will be covered considering different applications such as program repair, code suggestion, summarisation and comment-generation. The module will be structured around students reading papers and reproducing some recent results from the literature.


  • Session 1 (2hr): Introduction, summary of proposed papers for reimplementation. In later sessions students will produce a written project plan and make weekly written reports - this session will have a model example of each of these.
  • Session 2 (2hr): Introductory lecture on deep learning models CNN, RNN, LSTM, python/tensorflow/pytorch practical.
  • Session 3,4,5,6 (2hr): Weekly standup, students deliver 100-200 word summary of week's activity and plan for next week. Help session if needed. The summary for session 3 will be a plan for the whole project.
  • Session 7 and 8 (2+2 hr): show and tell presentations, demo, brief writeup: what works well and what doesn't. 15 minute slots.


On completion of this module, students should:

  • gain a general familiarity with the state-of-the-art in this area;
  • have investigated one particular technique in detail;
  • have attempted to reproduce a research result from the literature.


Students will deliver regular written reports of progress and a project writeup. Marks will also be assigned for the quality of the software written and the final presentation.


  1. written plan (10%)
  2. weekly summary 1 (10%)
  3. weekly summary 2 (10%)
  4. weekly summary 3 (10%)
  5. final presentation (20%)
  6. project writeup (20%)
  7. software deliverable (20%)

Recommended reading