DM580: Functional Programming
Academic preconditions. Students taking the course are expected to:
- Have knowledge of basic programming concepts on a level that corresponds to the one achieved through following the course DM574 Introduction to programming.
- Have a basic understanding of algorithms and data structures, e.g., by having followed the course DM578 Algorithms and data structures.
The course provides an introduction to functional programming. It provides students with experience with programming in languages other than mainstream object-oriented languages.
The course builds on the knowledge acquired in the courses DM574 Introduction to Programming and DM578 Algorithms and Data Structures. It provides a professional basis for choosing courses or bachelor projects in programming languages later on in the program.
In relation to the learning outcomes of the degree the course has explicit focus on:
- developing skills in programming in different types of programming languages.
- developing skills in analysing the advantages and disadvantages of different language constructs.
- developing skills in deciding and justifying professional decisions.
- giving the competence to identify one's own needs for learning and structuring one's own learning in different learning environments
Expected learning outcome
- solve non-trivial programming tasks in a functional programming language by writing clear and correct code and by applying the standard language libraries.
- calculate the most general type of a functional expression.
- estimate time and space consumption of functional programs.
- prove properties of simple functional programs.
- higher-order types
- lazy evaluation
- referential transparency
- efficiency considerations
- proof of correctness
Exam element a)
Indicative number of lessons
- Intro phase: 21 hours
- Training phase: 21 hours, where tutorials and laboratory exercises are combined according to demand
- Implementing minor projects
- Self-study of various parts of the course material.