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 |
Content
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.
Organization
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.
Schedule
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 |