Introduction to Functional Programming
TDA555 / DIT440 Introduction to Functional Programming lp1 HT19 (7.5 hp)
Course is offered by the department of Computer Science and Engineering
- Examiner & lecturer: Thomas Hallgren.
- Teaching assistants: Elisabet Lobo-Vesga, Jeff / Yuting Chen, Abhiroop Sarkar, Felix Naredi (naredi (at) student.chalmers.se), Gunnar Stenlund (gunnar.stenlund (at) gmail.com) , Sarosh Nasir (sarosh.nasir (at) gmail.com).
- Student representatives: Chalmers: Kevin Bäckstäde (kevin.backstade (at) gmail.com), Mirco Ghadri (mircog at student.chalmers.se), Linus Sundkvist (lsundkvist1 (at) outlook.com), Vera Svensson (vera.svensson (at) gmail.com), Filip Torphage (filip.torphage1 (at) gmail.com). GU: Famara Nyassi (famara.nyassi (at) hotmail.com), Andreas Olsson (andreasolsson1994 (at) gmail.com), Oskar Pålsson (guspalssos (at) student.gu.se), Josef Rasheed (josefir98 (at) gmail.com).
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.
See TimeEdit. The first lecture is on Tuesday 2019-09-03 at 13:15.
Course literature etc
- 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 the main idea is to get help with the exercises.
- Four programming (lab) assignments, spread out over 8 submission deadlines. 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.
Assignments and deadlines
There is a separate page about the assignments with more information.
In summary, you are required to work in groups of 3. You have to pass all assignments to get a pass on the course. The assignments are:
|Lab 1: Power to the People||1||Monday 2019-09-09 12:00|
Lab 2: Blackjack
|2A||Monday 2019-09-16 12:00|
|2B||Monday 2019-09-23 12:00|
Lab 3: Tetris
|3A||Monday 2019-09-30 12:00|
|3B||Monday 2019-10-07 12:00|
|3C||Monday 2019-10-14 12:00|
|Lab 4A: Simplify||4A||Monday 2019-10-21 12:00|
|Lab 4B: Famous||4B||Friday 2019-10-25 23:59|
Some labs have extra assignments. These are for your own pleasure; there are no bonus points awarded.
Lectures and exercises
There is a separate page that describes the contents of the lectures in more detail.
- Exercise 2: Recursion and data types
- Lecture 2A: Data typed (continued) and lists
- Lecture 2B: More lists and recursion
- Exercise 3: Lists and list comprehensions
- Lecture 3A: Even more lists and recursion
- Lecture 3B: IO instructions
- Exercise 5: Higher order functions, test data generation
- Lecture 5A: Higher order functions (continued)
- Lecture 5B: Recursive data types
- Exercise 6: Recursive data types
- Lecture 6A: Recursive data types (continued)
- Lecture 6B: Guest lecture by professor John Hughes: "Life is Too Short for Imperative Programming"
- Exercise 7: Old exam questions
- Lecture 7A: Data structures
- Lecture 7B: cancelled
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 course is examined by
- a number of compulsory assignments during the course, typically carried out in groups of 2-3 students. (3.0hp)
- an individual written exam carried out in an examination hall at the end of course. The only aid (“hjälpmedel”) you may take into the examination hall with you is an English dictionary, or an English-X dictionary, where X is your favourite (spoken) language. (4.5hp)
There is a separate page with more information about the written exam.
Changes made since the last occasion
The course will be essentially the same as last year.
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.