Second Year Project: Functional Programming
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
- garbage collection
- reference types
- mutable versus immutable data
- divide and conquer
- the Actor model
- asynchronous computations
- 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).
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 examExam type:
A: Written exam on premises, external (7-trinsskala)
A11: Written exam on premises. Open book exam.