Analyzing Software using Deep Learning (Summer Semester 2022)

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Islem Bouzenia, Moiz Rauf
Course type Lecture + Project
Language English
Ilias Ilias course with forum
Location Mondays: Universitätsstr. 38, 38.02
Tuesdays: Universitätsstr. 38, 38.03


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. Grading will be based on the project as well as a written exam.


The course will be classroom-first, i.e., to the extent possible, all activities will be in-person. Slides and other material will be made available during the semester, usually soon after the corresponding lecture. In addition to the in-person lectures and project meetings, old lecture videos are available in this playlist. Note that the content covered in this semester is similar to, but not exactly the same as in the videos.


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.

Date Topic Material
Apr 11, 9:45am L: Introduction
Apr 12, 2:00pm L: RNN-based code completion and repair
Apr 19, 2:00pm L: Reasoning about types and code changes with hierarchical neural networks
Apr 25, 9:45am L: Sequence-to-sequence networks and their applications
Apr 26, 2:00pm L: Summarizing programs with convolutional networks
May 3, 2:00pm L: Token vocabulary and code embeddings
May 10, virtual and non-synchronized L: AST-based and graph-based neural networks of code
May 16, 9:45am L: Pre-training and fine-tuning
May 17, 2:00pm P: Introduction of course project
May 30 and July 1 (individual meetings) P: Progress meeting 1
June 13 and 14 (individual meetings) P: Progress meeting 2
June 27 and 28 (individual meetings) P: Progress meeting 3
July 15, 23:59pm P: Submission deadline
July 18 and 19 (individual meetings) P: Final presentations
TBD Exam