På grunn av koronasituasjonen kan det bli endringer i undervisning og eksamen høsten 2020. Informasjon om eventuelle endringer, kunngjøres direkte til studenter som er oppmeldt i emnet.

spring 2019

INF-3910-5 Computer Science Seminar: Applied functional programming in .NET Core - 10 ECTS

Last changed: 01.02.2020

The course is provided by

Faculty of Science and Technology


Tromsø |

Application deadline

Applicants from Nordic countries: 1 June for the autumn semester and 1 December for the spring semester. Exchange students and Fulbright students: 15 April for the autumn semester and 1 October for the spring semester.

Type of course

The course is open for qualified students as a singular master's-level course. The course is given according to capacity and demand.

Admission requirements

Admission requirements: Higher Education Entrance Requirement + Bachelor's degree in Computer Science or similar education. The Bachelor degree must contain a specialization in Computer Science worth the equivalent of not less than 80 ECTS credits.

Application code: 9371 - Singular courses at master's level

Course content

The seminar deals with state-of-the-art research topics in computer science not covered by regular courses. The seminar content is normally linked to ongoing research activities at the research groups. The seminar will normally have a different content each time it is given. A seminar specific content will be made and preapproved by the programme board every time it is given.

This seminar covers the theory and principles of functional programming, using F# and .NET Core to demonstrate concepts. The aim is to introduce the theoretical foundations, while focusing on the practical application of functional programming techniques and their use in the software industry.

The following topics will be covered in this course:

  • Perspective: History and development of programming languages
  • Introduction to lambda calculus
  • Introduction to type theory
  • Introduction to functional programming in F#
  • Pure functions and referential transparency
  • Abstraction: Higher-order functions, partial application and currying
  • Designing with types
  • Patterns: Functors, applicatives and monads
  • Embedded domain-specific languages: HTML combinators, parser combinators
  • Functional reactive programming and the Model-View-Update architecture
  • Transpiling F# to JavaScript and writing client-server HTML5 applications in F#
  • Functional programming techniques in C#

Objectives of the course

A general educational aim of the seminar will be to:

  • Expose students to state-of-the-art topics in computer science.
  • Help the students to develop independent learning.
  • Broaden students' understanding of computer science by introducing additional special topics into the curriculum.

Detailed learning outcomes for this seminar is:

Knowledge - the student has:

  • Knowledge of lambda calculus and its significance in functional programming.
  • An understanding of type systems, type inference, type safety and how types help express valid programs and disallow invalid programs.
  • Deep insight into the functional programming paradigm, and how it differs from the imperative and object-oriented paradigms.
  • An understanding of how functions and types can be used as a fundamental unit of abstraction.
  • Awareness of the detrimental consequences of arbitrary, ad hoc usage of side effects.
  • Knowledge of functional reactive programming.
  • Insight into the use of functional programming in the software industry.

Skills - the student has / can:

  • Write advanced software applications in F#.
  • Write web-based user interfaces using reactive programming techniques in F#.
  • Use interactive programming techniques for prototyping and testing ideas.
  • Design and structure programs solely using functions.
  • Avoid using mutable state and I/O in the large body of a program.

General competence - the student has / can:

  • Ability to read, understand and discuss relevant literature in the field.
  • A broader understanding and appreciation of programming languages and paradigms in general.
  • Apply functional thinking and techniques in other branches of programming.

Language of instruction

The language of instruction is English and all of the syllabus material is in English. Examination questions will be given in English, and must be answered in English.

Teaching methods

Lectures: 30 hours, Colloquium: 30 hours, Laboratory guidance: 30 hours.


Assessment methods and course requirements will vary from seminar to seminar. For each seminar it will be chosen an assessment method and course requirements that are academically appropriate. Assessment methods and course requirements for this seminar will be:

Home exam counting 100%. Oral presentation of the home exam and demonstration of a working system can be claimed. Approved assignments give access to the final home exam.

Grading scale: Letter grades A-E, F - fail.

Course requirements: The coursework includes up to 3 written assignments graded "Approved" / "Not approved", and the number of assignments is stated at the start of the semester. Oral presentation of the assignments and demonstration of a working system can be claimed.

Re-sit examination: It will not be given a re-sit examination in in this course.

Postponed examination: Students with valid grounds for absence will be offered a postponed examination according to Section 21 and 17 in Regulations for examinations at UiT. If practically possible the examination is arranged during the semester as soon as the reasons for absence have ceased.

Date for examination

Take home assignment hand out date 01.05.2019 hand in date 31.05.2019

The date for the exam can be changed. The final date will be announced in the StudentWeb early in May and early in November.


Recommended reading/syllabus

Syllabus and reading list are available in the course homepage or by contacting the teacher or the student adviser.


Lars Ailo Bongo.jpg

Lars Ailo Bongo

Phone: +4777644121
Mobile: 92015508 lars.ailo.bongo@uit.no