Analyzing Software Using Deep Learning
Quick Facts
Lecturer | Prof. Dr. Michael Pradel |
Course type | Integrated course |
Time | Monday, 9:50-11:30 |
TUCaN ID | 20-00-0999-iv |
Piazza | Class page |
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.
Schedule
Date | Topic | Material |
Apr 9, 2018 | Introduction |
Slides and notes Online book (chapter 1) |
Apr 16, 2018 | RNN-based code completion and repair |
Slides and notes (part 1) Slides and notes (part 2) SLANG, SynFix |
Apr 23, 2018 | Sequence-to-sequence networks and their applications |
Slides and notes Deep API learning, Learning to execute |
Apr 30, 2018 | (no lecture) | |
May 7, 2018 | Classifying programs with convolutional networks |
Slides and notes Tree convolution for programs |
May 14, 2018 | Name-based program analysis |
Slides and notes DeepBugs, Context2Name |
May 28, 2018 | Introduction of course project | Slides and notes |
June 4, 2018 | Q & A for course project | |
June 11, 2018 | Q & A for course project | |
June 18, 2018 | Q & A for course project | |
June 25, 2018 | Q & A for course project | |
June 29, 2018 | Q & A for course project | |
July 9, 2018 | Submission deadline of course project | |
Aug 15, 2018 | Written exam |
Course Project
The goal of the course project is to design, implement, and evaluate a neural network-based code completion approach.
Question, Quizzes, Additional Information
We are using Piazza for class discussion, in-class quizzes, and for sharing additional material. The system is highly catered to getting you help fast and efficiently from classmates and instructors. Rather than emailing questions to the teaching staff, please post your questions on Piazza.
Find our class page at: piazza.com/tu-darmstadt.de/summer2018/20000999iv/home
Grading
Grading will be based on the course project and the final exam (50% each).