CSE 788.R12: Dynamic Analysis of Imperative and Object-Oriented
Software, Spring 2008
Basic Information
- Instructor: Nasko
Rountev, DL 685, tel. 292-7203, email: rountev cse
ohio-state edu
- Course page:
http://www.cse.ohio-state.edu/~rountev/788
- Credits: 3; Call number: 04477-1; Class meetings: MWF 10:30 am -
11:18 am, Dreese 266
- Office hours: MW 11:30 am - 12:30 pm, or by appointment
Prerequisites
The prerequisite for this course is basic knowledge of C, C++, or Java.
Course Overview
The goal of this course is to introduce students to basic foundations
and current advances in the area of dynamic (run-time) program
analysis. Recent years have seen a great increase in the use of
such analysis for performance optimization (e.g., generating profiling
information), run-time checking (e.g., protecting against buffer
overflows and stale memory references), and debugging (e.g.,
identifying the sources of memory leaks and race conditions). Dynamic
analysis tools such as gprof, Purify, and Valgrind are used every day
by thousands of programmers. In this course we will consider dynamic
analyses for both imperative languages (e.g., C) and object-oriented
languages (e.g., C++ and Java). The primary goals are (1) to provide
entry-level knowledge of analysis techniques, and (2) to apply some of
these techniques to real-world C, C++, or Java code.
We will also
consider a number of static (compile-time or link-time) analyses
that are required for subsequent dynamic analysis (e.g., in order
to decide what instrumentation to insert in the program code). The
covered material will be useful for students working in compilers,
systems, programming languages, and software engineering, as well as
anyone interested in learning about state-of-the-art tools for
software development.
Course
Organization
The course will have the following parts:
Lectures by the Instructor
I will present an overview of some basic dynamic analyses and
the related static analyses. The goal of these lectures is to
establish some background for paper presentations and for the
project. No previous knowledge of program analysis is expected.
Paper Presentations
For part of the quarter, students will present papers from our reading
list. Typically, each student will present only one paper. The
goal is to gain more experience understanding other people's work, as
well as to develop and improve presentation skills. I will help with
the harder papers. We will spend a fair amount of time on the
foundational papers, in order to get a firm grasp on the basic
techniques. Depending on the available time, we will also cover some
more advanced topics.
Project
There will be several projects to choose from. The "default" project
will be for analysis of Java, but depending on the student's
preferences, the topic could instead be on analysis of C, C++, or even
C# . We will use various popular analysis frameworks that allow the
creation of instrumented code and the deployment of run-time analysis
agents. Each student will implement a small dynamic analysis tool. I
will have some pre-defined projects, but you will be free to define
your own project if you want especially if they are related to
your research. Even though you cannot build a real tool in 10 weeks,
we will try initial exploration of ideas that may be useful for your
ongoing research, or for future publications. The scope of the default
Java project should be enough for about half a paper; if anyone is
interested, we can continue next quarter to make it a real paper
submission.
Grading
- Project: 80%
- Paper presentations: 20%
Sometimes a student will present two related papers instead of one; in
such cases, the grading scheme will be 70% (project) and 30% (papers).
Students with Disabilities
Any student who feels he or she may need an accommodation based on the
impact of a disability should contact me privately to discuss his or
her specific needs. Please contact the Office of Disability Services
at (614) 292-3307, or visit 150 Pomerene Hall, to coordinate
reasonable accommodations for students with documented disabilities.