This is a taught course in the School of Informatics suitable for first-year undergraduate students (SCQF level 8). The course teaches the basics of functional programming using the language Haskell. The main goal is to acquaint the student with fundamental programming concepts such as recursion, abstraction, higher-order functions and data types, whilst at the same time emphasizing the practical use of such constructs by applying them within a graphical environment. For further details see the course catalogue entry.
Informatics 1: Functional Programming is part of Informatics 1, the first-year programme for all undergraduate degrees in the School of Informatics. During semester 1, students should also be taking Informatics 1: Computation & Logic.
Slides and reading: Here are the slides and code examples for each lecture. The pages in the two course textbooks that correspond to each lecture are indicated.
|Week||Subject||Slides (code)||Reading in Thompson / Lipovača|
|1.||(No FP this week)|
|2.||Introduction. Functions. Lists.
(Extra FP lecture on Thursday)
|lect01.pdf (Land of Lisp music video, lect01.zip), lect03.pdf (lect03.zip)||
Sects. 1.2-11,1.14; 2.1,2.3,2.4,2.7; 3.1-5,3.7; 5.5,5.6
pp. xv-42 except 13-14,18-22,26-33,35-40
|3.||Lists and Recursion
(Extra FP lecture on Thursday)
|lect04.pdf (lect04.zip), lect05.pdf (lect05.zip)||Sects. 4.1,4.2,4.4,4.5,4.7; 5.2; 6.2; 7.1-5; 17.1,17.2,17.6 / pp. 13-14,18-22,35-40,42-45,51-58|
|4.||Map, filter, fold||lect07.pdf (lect07.zip)||Sects. 10.1-4; 11.1-4 / pp. 59-78,80-85|
|5.||(No FP lectures this week)||Catch up on your reading!|
|6.||Class test; lambda, sections||lect08.pdf||Revise for Class Test|
|7.||Algebraic data types||lect09.pdf (lect09.zip)||
Sects. 4.3; 5.3; 14.2-4 and p. 99 (naming types)
|8.||Abstract types||lect11.pdf (lect11.zip)||
Sects. 15.1,15.2; 16.1,16.2,16.4,16.7,16.8
|9.||Type classes||lect13.pdf (lect13.zip)||Sects. 13.1-5; 14.6 / pp. 27-33,122-127,138-140,141-143|
|10.||Mock exam; IO and monads||lect15.pdf ("Haskell is useless" discussion, lect15.zip)||
Sects. 8.3-5; 18.4-5
|11.||Logic and programs||lect17.pdf, lect18.pdf||Sects. 9.1,9.2,9.5 / these slides|
Lectures: 14.10–15.00 Mondays (Appleton Tower, Lecture Theatre 4) and 11.10–12.00 Tuesdays (Appleton Tower, Lecture Theatre 5) during Semester 1. There are extra lectures on Thursday of weeks 2 and 3 (11:10–12:00am, Appleton Tower, Lecture Theatre 4) and no lectures in weeks 1 and 5. You are very strongly advised to attend all lectures.
Exercises: Tutorial exercises are published here at least a week before the corresponding tutorial. This work does not contribute towards your mark for the course but it is absolutely essential for your understanding of the material.
You can discuss your work on these exercises with other students, and ask questions on the discussion forum. If you are having difficulties, drop in to the lab. Or go to InfBase, the Informatics student help desk.
Tutorials: These start in week 3 and take place each week until the end of semester, except for week 10. If you are ill or otherwise unable to attend one week then email your tutor, and if possible attend another tutorial group in the same week.
If you wish to move to a different tutorial group, please ask the ITO through their online contact form and explain your constraints. Or visit them on level 4 of Appleton Tower.
Students are expected to prepare for each tutorial, which includes completing the tutorial exercises and the reading.
You must attempt the work before the tutorial and bring with you a printout of the work you have done. Tutorials are mandatory, and the only way to learn is to do the work before the tutorial, not at the tutorial. Students who have not done the work in advance will be sent away.
Revision Tutorials: There will be extra drop-in tutorials starting in week 4 for students who find that they require extra help. This is in addition to and separate from your normal tutorial session and tutorial exercises! There will be two sessions:
Labs: Computer Lab West (CLW) in Appleton Tower room 5.05 is reserved for Inf1-FP for a few hours every weekday. A lab demonstrator will be available at the times indicated to assist with the coursework.
|Reserved for Inf1-FP||Demonstrator available||Location|
After week 2, the labs are run on a drop-in basis and you can go as often as you like.
Online: Online sources of help include:
Feedback will be provided on all of your work, with the exception of the final exam.
Books: You will need one of the following textbooks:
Section/page references in both books that correspond roughly to the lectures are given above. Read at least these. It would be better to read more than these pages, to get the context and to understand related concepts. If you find a topic in one of the books hard to understand, try the other one.
All of the following books were also written for beginning students, and may provide a useful alternative perspective.
Examinations: Assessment for Inf1-FP is done through two exams.
Videos: Recordings of lectures are available online. Please note that these recordings supplement lectures by allowing you to review the material presented and revise for the exam. They are not intended as a substitute for attending and participating in the lectures themselves.
Contact: The course lecturer is Don Sannella and the course teaching assistant is Chris Banks. The best time to speak to Don is at the end of a lecture. If contacting Don or Chris by email please use your University address. You can also always ask questions on the discussion forum.
Programming Competition: Each year the course concludes with a programming competition, with an actual prize draw and first prize sponsored by software company Galois. The competition centers round the drawing of fractal-based images. This provides students with an excellent opportunity to show off the skills they have learned during the course, and to set loose their creativity in an unconstrained environment. Every year students have gone on to amaze the course organizers—and themselves—with ingenious and beautiful drawings and fractals, and this year is certainly not going to be different.
Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: email@example.com
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh