Course syllabus

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, 2021. 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.

Chalmers and GU's restriktions recommend that about half of the activities will be on campus. We will therefore have online lectures (for now), but we are going to have on-campus exercise and lab supervision. We will use the online meeting system Zoom for all online lectures. Please install Zoom and familiarize yourself with the tool, have a look at the following tutorial. 

All lectures are available via the following link:

  https://gu-se.zoom.us/j/69307653731?pwd=cW5TekdwVjlPOWNjbzVmQUZOME00UT09

You may sit in the booked lecture halls, which can be found in TimeEdit, if you, for example, don't have a quiet place for watching the online lectures. However, the number of persons should not exceed 50% of the capacity of the lecture hall! (most booked lecture hall have a capacity of ~200) Note: we may change the way we offer this course if the government regulations are updated!  

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! (the link expires within 24 days, so if it does not work, contact Alex)

You find additional information about the course below and via the following pointers:

Teachers

Course literature

There is no mandatory course literature that you need to buy. We use the following material, which is freely available (online):

Other info: FAQ, Links, Tour of the Prelude

Course design

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

Link to the syllabus Chalmers
Link to the syllabus GU

Learning outcomes:

  • 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

Examination form

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 ... 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.

Course summary:

Date Details Due