Functional Programming 1
- 32 hours computer course
- 16 hours lecture
- 8 hours problem session
- 28 hours individual study period
Extra information teaching methods
The lectures present the theoretical background of new topics. In the assignments, the student actively engages in solving problems using functional programming. In a seminar assignments are discussed. We use the state-of-the-art functional programming languages Clean and Haskell.
It is obligatory to participate in the assignments. Feedback on part of these assignments is provided by students. This is not by means of a result value.
Pre-requisitesBasic imperative programming and object-oriented programming (the regular preliminary programming courses of the computer science curriculum) or equivalent material.
ObjectivesAfter following this course, you can:
- Solve problems in a functional way
- Choose and develop suitable data structures for given problems
- Use and deploy modern programming language concepts such as higher-order functions, polymorphism, overloading, recursive data structures
- Reason about functional programs
- Give formal correctness proofs of simple functional programs.
Functional programming is a style of programming that is based on the mathematical concept of "functions". By using (higher-order) pure functions, algebraic types, and a strong but flexible typing system, an expressive programming language is available to you to express advanced programs concisely and clearly. The well-studied mathematical foundations (lambda-calculus and term-rewriting) allow you to reason about functional programs using relatively simple mathematical techniques such as uniform substitution and induction.
expressions; functions; type systems; polymorphism; recursion; rewriting; basic types; algebraic data types; overloading; tuples; records; lists; list comprehensions; lambda abstraction; higher-order functions; evaluation strategies; recursive data structures; correctness proofs.
ExaminationVerplicht practicum. Schriftelijk eindtentamen is gesloten boek.
- Lecture slides (Blackboard)
- Online book: ftp://ftp.cs.kun.nl/pub/Clean/papers/cleanbook/CleanBookI.pdf;
- Clean language report: ftp://ftp.cs.kun.nl/pub/Clean/Clean20/doc/CleanRep2.0.pdf;
- Haskell language report: www.haskell.org/onlinereport/haskell2010
This course will be taught in English.