Models of Software Systems 17-651

Models of Software Systems is normally offered in the Fall Semester.

Scientific foundations for software engineering depend on the use of precise, abstract models for characterizing and reasoning about properties of software systems. This course 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, inductive definitions and denotational descriptions are recurrent themes throughout the course.

This course provides the formal foundations for the other core courses. Notations are not emphasized, although some are introduced for concreteness. Examples are drawn from software applications.

After completing this course, students will:
  • understand the strengths and weaknesses of certain models and logics including state machines, algebraic and process models, and temporal logic
  • be able to select and describe appropriate abstract formal models for certain classes of systems, describe abstraction relations between different levels of description, and reason about the correctness of refinements
  • be able to prove elementary properties about systems described by the models introduced in the course.
Prerequisite: Undergraduate discrete math including first-order logic, sets, functions, relations, proof techniques (such as induction).

Click Here for a copy of the Models of Software Systems syllabus.
© 2003 Carnegie Mellon
Webmaster
Home   General Information   Admission   Plans Of Study   Curriculum   People   Facilities   Contacts   Login