Performance and reliability are the two major concerns in the development of modern large-scale applications. The goal of this course is to explore dynamic analysis techniques and run-time systems that can help programmers find functional bugs and/or performance problems during the execution and remove these problems (automatically or manually).
There are no formal prerequisites, but it will help to have some background in programming languages, compilers, runtime systems, and/or software engineering in general; and program analysis, software optimization, and debugging in particular..
The course will have the following two parts:
We'll spend the first few meetings covering background on dynamic program analysis and runtime systems.
(2) Student presentations
Each student will present two or three top-conference papers from the list. For each presentation, two students (other than the presenter) are responsible for giving feedback as to how to improve the presentation.
Students will form groups to undertake a project that explores a new research idea in the related areas. Detailed project information can be found here.
The activities of the class include the following four parts:
(1) Paper critiques (15%): There are two presentations scheduled for each class. Students are required to carefully read a number of papers on the same topic before the class and write critiques for the two papers that will be presented. I need your critiques the night before the class so that I can give them back to you in the class. For example, for the Monday class, your critiques are due 6pm on Sunday. Rules of thumb for writing good paper critiques can be found here.
(2) Paper presentation (30%): Two papers presented in each class cover similar topics, so we will have an opportunity to read and compare a range of papers solving similar problems. The presenter is also the discussion leader, who is expected to prepare for a set of interesting questions that can provoke further thoughts and discussions. Although the number of papers each student needs to present will be determined by the number of students in the class, I expect each student to present at least two papers in the quarter.
(3) In-class discussion (15%): We will have in-depth discussions not only on the papers presented, but also on related papers and creative ideas that may open up opportunities for future work.
(4) Projects (40%): Research projects are conducted on a per-group-basis. Each group has two students who work together to develop a novel research idea. I will set up several meetings with each group to have in-depth discussions on the proposed project. Each group will report their projects twice in the class: a kickoff presentation to propose the project (typically in the third and/or fourth week) and a progress presentation at the end of the quarter. Each group is required to turn in a project writeup (like a research paper) that describes the idea, the implementation, and the experimental results. I hope some of the high-quality project reports can be turned into top-conference submissions.
Thanks to Mike Bond, Nasko Rountev, and Feng Qin for providing advice and webpage help with this course.