Official course description:
Full info last published 23/04-20

Second Year Project: Functional Programming

Course info
ECTS points:
Course code:
Participants max:
Offered to guest students:
Offered to exchange students:
Offered as a single subject:
Price (single subject):
10625 DKK (incl. vat)
BSc in Software Development
Course manager
Associate Professor
Associate Professor
Teaching Assistant
Teaching Assistant (TA)
Teaching Assistant
Teaching Assistant (TA)
Teaching Assistant
Teaching Assistant (TA)
Teaching Assistant
Teaching Assistant (TA)
Teaching Assistant
Teaching Assistant (TA)
Course semester
Forår 2020
27 January 2020
31 August 2020
Exam type
ekstern censur
Grade Scale
Exam Language

This course aims to make students proficient in the functional programming paradigm used by languages such as F#, Scala, SML, OCaml, or Haskell. All programs created in the course will be written in F#, developed by Microsoft and incorporated in Visual Studio and the .NET framework. We will relate the functional paradigm to its imperative and object-oriented counterparts, but focus on concepts predominantly found in functional programming languages such as higher-order functions, recursion and tail recursion, immutable data structures, and first-class functions.


The student will get a practical and theoretical introduction to functional programming languages using F#. This includes the following themes:

Functional Programming Paradigm:
  • first-class functions 
  • higher-order functions 
  • type inference and polymorphism 
  • recursion and tail recursion 
  • algebraic data types 
  • strict and lazy evaluation
  • parser combinators
  • monads
Memory Management:
  • garbage collection 
  • reference types 
  • mutable versus immutable data 
Parallel Programming:
  • divide and conquer
  • the Actor model
  • asynchronous computations
Formal prerequisites
  • You are enrolled on the BSc study program in software development.
  • You can construct object-oriented software using C#, corresponding to what is learnt in the BSc course Analysis, Design and Software Architecture (BDSA).
  • You have a solid understanding of algorithms, their implementation, and their complexity, as taught in Algorithms and Data Structures (BADS).
This course is part of the fourth semester in the bachelor´s degree in Software Development.
Intended learning outcomes

After the course, the student should be able to:

  • apply and reflect on theories for modelling, analyzing and constructing functional declarative programs.
  • apply and reflect on the concepts behind functional programming compared to imperative and object oriented programming.
  • construct programs in F# and explain the basic principles behind functional programming using F#.
  • describe and explain solutions to problems in the context of functional programming.
  • apply core concepts of functional programming.
  • reason about the complexity of functional programs.
Learning activities

The course consists of

  • a course-like block with lectures and exercises, covering the themes of the course
  • Seven weekly hand-ins with F# assignments
  • One bigger hand-in at the end of the course to demonstrate mastery in all relevant areas
All hand-ins are performed in groups of at least two and at most three.

The course includes required reading on functional programming, parallel programming and F#.

23/4-20 Due to COVID19 situation, examform changed from A11 to C22 with fraud control + mandatory activities goes from 7 to 6 and points from 16 to 14

Mandatory activities
How Many: 6 assignments with a value of 2 points each and a project worth 6 points. A total of 20 points can be earned. You need 14 points to attend exam.
When: 1 assignment every week.
Deadlines: One week per assignment.
Retake: It is possible to hand-in assignment within two weeks after the first deadline to improve score
NB: Students not fulfilling the requirement of 16 points to attend the exam will be given the grade NA (not passed) at the ordinary exam and thereby use one exam trial.

The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt.

Course literature
Functional Programming using F# by Michael R. Hansen and Hans Rischel, ISBN 9781107684065

Student Activity Budget
Estimated distribution of learning activities for the typical student
  • Preparation for lectures and exercises: 10%
  • Lectures: 17%
  • Exercises: 17%
  • Assignments: 50%
  • Exam with preparation: 6%
Ordinary exam
Exam type:
C: Submission of written work, External (7-point scale)
Exam variation:
C22: Submission of written work – Take home
Exam submisson description:
The exam is a 5 hour take-home exam followed by random fraud control.
Take home duration:
1 day

Time and date
Ordinary Exam - submission,Ordinary Exam - hand out Mon, 25 May 2020, 09:00 - 14:00
Ordinary Exam - submission Mon, 17 Aug 2020, 09:00 - 14:00