CIS 905, Spring 2003
Theory of Programming Languages
Program analysis enables one to predict, prior to run-time,
a safe approximation of the values or behaviors arising
during run-time when executing a program on a computer.
For many years, the technology has been used in compilers
so as to optimize the code generated, for example by not computing
results that turn out not to be needed.
Among the more recent applications is the validation of software
(possibly downloaded from the Internet),
thus reducing the likelihood of malicious or unintended behavior.
In order to rely on the results of program analysis,
a firm mathematical foundation is necessary.
In this course we shall give an overview of the main approaches
to program analysis and cover the basic principles,
with emphasis on type and effect systems and
Nielson & Nielson
& Hankin: Principles of Program Analysis.
A number of on-line tools are available from the web site;
we briefly looked at the PAG/WWW
Along the way, we update an
additional errata list.
See this log file
for what was covered when (and for homework assignments).
Tuesday and Thursday, 10:00am-11:30am in N127.
Form of class:
Student presentations are encouraged,
in particular later in the course.
Larger projects could arise from this class.
Handing in homework and/or giving presentations
(and of course, attending regularly).
Some amount of "mathematical maturity",
in particular within discrete mathematics;
preferably also CIS 705 (or CIS 706).