Analyzing Software using Deep Learning (Summer Semester 2021)
|Lecturer||Prof. Dr. Michael Pradel|
|Teaching assistants||Aryaz Eghbali, Moiz Rauf|
|Course type||Lecture + Exercises|
|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.
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.
|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|