The main aim of this module is to apply formal programming language based techniques for the construction and verification of computer programs.
Special emphasis will be made on techniques outside mainstream programming in the imperative object oriented programming style, and verification using unit testing.
All participants are able to:
- Construct programs in the functional style
- Verify the correctness of functional programs.
- Explain the formal foundations of the techniques covered.
(Dieses Modul wird auf Englisch durchgeführt.)
Testat erfordert erfolgreiche Abgabe einzelner gelöster Übungsaufgaben nach Ankündigung.
Functional programming (Haskell):
- Referential transparency
- Functions as first-class citizens
- Higher-order functions
- Algebraic datatypes
- Pattern matching
- Types & type inference
- Type classes
- Functors, Applicative, Monads
- Property-based testing (Quickcheck)
- Proving program correctness
- Formal proof
- Lambda calculus
General Programming language concepts:
- Programming Paradigms
- Evaluation strategies
- Parameter passing
Special topics will be covered, depending on student interest and the time available in the current semester. Here are some examples of such topics covered in the past:
- Type systems
- Logic programming
The content of this course varies strongly in order to reflect student interest and recent developments in this area. It is therefore strongly recommended that you complete the examination in the same semester as you enrolled for this course.
This course will be taught in English.
(Durchführung gemäss Stundenplan)