Welcome to the course homepage of TDA555 / DIT440 Introduction to Functional Programming! The course is given by the Department of Computer Science and Engineering during Study Period 1, 2020. 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.
Due to the Coronavirus the course is given as an online course. The on-campus lectures are changed to online lectures. We are going to use the online meeting system Zoom for all lectures, which are listed under the Zoom menu item and integrated Canvas calendar. Please install Zoom and familiarize yourself with the tool, have a look at the following tutorial. We are also going to use Zoom for lab supervision. We have made a demonstration video on how you can work together remotely on source files (for lab solutions). Note: we may change the way we offer this course if the government regulations are updated!
You find additional information about the course below and via the following pointers:
- Examiner & lecturer:
- Robert Krook (email@example.com)
- Abhiroop Sarkar (firstname.lastname@example.org)
- Elisabet Lobo Vesga (email@example.com)
- Yu-Ting Chen (firstname.lastname@example.org)
- Iulia Bastys (email@example.com)
- Karin Wibergh (firstname.lastname@example.org)
- Arianna Masciolini (email@example.com)
- Sarosh Nasir (firstname.lastname@example.org)
- Anna-Maria Unterberger (email@example.com)
Ibrahim Abdulhussein (firstname.lastname@example.org)
Alex Berglund (email@example.com)
Veronica Kimelman (Veronicakimelman@Hotmail.com)
Daniel Jedidiya Niyoyabikoze (firstname.lastname@example.org)
Vincent Wahlgren (email@example.com)
- Sebastian Selander
- Slides and other material from the lectures.
- Book: Learn You a Haskell for Great Good! (freely available online).
- Other info: FAQ, Links, Tour of the Prelude.
The course is organized as follows:
- 8 weeks in total.
- Two lectures per week.
- One exercise session per week, where you get help with the exercises.
- Four lab assignments, spread out over 8 submission deadlines (so one each 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.0hp)
- an individual written online exam at the end of the course carried out in Canvas and Zoom. There is a separate Canvas room for the online exam with more information about the exam.
This year the exam is on October 28 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.