Leiden University LIACS
home   search   contact
Research
Opleiding Informatica
  Info voor scholieren
  Info voor studenten en werknemers
Roosters
Vakken
Agenda
Opleidingscommissie
Studieadviseurs
Studiegids / Documenten
Regelingen & Bepalingen
Wegwijzer
  Het studietraject
  Master Computer Science
  Master ICT in Business
  Master Mediatechnology
International Students
People
Old website



Course on Program Correctness, Spring 2010
Marcello Bonsangue
Earliest computer programs were written largely to solve mathematical problems. In this case a program can be thought of as implicitly asserting a theorem to the effect that if certain input conditions are met then the program will solve the specific problem. Making that theorem true is not merely a matter of being an expert programmer, it can be aided by a logical analysis of what a program is supposed to do. As programming has concentrated more on the mechanics of interacting with computer's environment (e.g. for reactive systems and Internet applications) rather than on mathematical problems, the advantage of a logical analysis has become obvious. It is particularly difficult to foresee the effects of abnormal events on the behavior of communicating applications that may lead to inconvenient or even catastrophic situations.

A body of theory has emerged in the past two decades to make (automatic) analysis of programs a practical reality. In this course we will cover both classical and state-of-the-art core techniques in proving the correctness of imperative and concurrent programs.

Students will be evaluated on the basis of home assignments and a final written examination. The latter will take place in room t.b.a on Tuesday June 8th, 2009, from 14:00 to 17:00 o' clock. The second-chance examination will be in room t.b.a on Tuesday August 24th, 2009, from 14:00 to 17:00 o'clock.

Theory class:  Room WI 403, from 11:15 to 13:00
Practice class:  Room WI 403, from 13:45 to 15:30
Class schedule:  February 5, 12, 19, 26
March 5,   19, 26
April   9, 16,  
May 7   21
Intended Group:  2nd year Computer Science
Prerequisites:  Students should have taken the course Logica.
Studypoints:  5 ECTS
Literature:  Michael R. A. Huth and Mark D. Ryan
Logic in Computer Science: Modelling and Reasoning about Systems
Cambridge University Press, 2004 (ISBN 052154310X)
Lecturers:  Marcello Bonsangue | E-Mail
Phone: +31 (0)71 – 5277095 | Office: 155a

and

Michiel Helvensteijn | E-Mail
Assistent:  Sijn de Gouw E-Mail
Remark:  The course is taught in English
Lectures: 
Nun Date Topic Reading Slides
1 5 Feb Overview and motivation   Slides 0.a
1a   System verification [HR04]:3.1, 4.1, 4.2 Slides 0.b
1c 5 Feb Transition systems [Var96]:1, 2.1 Slides 1
2a 12 Feb Linear Time Temporal Logic [HR04]:3.2.1, 3.2.2 Slides 2
Exercises 1
2b   Using LTL [HR04]:3.2.3 Slides 3a
3a 19 Feb LTL equivalences [HR04]:3.2.4-3.2.5 Slides 3b
3b   Model checking LTL [HR04]:3.6 Slides 7
4a+b 26 Feb From LTL to Buchi [HR04]:3.6 Slides 7
5a 5 Mar Branching-time temporal logics [HR04]:3.4.1-3.4.2 Slides 4
5a+b   CTL equivalences [HR04]:3.4.3-3.4.5 Slides 3b
5b   CTL*, CTL and LTL [HR04]:3.5 Slides 4
Bibliography:  [HR04] Michael R. A. Huth and Mark D. Ryan. Logic in Computer Science: Modelling and Reasoning about Systems. Cambridge University Press, 2004.

[Var96] Moshe Y. Vardi. An automata-theoretic approach to linear temporal logic In Proceedings of the VIII Banff Higher order workshop conference on Logics for concurrency : structure versus automata, Springer-Verlag, 1996.

[Win93] G. Winskel. The Formal Semantics of Programming Languages, An Introduction. The MIT Press, 1993.

Old examinations:  22 November 2002 6 January 2003
13 August 2003 22 January 2004
8 June 2004 13 August 2004
18 January 2005 7 June 2005
11 August 2005 20 December 2005
9 June 2006 17 August 2006
5 June 2007 23 August 2007
11 June 2008 21 August 2008
10 June 2009 27 August 2009

previous page go to top
Last edited by: Marcello Bonsangue