Analyzing Software using Deep Learning (Summer Semester 2021)

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Aryaz Eghbali, Moiz Rauf
Course type Lecture + Exercises
Language English
Ilias Ilias course with forum


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.

Online Course

The course as an online course. All lecture videos will be provided in this playlist throughout the semester, roughly following the schedule below.


This is a preliminary schedule and may be subject to change. There are no exercise sessions, but students will work on a course project under supervision by a teaching assistant. "L" stands for lecture, "P" stands for project. Lectures will be distributed via YouTube and have a recommended time window to watch them (but you can watch them any time). Events with a precise date happen on that date. Events printed in italics happen synchronously via Webex and will not be recorded, i.e., you should plan to attend them at the given time.

Date Topic Material
Apr 19 to 23 L: Introduction
April 22, 2:00pm to 2:45pm L: Organization of the course
Apr 26 to 30 L: RNN-based code completion and repair
May 3 to 7 L: Reasoning about types and code changes with hierarchical neural networks
May 20, 2:00pm to 3:30pm P: Introduction of course project
June 7 to 11 L: Sequence-to-sequence networks and their applications
June 14 to 18 L: Summarizing programs with convolutional networks
June 17, afternoon P: Progress meeting 1
June 21 to 25 L: Token vocabulary and code embeddings
June 28 to July 2 L: AST-based and graph-based neural networks of code
July 1, afternoon P: Progress meeting 2
July 15, afternoon P: Progress meeting 3
July 23, 23:59pm CEST P: Submission deadline
July 26 to July 30 P: Final presentations
TBD Exam