Functional Programming, SWU (Spring 2023)
Official course description:
Course info
Programme
Staff
Course semester
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
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
- garbage collection
- reference types
- mutable versus immutable data
- 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).
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
- individual hand-ins
- group hand-ins and a bigger project towards the end of the course
- required reading on functional programming, parallel programming and F#.
Lectures and the reading material present the background, theory, and methods needed for achieving the intended learning outcomes providing the theoretical underpinnings for the course curriculum.
Assignments give you the necessary practical experience required to achieve proficiency in the course material and to prepare you for the project and the exam
The exercise sessions allow you to work on assignments and the project under supervision allowing for discussion and reflection of how to convert theory into practice.
The mandatory project has you create a non-trivial piece of software from the ground up giving you a solid understanding and working knowledge of developing larger code bases using F#.
Mandatory activities
How Many:
7 individual hand-ins with a value of 2 points each and a group
project worth 6 points. A total of 20 points can be earned. You need 16 points
to attend the exam.
When:
One hand-in per week, but some weeks are free to not clash with the second year project exams.
The project is towards the end of the course.
Deadlines:
One week per assignment.
Group size:
All group hand-ins are performed in groups of at least two and at most three.
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:A: Written exam on premises, External (7-point scale)
Exam variation:
A22: Written exam on premises with restrictions.
5 hours
Restricted access - LearnIT only
reexam
Exam type:A: Written exam on premises, External (7-point scale)
Exam variation:
A22: Written exam on premises with restrictions.
5 hours
Restricted access - LearnIT only
Time and date
Ordinary Exam - on premises Fri, 2 June 2023, 09:00 - 14:00Reexam - on premises Thu, 17 Aug 2023, 09:00 - 14:00