![]() |
MIT Electrical Engineering and Computer Science
Fall 2001 Catalogue Supplement |
MW 1-2:30, Room 38-166
Prof. Michael Ernst, 3-0945, Room NE43-524
Prereq.: 6.035 or permission of instructor
3-0-9
Qualifies as a subject in the Computer Systems and Architecture Concentration.
This 12-unit graduate seminar examines a variety of program analysis techniques, including static analyses, as typically found in compilers and other programs that are provided source code; dynamic analysis, as found in profilers and other tools that work over program executions; and hybrid analyses that combine the two approaches. Sample analyses to be covered include model checking, theorem-proving, type inference and checking, dataflow analysis, concept analysis, profiling, test suite coverage, dynamic invariant detection, race detection, and visualization.
The focus of the course is the use of program analysis to assist in program development tasks, including design, implementation, testing, documentation, and maintenance. That is, the focus will be on enhancing human capabilities and assisting people (who form the real bottleneck) in software engineering tasks such as program understanding, rather than on (say) optimization for the sake of faster execution.
In addition to weekly readings of research papers and small problem sets designed to provide experience with a variety of tools, the subject includes a substantial team project performed in groups of 2-3. Sample projects will be provided, but students are also free to propose their own. Examples include proposing and evaluating a fundamental new technique; developing and assessing new algorithms to replace currently-used ones; translating a methodology to a new problem domain; evaluation of proposed techniques (for instance, via a user study); or applying known techniques to new problem domains, such as operating systems, networks, embedded systems, security, biology, etc.