Analyzing Software using Deep Learning (Summer Semester 2022)
|Lecturer||Prof. Dr. Michael Pradel|
|Teaching assistants||Islem Bouzenia, Moiz Rauf|
|Course type||Lecture + Project|
|Ilias||Ilias course with forum|
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.
|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|