Welcome to Functional Programming (TDA 452, DIT 143)!
This page describes the 2018 edition of the course. Maybe you were looking for the 2019 edition of the course?
Purpose
The course is an introduction to Functional Programming for students who know how to program. The students come mainly from the masters program at Chalmers and the University of Göteborg. See the syllabus for more details.Please note that you cannot include this course as part of a degree which already contains TDA 555 Introduction to Functional Programming. The contents are too similar (although the exam for this course is more demanding). If you took TDA 555 or similar please consider TDA 342 Advanced Functional Programming.
People
Instructor: Thomas Hallgren
Teaching assistants (Drop-in office hours):
- Elisabet Lobo-Vesga
- Herbert Lange
- Jannis Limperg
- Jeff/Yu-Ting Chen
- Mazdak Farrokhzad
~135 students.
Student representatives:
MPALG Pongsakorn Chanchaipol p.chanchaipol (at) gmail.com UTBYTE Pingjung Duh jonntw (at) hotmail.com TKITE Joakim Fransson Hulthe hulthe (at) student.chalmers.se TKITE August Sölveland saugust (at) student.chalmers.se
Lectures & Exercises
The contents of the lectures is preliminary. There might be minor adjustments or shifts in time.
The videos of the lectures recorded in 2012 & 2011 are still mostly up-to-date.
Lab Assignments
In the table below you will find links to lab assignments which have to be handed in.
- Each assignment has a submission deadline at which you must submit your solutions. Your first submission is expected to be a serious attempt to complete the lab.
- If your submission does not pass (it's incorrect or simply badly coded) then you must resubmit. You have until the final deadline.
- The final deadline is absolute: it is the last possible date to hand in your solutions. If your solutions are not passed you get no further chances this term.
Lab | Part | Submission deadline | Final deadline |
---|---|---|---|
Lab 1 | Wednesday, Week 1 (2018-11-07) | Friday, Week 2 (2018-11-16) | |
Lab 2 | A | Wednesday, Week 2 (2018-11-14) | Friday, Week 4 (2018-11-30) |
B | Wednesday, Week 3 (2018-11-21) | ||
Lab 3 | A | Wednesday, Week 4 (2018-11-28) | Friday, Week 6 (2018-12-14) |
B | Wednesday, Week 5 (2018-12-05) | ||
Lab 4 | Proposal | Monday, Week 6 (2018-12-10) | Thursday, Week 6 (2018-12-13) |
Project | Wednesday, Week 7 (2018-12-19) | Friday, 2018-12-28? |
Note that the deadlines are firm and are controlled strictly by the lab reporting system. Therefore you must submit by the deadlines.
Examination
The examination of the course has two parts:- The weekly assignments.
- A written exam after the end of the course. Length: 4 hours. Permitted materials: dictionary.
The exam dates are published on the syllabus page in the study portal. At the time of this writing the published exam dates for this course are:
- Saturday 2019-01-19, 08:30.
- Thursday 2019-04-25, 14:00.
- There is no exam in August.
Resources
Please also read the page on how to get help!Installing Haskell
- The Haskell Platform is easy to install and includes GHC, GHCi, a basic set of libraries and the Cabal tool for easy installation of additional libraries from Hackage.
Haskell Libraries
- Hoogle: search for standard library functions by name or type.
- Hierarchical Libraries: documentation of the standard libraries provided with the latest version of GHC.
- Hackage:
a large collection of libraries. Here you can find everything from the
smallest my-first-haskell-project to large, mature multi-year projects.
Use
cabal install
to install packages from Hackage. - Hayoo: search Hackage by function name/type or package name.
- A Tour of the Haskell Prelude (Also in PDF format, includes operator precedences and type classes) (from 2001).
Help/community/reference info
- Haskell home page. A starting point from where an incredible amount of information on Haskell can be found.
- Haskell Cheat Sheet.
- Haskell 2010 report. This is the most recent official definition of the Haskell language. Note though that GHC doesn't follow this definition in every detail, and supports lots of language extensions not covered by this definition.
- What I Wish I Knew When Learning Haskell. Lots of useful info, recommended by a former student.
- Functors, Applicatives, and Monads in Pictures (recommended by a student).
- From TDA555: Haskell FAQ, Haskell links.
Old Exams
- April 2019, Jan 2019, April 2018, Jan 2018, April 2017, Jan 2017, Jan 2016, April 2016, Dec 2009 (all include solutions).
Books
There is no course textbook. For those who like to follow a textbook I can recommend the following:- Learn You a Haskell for Great Good! by Miran Lipovača
Read it online for free or buy the printed version. Very nice tutorial with humour.
- Programming in Haskell by Graham Hutton
2nd edition of a compact and well-written Haskell book that is a good fit for this course. Available as paperback and eBook.
- The Craft of Functional programming by Simon Thompson
A more basic book with a slower pace but still covering most of the material in the course. I recommend the 3rd edition which has some coverage of quickCheck (a testing approach used extensively in the course). Also available at the Chalmers bookstore.
- Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
Also available online. This is more advanced and more oriented towards practical Haskell programming. A good book to have on the shelf if you continue with Haskell. This is the course book for the Advanced Functional Programming course.
Related courses
- This course in previous years: 2017, 2016, 2015, 2014, 2013, 2012, 2011.
- TDA 555: Introduction to Functional Programming.
- TDA 342: Advanced Functional Proramming.
- DAT 280: Parallel functional programming.
- CIS 194: Introduction to Haskell: a course at University of Pennsylvania that started on 31 August 2016.
- 15-150: Functional Programming: a big FP course (24 lectures, ~400 students) at CMU.
- Functional Programming in Haskell: Supercharge Your Coding: a 6-week online course.