Informatics 1 – Functional Programming

Contents

  1. People
  2. Course description
  3. Schedule
  4. Examination
  5. Programming competition
  6. Course resources
  7. Other resources & external links

1. People

Lecturer: Philip Wadler
<wadler@inf.ed.ac.uk>
Teaching Assistant: Willem Heijltjes
<w.b.heijltjes@sms.ed.ac.uk>

Return to top

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.

Return to top

3. Schedule

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

Lectures are on Mondays and Tuesdays, starting week 2.

Drop-in lab

Drop-in lab is held daily at computer lab ``West'' or ``South'' on level 5 of Appleton Tower.
Mondays 3–5pm West
Tuesdays 2–5pm West
Wednesdays 2–5pm West
Thursdays 2–5pm South
Fridays 3–5pm West

Tutorials

Tutorial groups with their times and places can be found here.

Tutorials are held in groups of 8–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 are available from 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 9 and Friday 10 October. Exercises will be made available at least a week before they're due.

Schedule

Week Subject Lecture notes Reading assignment Tutorial exercises Solutions
1. 22–26 Sept *lectures start in week 2* *Tutorials start in week 3*
2. 29 Sept–3 Oct Lab Week lect01.pdf lect02.pdf examples 1–3 (pp. 1–52) LabWeekExercise.pdf labweekexercise.hs solutions
3. 6–10 Oct Lists and Recursion lect03.pdf 4–5 (pp. 53–95) Tutorial1.pdf tutorial1.zip solutions
4. 13–17 Oct More fun with recursion lect05.pdf 6–7 (pp. 96–134) Tutorial2.pdf tutorial2.hs solutions
5. 20–24 Oct Review lect05.pdf lect08.pdf 8–9 (pp. 135–166) Tutorial3.pdf tutorial3.hs solutions
6. 27–31 Oct Review *Class Test* lect10.hs Tutorial4.pdf tutorial4.hs solutions
7. 3–7 Nov Higher-order functions lect11.pdf lect12.pdf 10–11 (pp. 167–209) Tutorial5.pdf tutorial5.hs solutions
8. 10–14 Nov Algebraic data types lect13.pdf 12–14 (pp. 210–279) Tutorial6.pdf tutorial6.hs solutions
9. 17–21 Nov Type classes lect15.pdf 15–17 (pp. 280–382) Tutorial7.pdf tutorial7.zip solutions
10. 24–28 Nov Arithmetic, Data types *Mock exam* lect17.pdf 18–20 (pp. 383–441) Tutorial8.pdf tutorial8.hs
11. 1–5 Dec Complexity, Logic lect19.pdf lect20.pdf mock.pdf mock.hs
12. 8–12 Dec Exam Week 1 *Final exam*
13. 15–19 Dec Exam Week 2

Return to top

4. Examination

Examination is done through two programming tests, held in the computer labs. The mid-semester programming test contributes 10% towards the final mark, the final exam contributes 90%. The final exam is held on Monday 8 December, in the examination period of the semester.

Notes

Return to top

5. Programming Competition

Each year the course is concluded with a thrilling programming competition, with an actual prize draw and first prize. The competition usually 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.

Previous programming competition entries:

Return to top

6. Course resources

Textbook

Haskell: The Craft of Functional Programming, Second Edition. Simon Thompson. Addison-Wesley, 1999.

Previous exams

Questions & Answers

See the newsgroup or the wiki.

Return to top

7. Other resources & external links

  1. Alternative textbooks: All of these books were also written for beginning students, and may provide a useful alternative perspective.
  2. Online material on Haskell:
    • 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 reference.
    • 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 by Miloslav Nic.
      This site is a friendly version of the Haskell Report. It contains information about all of Haskell's predefined funcions like drop, take, ord, chr, sum and length. Good reference website.
    • A Tour of the Haskell Standard Prelude by Bernie Pope and Arjan van IJzendoorn.
      Another good introduction to Haskell's predefined functions.
    • Lecture Notes of John Hughes' Introductory Course on Haskell.
    • www.haskell.org
      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.
  3. Online material on pair programming:
  4. Teaching Assistant
    Please feel free to email the teaching assistant with any questions you may have concerning Haskell.
  5. Lecturer
    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.

Return to top


Home : Teaching : Courses : Inf1 : Fp 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh