Functional Programming 1

For additional information, please visit the site for Exchange students
or contact

Teaching methods

  • 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-requisites

Basic imperative programming and object-oriented programming (the regular preliminary programming courses of the computer science curriculum) or equivalent material.

Objectives

After 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.

Introduction

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. 

Functional languages play a prominent role in computer science research regarding development of novel programming language concepts. Due to their expressive power they are increasingly used for developing complex software systems.

Subjects

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.

Examination

Verplicht practicum. Schriftelijk eindtentamen is gesloten boek.

Literature

Extra information

This course will be taught in English.


Course ID
NWI-IBC029
Credits
3 ec
Scheduled
second quarter
Show schedule
SWS / PersoonlijkRooster

Lecturer

Included in