Official course description, subject to change:
Basic info last published 1/10-20

Second Year Project: Functional Programming

Course info
Language:
English
ECTS points:
7.5
Course code:
1413003U
Participants max:
160
Offered to guest students:
yes
Offered to exchange students:
yes
Offered as a single subject:
yes
Price (single subject):
10625 DKK (incl. vat)
Programme
Level:
Bachelor
Programme:
BSc in Software Development
Staff
Course manager
Associate Professor
Teacher
Associate Professor
Course semester
Semester
Forår 2021
Start
25 January 2021
End
28 May 2021
Exam
Abstract

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.

Description

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.
Ordinary exam
Exam type:
A: Written exam on premises, External (7-point scale)
Exam variation:
A11: Written exam on premises. Open book exam.