INF-3910-5 Computer Science Seminar: Applied functional programming in .NET Core - 10 ECTS
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
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
- Functional programming techniques in C#
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.
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 examinationTake 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.