Analyzing Software using Deep Learning (Summer Semester 2023)

Quick Facts

Lecturer Prof. Dr. Michael Pradel
Teaching assistants Matteo Paltenghi, Aryaz Eghbali
Course type Lecture + Project
Language English
Ilias Ilias course with forum
Location Tuesdays: Universitätsstr. 38, 0.108
Wednesdays: 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, e.g., 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 discuss several recent deep learning-based techniques that support software developers. In the other part of the course, students will implement their own deep learning-based code analysis or code prediction tool. 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 related 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, 2:00pm L: Introduction
Apr 12, 9:45am L: Token vocabulary and code embeddings
May 2, 2:00pm L: Classification tasks
May 3, 9:45am L: Sequence prediction tasks
May 5, 11:59pm P: Project proposals due
May 9, 2:00pm L: Pre-training and fine-tuning
May 10, 9:45am L: Large language models
May 16 and 17 (individual meetings) P: Progress meeting 1
May 17, 9:45am L: Parsing and fixing imperfect code (Guest lecture by Prof. Prem Devanbu)
May 24, 9:45am L: Combining neural and symbolic reasoning
June 6 and 7 (individual meetings) P: Progress meeting 2
June 14, 9:45am L: Robustness and explainability
June 27 and 28 (individual meetings) P: Progress meeting 3
July 21, 11:59pm P: Submission deadline
July 24 to 26 (individual meetings) P: Project presentations
TBD Exam