Instructor
Somesh Jha,
5393 Computer Sciences and Statistics Building
email:jha@cs.wisc.edu
Time and place
MWF 2:25-3:15pm, 138 Psychology.
Office hours: Monday, 4:30-6:00pm.
The TA for this class is Minyi Xu.
Minyi's office hours are Tuesdays, 2:00-3:00pm and 4:00-5:00pm in 3130 CS.
email:minyi@cs.wisc.edu
Audience
CS 706 is an
introduction to the analysis of a variety of artifacts arising in the
context of software engineering. It is suitable for students with a
general background in computer science or electrical engineering.
General Description
This course is motivated by three dominating trends in modern software
development:
- Need for different artifacts: The typical software development
process
produces a variety of different kinds of artifacts. For instance,
specifications describe requirements, and state machines and object
models capture high-level designs. Solutions are implemented by
source code, communicated by byte code, and documented by hyper text
documents.
- Need for analysis: A large number of software related tasks rely on
the analysis of these artifacts. For instance,
specifications need to be checked for consistency or
completeness. State machines and code need to be analyzed for
correctness or security. Legacy code needs to be maintained and
updated. The structure of hypertext documents need to be validated.
In short, program design, validation, verification, reuse
and understanding require the analysis of these artifacts.
- Need for automatic tools: The size and complexity of the developed
software and thus of the artifacts involved is increasing constantly and is
already too large to be handled without tool support. Experience in
academia and industry has shown that the degree of automation of a
tool is an important ingredient to its success. The more a tool
minimizes the need for user interaction and expertise, the more likely
it is to succeed.
This course introduces the work undertaken in academia and industry to
address these trends. A number of different kinds of software artifacts
and analysis problems will be identified and the corresponding
solution algorithms will be presented. Traditional analyses, such as
verification and testing, and promising new approaches, such as model
checking and novel type systems will be covered. To balance theory
and practice, existing academic and commercial tools will be
discussed. The course is most suitable for graduate students
interested in the theory and practice of software development in
general and of software analysis in particular.
Material
Course notes and papers distributed by instructor.
Prerequisites
Mathematical maturity and
programming experience. Undergraduate students need permission of the
instructor.
Evaluation
Participation, assignments, presentations and projects.