Exam Guide for G51FUN Functional Programming
Please read this guide carefully if you are taking the
G51FUN Functional Programming exam during the 2014-2015 academic
year, as it contains important information and resources to help you
with your revision.
-- Graham Hutton, March 2015
The exam will be based purely on the content of the printed
lecture notes that were made available to all students at the start
of the module. These lecture notes comprised the
for lectures 1-12 and a summary of the
prelude. If you wish to have another copy of the slides and the
prelude you can print these yourself using the two preceeding links.
Note that lecture 8 (functional parsers) is not examinable this year,
and no additional material beyond the content of the slides for
lectures 1-12 will be included in the exam.
The exam this year comprises four compulsory questions, one of which
is a multiple choice question (with no negative marking for incorrect
answers), and the remaining three of which are programming questions.
Unlike in some previous years, there is no essay question. A copy of
the Haskell standard prelude will be provided during the exam.
Work through the slides for each of the eleven examinable
lectures, and make sure that you are able to understand
and reproduce most of the examples, as these or variations
on them often come up in the exam. However, you can't
learn Haskell just by reading! Trying out programming examples
for yourself in GHC
should be a central part of your revision process.
Work through the six exercise
sheets that comprised the two courseworks. The five sheets in
the first coursework are designed to emphasise the most important
aspects of the module, while the second coursework is designed to
give experience of writing a simple Haskell program.
Work through the past exam papers provided below. Don't worry
if you can't do everything in the past exam, as they are designed
to differentiate between students and produce an average mark
across the class of around 60%. The questions tend to start
with a couple of easier parts, and then get more difficult as
the question progresses. Note that the syllabus for the module
changes from year-to-year, and in the past the module was also
taught by a different lecturer, so looking at older exam paper
beyond the two provided below may not be helpful.
The module is based directly on the book
Programming in Haskell,
and the slides follow precisely the same structure and content as the book.
Purchasing or borrowing a copy of the book and reading it in combination
with the slides is strongly advised. Trying out some of the exercises
in the book is also highly recommended, and a full set of
There is also a full set of
which were professionally produced by Microsoft using the lecture slides
for the module. These may be useful for revision purposes, but
note that the videos are aimed at professional programmers rather
than students, and make a number of connections with object-oriented
programming that are not relevant for this module.
The core of the module is lectures 1-6, which are covered in pages
1-59 of the book. Make sure that you know this material well, and
in particular are able to write simple functions using list
comprehensions (lecture 5) and recursion (lecture 6), as these are
the fundamental skills that students are expected to be able to
demonstrate. A good knowledge of lectures 1-6 should be sufficient
to obtain a pass mark in the exam, but a number of other modules
and modern programming languages build upon the foundations laid
in this module, so students should aim for a good knowledge of all
the examinable material rather than just passing the exam.
There is also a
of the module slides that may be useful for revision purposes, but
note that this only covers a subset of the material and in less
detail than the official module slides.
Exam papers for the last two academic years: