Analyzing Software using Deep Learning (Summer Semester 2020)
Quick Facts
Lecturer | Prof. Dr. Michael Pradel |
Teaching assistants | Jibesh Patra |
Course type | Lecture + Exercises |
Language | English |
Ilias | Ilias course with forum |
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, 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.
Online Course
The course as an online course. All lecture videos will be provided in this playlist throughout the semester, roughly following the schedule below.
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.
Date | Topic | Material | Deadlines and special events |
---|---|---|---|
Apr 23, 2020 | Introduction | ||
Apr 30, 2020 | RNN-based code completion and repair | ||
May 7, 2020 | Reasoning about types and code changes with hierarchical neural networks | ||
May 14, 2020 | Sequence-to-sequence networks and their applications | ||
May 22, 2020 | Start of course project | ||
June 11, 2020 | Summarizing programs with convolutional networks | ||
June 25, 2020 | Token vocabulary and code embeddings |
|
|
July 2, 2020 | AST-based and graph-based neural networks of code |
|
|
July 17, 2020 | Deadline for course project | ||
July 20-24, 2020 | Final presentations of course projects | ||
TBD | -- | Exam |
Course Project
The course project is about implementing a learning-based bug detector. Please see the project description for details.