Official course description, subject to change:

Preliminary info last published 15/11-23
Course info
Language:
English
ECTS points:
7.5
Course code:
BSFUPRO1KU
Participants max:
180
Offered to guest students:
yes
Offered to exchange students:
yes
Offered as a single subject:
yes
Price for EU/EEA citizens (Single Subject):
10625 DKK
Programme
Level:
Bachelor
Programme:
BSc in Software Development
Staff
Course semester
Semester
Forår 2025
Start
27 January 2025
End
30 May 2025
Exam
Exam type
ordinær
Internal/External
ekstern censur
Grade Scale
7-trinsskala
Exam Language
GB
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

You 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:
A22: Written exam on premises with restrictions.