![]() ![]() |
Computer Science 510
|
|
Summary: A hands-on introduction to the use of formal methods for reasoning about software, and for specifying and reasoning about programming languages. Students will use an interactive proof assistant to learn about logic and its applications to proofs of program correctness, to operational and axiomatic semantics of programming languages, and to type systems. Also, an introduction to functional programming languages.
Professor: Andrew Appel - 222 CS Building - 258-4627
appel@cs.princeton.edu
To make an appointment to see me, just ask me after class or call/email Nicole, 8-4624.
Teaching Assistants: Qinxiang Cao (qinxiang@) and Santiago Cuellar (scuellar@), room 242 CS building.
Use Piazza for homework questions. Better yet: come to Lab, get real-time acoustic 3-D holographic assistance.
We will use the Coq 8.4 Reference Manual and the Coq 8.4 Standard Library
We will use the Objective Caml manual.
Other required reading (later in the semester):
Dafny tutorial, by Rustan Leino, 2011.
Boolean Satisfiability Solvers: Techniques and Extensions by G. Weissenbacher and S. Malik, in Tools for Analysis and Verification of Software Safety and Security, T. Nipkow, O. Grumberg, B. Hauptmann, G. Kalus, editors, IOS Press, NATO Science for Peace and Security Series, Spring 2012.
The Coq theorem prover, version 8.4pl5. This is installed on the OIT cluster computers (e.g., in Friend 017, 016, 009, 007, and 005). It is free software, and you should install it on your own computer.
The Objective Caml dialect of the ML programming language. This is free software. It is installed on hats.princeton.edu, on penguins.cs.princeton.edu, and on OIT cluster computers. Or it's easy to install on your own computers.