Analyzing Software Using Deep Learning

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Course type Integrated course
Time Monday, 9:50-11:30
TUCaN ID 20-00-0999-iv
Piazza Class page


Software developers use tools that automate particular subtasks of the development process. Recent advances in machine learning, in particular deep learning, are enabling tools that had seemed impossible only a few years ago, such as tools that predict what code to write next, which parts of a program are likely to be incorrect, and how to fix software bugs. This course introduces recent techniques developed at the intersection of program analysis and machine learning. In one part of the course, we will cover some basics of both fields, followed by a discussion of several recent deep learning-based programming tools. In the other part of the course, students will implement their own deep learning-based program analysis based on an existing framework. Grading will be based on the implementation as well as a written exam.


Date Topic Material
Apr 9, 2018 Introduction Slides and notes
Online book (chapter 1)
Apr 16, 2018 RNN-based code completion and repair Slides and notes (part 1)
Slides and notes (part 2)
Apr 23, 2018 Sequence-to-sequence networks and their applications Slides and notes
Deep API learning, Learning to execute
Apr 30, 2018 (no lecture)
May 7, 2018 Classifying programs with convolutional networks Slides and notes
Tree convolution for programs
May 14, 2018 Name-based program analysis Slides and notes
DeepBugs, Context2Name
May 28, 2018 Introduction of course project Slides and notes
June 4, 2018 Q & A for course project
June 11, 2018 Q & A for course project
June 18, 2018 Q & A for course project
June 25, 2018 Q & A for course project
June 29, 2018 Q & A for course project
July 9, 2018 Submission deadline of course project
Aug 15, 2018 Written exam

Course Project

The goal of the course project is to design, implement, and evaluate a neural network-based code completion approach.

Question, Quizzes, Additional Information

We are using Piazza for class discussion, in-class quizzes, and for sharing additional material. The system is highly catered to getting you help fast and efficiently from classmates and instructors. Rather than emailing questions to the teaching staff, please post your questions on Piazza.
Find our class page at:


Grading will be based on the course project and the final exam (50% each).