Informatics 1 – Functional Programming
- Course description
- Course blog
- Programming competition
- Course resources
- Other resources & external links
2. Course description
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.
The course is part of Informatics 1.
The course comprises 20 lectures and 9 tutorials, spread over the eleven weeks of the semester. There is also the drop-in lab: special times at which the computer room in Appleton Tower is staffed by demonstrators, who are ready to help out with any questions on the course material. Lecture notes, tutorial exercises and solutions will be made available here on a weekly basis.
Lectures are on Mondays and Tuesdays, starting week 2
- Mondays, 2:10–3:00pm,
George Square Lecture Theatre
- Tuesdays, 11:10–12:00am, David Hume Tower, Lecture Theatre A
There is an extra lecture on Friday of week 4 (David Hume Tower,
Lecture Theatre C) and no lectures in week 5.
semester 1 timetable for Informatics 1
Drop-in lab is held daily at Computer Lab West on level 5 of Appleton Tower.
Lab demonstrators will be available at the times indicated to assist with the coursework.
| || ||Reserved for Inf1-FP ||Demonstrator available ||Location |
| ||Mondays ||3:00–5:00pm ||3:30–4:30pm ||Lab West |
| ||Tuesdays ||2:00–5:00pm ||2:00–3:00pm ||Lab West |
| ||Wednesdays ||2:00–5:00pm ||2:00–3:00pm ||Lab West |
| ||Thursdays ||2:00–5:00pm ||2:00–3:00pm ||Lab West |
| ||Fridays ||3:00–5:00pm ||3:30–4:30pm ||Lab West |
Every student should attend their assigned lab during Lab Week in week 2.
Lab week exercises are posted in the table below.
After week 2, the labs are run on a drop-in basis.
Tutorial groups with their times and places can be found
If you wish to attend a tutorial at a different time,
contact the ITO
and explain your constraints.
Tutorials are held in groups of about 12, on Thursdays and Fridays,
starting in week 3. Students are expected to prepare for each
tutorial, which includes completing the exercises and reading the
appropriate chapters in the textbook.
Tutorial exercises will be posted in the table below,
and are due at the tutorial of the same week—for instance, the
exercises of week 3 will be discussed during the tutorials on Thursday 4th
and Friday 5th Oct. Exercises will be made available at least a week
before they're due.
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.
There will be some extra tutorials on Wednesdays starting 7th Nov for those
who require extra help. This is in addition to
and separate from
your normal tutorial and tutorial exercises.
There will be two sessions: 1:10-2:00pm and 2:10-3:00.
Those attending this extra tutorial should do the exercises below
before the tutorial and bring your solutions with you.
4. Course blog
The course blog
is maintained by the teaching assistant. A summary of
the topics covered in each lecture, a reading list, and any other
information about the course will be posted each week.
Examination is done through two tests. The first, the class test, is a
hand-written exam held on 22 Oct in place of the lecture (at
the same time and place). The second, the final exam, is a
programming test held in the computer labs, scheduled for the
examination weeks at the end of the semester. The class test
contributes 10% towards the final mark, the final exam
contributes 90%. There is a mock exam in the week of 19 Nov
as practice for the final exam.
- Because the number of Inf1-FP students exceeds the capacity of
the space available for the final exam, it will be held in two
sittings in multiple locations with two different sets of questions.
You have been assigned to one of these sittings and to a
location by the ITO. You must attend that sitting in that location.
If you miss the allocated sitting then you will not be allowed
to attend the other, and you cannot change your assigned sitting.
- The final exam is open-book, which means you can use the textbook and your personal notes during the exam. A list of common library functions will still be provided. Also, the
online reference guide at ZVON
will be made available on your computer.
- The class test is closed-book, i.e. you are not allowed to use the textbook or your personal notes. This does not mean you have to memorize the prelude: a summary of the library functions that you might need will be provided.
- To help practice for the exam there is also an open-book mock exam, scheduled for week 10 of the semester.
- Previous exams and solutions can be found below.
- Tutorial exercises are compulsory, but will not count towards the final mark.
6. Programming Competition
Each year the course concludes with a thrilling 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.
2012 Programming Competition:
This year's entries can be found here.
Previous programming competition entries:
7. Course resources
Haskell: The Craft of Functional Programming, Third Edition.
Simon Thompson. Addison-Wesley, 2011.
Lectures on video
The lectures will be captured on video and made available
Last year's lectures are available
(look at the directories in the range 2011-09-26/ - 2011-11-29/).
is a staffed student help desk. You can make an appointment on the wiki
, or just drop-in to ask questions about the course!
- Mid-semester class tests:
- Previous final exams and resit papers:
Questions & Answers
See the newsgroup or the wiki.
8. Other resources & external links
- An extra exercise sheet covering list comprehensions and recursion:
- Alternative textbooks:
All of these books were also written for beginning students, and may
provide a useful alternative perspective.
- Online material on Haskell:
- Real World Haskell by O'Sullivan, Stewart and Goerzen.
This is an introductory textbook with a practical angle of approach, fully available online.
- A Gentle Introduction to Haskell by Hudak et. al.
It would be good idea for everybody to print out a copy of this
and bring it with you to tutorials/demonstrations as a
- Two Dozen Short Lessons in Haskell by Rex Page.
This book is available in PostScript and PDF format. To read the
PostScript version outside of the University labs, you may need
to install additional software.
If you can't get a hold of the official textbook, then this one
may be of some help.
- Learn You a Haskell for Great Good by Miran Lipovaca.
An easy introductory web page with lots of examples.
Haskell Reference at ZVON
by Miloslav Nic.
This site is a friendly version of the Haskell Report. It contains
information about all of Haskell's predefined functions like
drop, take, ord, chr, sum and length. Good
- A Tour of the Haskell Standard Prelude
by Bernie Pope and Arjan van IJzendoorn.
Another good introduction to Haskell's predefined functions.
- Video lectures
from Microsoft on Haskell.
- Lecture Notes
of John Hughes' Introductory Course on Haskell. (See also the old exams at the bottom of the exercises page.)
This site has everything you could possibly want to know about
Haskell, and more! From "A Short Introduction to Haskell" and the
aforementioned "A Gentle Introduction to Haskell" to the
definition of the language, a list of books on the subject, links
to conferences/workshops, and various libraries.
- Online material on pair programming:
- Teaching Assistant
Please feel free to email the teaching assistant
with any questions you may have concerning Haskell.
- If you are using your own machine, we recommend that you download
and install the "Haskell Platform" from here.
If after consulting all the above resources, you still can't find an answer to your question or
just want to know even more, please email the lecturer.
There is an open discussion forum
for all issues relating to Informatics first year courses.
The computing society Compsoc run a
for all inf1 courses.
Informatics Teaching Organisation
Courses are administered by the Informatics Teaching Organisation
(ITO), located on the fourth floor of Appleton Tower. Contact the ITO
for adminstrative issues, including changes to lab sessions or
. When it is inconvenient to use the form, send e-mail to