Official course description, subject to change:
Preliminary info last published 15/11-19

Second Year Project: Functional Programming

Course info
Language:
English
ECTS points:
7.5
Course code:
1413003U
Participants max:
134
Offered to guest students:
yes
Offered as a single subject:
yes
Price (single subject):
10625 DKK (incl. vat)
Programme
Level:
Bachelor
Programme:
Bachelor of Science in Software Development
Staff
Course semester
Semester
Forår 2021
Start
25 January 2021
End
28 May 2021
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

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-trinsskala)
Exam variation:
A11: Written exam on premises. Open book exam.