Chalmers | GU

Course PM

TDA452/DIT142, Functional Programming, 7.5hp, HT 2017

Examiner: Thomas Hallgren
Course responsible: Thomas Hallgren
Course Assistants/supervisors: Elisabet Lobo-Vesga, Herbert Lange, Jeff/Yu-Ting Chen

Course content

In this course the student will learn about functional programming through the Haskell programming language. Concrete topics encountered in the course include:

Learning outcomes

After completion of the course the student should be able to

Course structure/course implementation

Examination forms

The examination of the course has two parts:

To pass the course it is necessary to pass all home assignments and the exam. Your final grade is determined by your grade on the written exam only.

The grades awarded on the exam are 3, 4, 5 for Chalmers students, and G, VG for GU students. (G on the GU side corresponds to 3 or 4 on the Chalmers side; VG corresponds to a 5.)

Course literature

There is no course textbook. For those who like to follow a textbook I can recommend the following:

Changes from Last Year

There will be no significant changes from last year.

Schedule

Lectures and self-study exercises

Monday 13.15 (HC2) Thursday 10.00 (HC3)
Self-study exercises
Week 1 Intro to Haskell. Tuples & lists.
Types. [Intro.hs]
Data types. [DataTypes.hs]
Getting started with Haskell
Week 2 Working with lists
(recursion, pattern matching)
[WorkingWithLists.hs]
Higher Order Functions.
[HigherOrderFunctions.hs]
Videos: Part 1, Part 2.
Recursion and data types
Week 3 Input/Output. [countWords.hs,
InputOutput.hs, Hangman.hs]
Overloading and Type Classes.
[Overloading.hs]
QuickCheck test data generators.
[TestDataGenerators.hs]
Lists and List Comprehensions
Week 4 Abstract data types.
[Reverse.hs, Queue.hs]
Recursive data types.
[ArithmeticQuiz.hs]
Parsing.
[ParsingExamples.hs, Parsing library]
IO, Test Data and Properties
Week 5 Symbolic Expressions.
[SymbolicExpressions.hs]
Monads. Monadic Evaluators.
[MonadicEvaluators.hs]

Monads recap.
Complete the monadic evaluator.
Lazy · Eager · Parallel.
[Fib.hs, Laziness.hs]
Recursive data types
Week 6 Web/GUI programming
[HasteIntro.hs,
WebFudgetsIntro.hs]
More info: Haste, WebFudgets.
Implement a small functional language.
[SmallFunctionalLanguage.hs]
Tying up loose ends.
Questions and answers.
Week 7 No lectures (Project work!)

Lab assignments

LabPartSubmission deadlineFinal deadline
Lab 1 Wednesday, Week 1
(2017-11-01)
Friday, Week 2
(2017-11-10)
Lab 2 A Wednesday, Week 2
(2017-11-08)
Friday, Week 4
(2017-11-24)
BWednesday, Week 3
(2017-11-15)
Lab 3 AWednesday, Week 4
(2017-11-22)
Friday, Week 6
(2017-12-08)
BWednesday, Week 5
(2017-11-29)
Lab 4 ProposalMonday, Week 6
(2017-12-04)
Thursday, Week 6
(2017-12-07)
Project Wednesday, Week 7
(2017-12-13)
Friday, 2017-12-22

CHALMERS TEKNISKA HÖGSKOLA AB
GÖTEBORGS UNIVERSITET
Data- och informationsteknik
412 96 Göteborg
Telefon: 031-772 10 00 (CTH) / 031-786 00 00 (GU)