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.