CS290I - Concurrent Program Design and Verification
Spring 2000
Instructor:
Tevfik Bultan
E-mail: bultan@cs.ucsb.edu ,
Office: Eng. I 2123,
Phone: x3735
Class Times:
Tuesday/Thursday 11:00-12:50 PHELP 1401
Class Code:
18077
Projects are due Friday, June 16th
Reading assisgnments
-
William Pugh.
Fixing the Java Memory Model.
ACM 1999 Java Grande Conference.
-
James C. Corbett.
Using Shape Analysis to Reduce Finite-State Models of Concurrent Java
Programs.
ACM Transactions on Software Engineering and Methodology,
9(1), 51-93, January, 2000.
-
Doug Lea.
Concurrent Programming in Java: Design Principles and Patterns.
Chapters 1, 2, 3, and 4.
-
C. Demartini, R. Iosif, and R. Sisto.
A Deadlock Detection Tool for Concurrent Java Programs.
Software: Practice and Experience. 29(7), 577-603, 1999.
-
K. Havelund and T. Pressburger.
Model Checking Java Programs Using Java Pathfinder.
To appear in International Journal on
Software Tools for Technology Transfer.
-
G.J. Holzmann.
The Spin Model Checker.
IEEE Trans. on Software Engineering,
Vol. 23, No. 5, May 1997, pp. 279-295.
-
Christopher Colby, Lalita Jategaonkar Jagadeesan, Radha Jagadeesan,
Konstantin Läufer,
and Carlos Puchol.
Design and Implementation of Triveni: A Process-Algebraic API for Threads + Events.
International Conference on Computer Languages (ICCL '98), Chicago, May 1998.
-
Christopher Colby, Lalita Jategaonkar Jagadeesan, Radha Jagadeesan,
Konstantin Läufer, and Carlos Puchol.
Objects and Concurrency in Triveni: A Telecommunication Case Study in Java.
USENIX Conference on Object-Oriented
Technologies and Systems (COOTS '98).
Santa Fé, Nuevo México, April 1998.
-
A. Udaya Shankar.
An Introduction to Assertional Reasoning for Concurrent Systems.
ACM Computing Surveys, vol. 25, no. 3, pages 225-262, September 1993.
Course Description
In this course we will investigate the relationships between
threads programming, concurrency theory, and automated verification.
Writing concurrent programs is much harder than writing sequential
programs. As concurrency becomes part of mainstream programming, more
programmers face this difficulty. In this course we will discuss recent
efforts which address this issue. In particular I plan to discuss
following topics: concurrent programming using formal concurrency
models, design patterns for threads programming, and automated verification
techniques for concurrent programs.
Students will be required to do a course project which will
involve either extending existing concurrent program design and verification
tools by integrating them with new techniques or applying them
to new problem domains. There will be several homeworks.
Related Tools: