Welcome to the course homepage of TDA555/DIT441 Introduction to Functional Programming! The course is given by the Department of Computer Science and Engineering during Study Period 1, 2023. This is an introductory course in programming, using the functional language Haskell as the medium of instruction. The primary goal is to enable students to write realistic (small) programs for real world applications, while introducing some of the fundamental concepts of computer science.
We are going to use Slack as our tool for communication. You can join our Slack workspace via this link, do it as soon as possible!
You find additional information about the course below and via the following pointers:
- Examiner & lecturer: Alex Gerdes (firstname.lastname@example.org)
- Teaching assistants: Abhiroop Sarkar, Rachel Samuelsson, Oskar Tornevall, Samuel Hammersberg, Oskar Sköld, Melvin Larsson, Noak Palander, Faisal Akhtar, Filip Nordmark, Fredrik Jansson, Emilia Nicander, Samuel Kyletoft, Oliver Odhe, Sebastian Selander
- Student representatives:
- Chalmers: Albin Begu (email@example.com), Gustav Brochmann (firstname.lastname@example.org), Emil Claesson (Emil.email@example.com), Lukas Söderberg (firstname.lastname@example.org), Emily Tiberg (email@example.com), Edvin Zetterlund (firstname.lastname@example.org)
- GU: Ida Vranvuk (email@example.com), Michal Spano (firstname.lastname@example.org)
In this course we are going to use the obligatory course book 'Programming in Haskell' by Graham Hutton. It is an excellent book for learning Haskell written in a clear and compact style. The book is available in the Chalmers Store and in many other book shops. For each of the lectures with provide pointers to the relevant parts of the course book.
We also use the following material, which is freely available (online):
The course is organized as follows:
- 8 weeks in total.
- Two lectures per week (on average).
- One exercise session per week, where you get help with the exercises.
- Four lab assignments, spread out over 7 submission deadlines (so one each week except for the last week). All lab assignments need to be completed in order to complete the course.
- One written exam at the end of the course; this is done individually.
- Your final grade will be determined by your grade on the written exam only.
Learning objectives and syllabus
- describe the basic concepts of modern functional programming languages, such as: data types, first- and higher-order functions, lazy evaluation, infinite data structures
- describe a basic repertoire of functional programming techniques, such as: recursion, testing, the role of data types in modelling and problem solving
- write small functional programs for various applications
- structure programs in a way that makes them easy to understand and modify, by appropriate application of data types, abstraction, and code reuse
- implement effective tests for functional programs with help of suitable tools
- show the ability, in various contexts, to judge which programming techniques are most appropriate for solving the problem at hand
The contents of the exam is:
- Everything we have talked about in the course
- The contents of each lecture
- QuickCheck properties and simple generators
The course is examined by:
- a number of compulsory assignments during the course, typically carried out in groups of 3 students (3.0 hp)
- an individual written exam at the end of the course (4.5 hp)
This year the exam is on the 25th of October in the afternoon. Make sure you register for the exam in time, the following pages lists the last day to register: The academic year - dates and times. There will be a re-exam in January and one in August. The time and place of the exams can be seen e.g. on the Chalmers syllabys page for the course.
The syllabus page shows a table-oriented view of course schedule and basics of course grading. You can add any other comments, notes or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the 'Edit' link at the top.