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.