Current Semesters

CIS 706 Compiler

The course teaches modern compiler techniques applied to general-purpose or domain-specific languages.

Programming Language Semantics
CIS 806 Programming Language Semantics

This course explores means of documenting the semantics of programming languages. Through a series of exercises using the Coq theorem prover, it studies the semantics of simple programming languages and gradually build up to a study of a Java-like object-orient programming language.

High Assurance Systems
CIS 890 High Assurance Systems

The course covers techniques for developing high assurance systems -- systems that are safety critical, security critical, or mission critical in nature.


Past Semesters

Software Specifications
CIS 771 Software Specifications

This course studies a collection of techniques that lie at the foundation of an approach to software development that can enable the construction of large highly reliable software.

Model Checking
CIS 842 Model Checking

This course studies various model-checking techniques with the goal of applying those techniques to real concurrent software systems.