Models of Software Systems Fall 2004
Objectives
Scientific foundations for software engineering depend on the use of precise, abstract models and logics for characterizing and reasoning about properties of software systems. There are a number of basic models and logics that over time have proven to be particularly important and pervasive in the study of software systems. This course is concerned with that body of knowledge. It considers many of the standard models for representing sequential and concurrent systems, such as state machines, algebras and traces. It shows how different logics can be used to specify properties of software systems, such as functional correctness, deadlock freedom, and internal consistency. Concepts such as composition mechanisms, abstraction relations, invariants, non-determinism, and inductive and denotational descriptions are recurrent themes throughout the course.
By the end of the course you should be able to understand the strengths and weaknesses of certain models and logics, including state machines, algebraic and trace models, and temporal logics. You should be able to apply this understanding to select and describe
abstract formal models for certain classes of systems. Further, you should be able to reason formally abo
ut the elementary properties of modeled systems.
Organization
Lectures.  Classes meet Monday & Wednesday, 5:30-6:50 am, in Newell-Simon 1305.
Communication.  We will be using the CMU Blackboard System this year for distributing most course materials, providing a general course bulletin board, and keeping track of student email addresses. In addition you can use
Office Hours: The instructor and the TAs have weekly office hours, listed above. We are also available other times by appointment.1.Email: We welcome email about the course at any time.
reactive materials studies2.Readings.  Most lectures will have a reading assignment that we expect you to complete before you come to class. There is one required textbook for the course: Concurrency: State Models and Java Programs, by Magee and Kramer [MK99]. In addition, there is an optional companion text Using Z: Specification, Refinement, and Proof, by Woodcock and Davies [WD96]. This text is available on-line at www.usingz/.
An optional reference book may also be useful: The Z Notation: A Reference Manual, Second Edition,
by J. M. Spivey (available on the web through ac.uk/~mike/zrm). Some readings are in the form of handouts to supplement lectures; other additional readings are technical papers.  These will be made available as needed throughout the course. Finally, for supplementary detail, there are a number of books noted in the References section at the end of this document.
Homework Assignments.  The course is organized around (roughly) weekly homework assignments and a set of three projects. The purpose of the assignments and projects is to give you practice in using the models, logics, and tools of the course. We encourage you to discuss your homework with other students, but the final write-up must be your own work.
To give you the most opportunities to learn from the homework assignments, we will allow you to redo problems that didn't receive a passing grade. A redone homework must be turned in at the class following the one on which it is handed back.  Problems done correctly the first time will be given more weight in the final grade.
Projects. We will be assigning three group projects that are designed to give you a chance to apply the ideas of the course to
semi-realistic case studies. Each project will be completed by a team. Team members are expected to
participate equally in the projects.We will distribute a team peer evaluation at the end of the semester.
On-line materials. Most of the course materials will be available electronically via the CMU Blackboard System
(u.edu/blackboard/). You will find copies of the lecture slides, handouts, homework, and readings. It will be your responsibility to make copies of these to bring to class or to use for homework.
Some of the course materials have web sites. These are:
Using Z: www.usingz/
Concurrency: State Models and Java Programs: www-dse.doc.ic.ac.uk/concurrency/The Z Notation: ac.uk/~mike/zrm/
PhD Option.  Students taking the course for PhD credit students will be required to complete a course project. This project is described in separate handout.
Exams. There will be a (take-home) mid-term (handed out Wednesday, October 20, due back Friday, October 22 by 5:) and a formal (in-class) final examination. Both exams will be open-book.
Grading. The course grade will be determined as a combination of five factors: homework assignments (30%), projects (30%), midterm exam (15%), and final exam (25%).  Final grades may be adjusted based on instructors judgment.
Bold refers to Using Z [WD96].
*Marks classes that follow a holiday.