This course introduces a functional programming language and related concepts to students that already have some knowledge in programming. The primary goal is to make it possible for students to apply the functional approach to write realistic (small to medium-sized) programs, and transfer general programming skills to the functional programming domain.
Concrete topics encountered in the course include;
- functions as first-class values
- compound data types (lists, tuples, and user-defined types)
- recursion and recursive data types
- using abstraction to avoid repetitive programming
- algebraic data types
- polymorphism and type classes
- time complexity: efficient and inefficient functional programs
- pure functions vs input-output
- modules and abstract data types
- testing functional programs
- lazy evaluation and infinite objects
Prerequisites and selection
To be eligible for this course, students must have successfully completed a 7.5 credits course in programming in a paradigm other than functional, e.g., DIT948 Programming, DIT042 Object-Oriented Programming, MVG300 Programming in Matlab, or equivalent. Applicants must prove knowledge of English: English 6/English B or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.
Selection is based upon the number of credits from previous university studies, maximum 165 credits.