References & Links
Course administration handout
This course handout states the initial evaluation scheme and dates of the course. We can amend the assessment scheme and shift dates according to input from you or other factors which are not known at the start of the course. Briefly: we can for instance react to scheduling clashes with other courses. In this sense the administration handout is a documented starting point for the course, but it doesn't prevent us from reacting to your needs throughout the course. Any amendments in response to your input will be documented on this web-site.
Interactive Student Information System (ISIS)
Timetable
Libraries- Study@ANU Handbook
- Academic Skills & Learning Centre
- University Counselling Centre
- ANU Rules and Policies
![]() |
Course "Textbook"
Note that the course has its own structure and does not follow the [Thompson2011] closely. It is still an excellent support for your learning and all programming paradigms which are introduced in the course are also discussed and illustrated in this book.
-
[Thompson2011]

-
Simon Thompson; Haskell - The craft of functional programming; Addison Wesley, third edition 2011
Haskell resources
The additional Haskell resources are for reference, background and alternative approaches.
Manuals
Language manuals and compiler user guides are not a good start to learn programming. Yet, once you master basic programming skills, you might want to look up precise definitions. The Haskell Prelude is different as it is specifically designed to provide an overview of basic Haskell functions and features for beginners.
-
[Pope2001]
(
on-line version) -
Bernie Pope, Clem Baker-Finch (2007 revision); A Tour of the Haskell Prelude
-
[GHC UG 7.6.1]
(
on-line version) -
The GHC Team;The Glorious Glasgow Haskell Compilation System - User's Guide, Version 7.6.1
-
[Marlow2010]
(
on-line version) -
Simon Marlow (editor); Haskell 2010 Language Report; Technical report, 2010
Tutorials
There are many on-line tutorials around for Haskell. You might find one which supports your learning. The ones listed below have been reviewed by the course organizers, have been found useful as they provide an additional/different angle than this course. Be careful that some conventions in those tutorials are different from what is used in this course. For instance, piece-wise function definition will newer be used in this course as it is considered somewhere between weird, confusing, and impossible in any other programming language (we will always use the universally accepted case expression instead in this course). In some regards, those tutorials also go beyond the scope of the course, as for example monads, functors, profiling, advanced testing, lamba expressions, or exception handling are not discussed in this course. Later courses (like for instance those about logic or software verification) will introduce you to those additional features in detail.
-
[Lipvača2011] (
on-line version) -
Miran Lipvača; Learn You a Haskell for Great Good; ISBN: 978-1-59327-283-8 (2011), 2011
-
[O'Sullivan2008] (
on-line version) -
Bryan O'Sullivan, Don Stewart, and John Goerzen; Real World Haskell; O'Reilly Media, 2008
Other programming languages
This section is clearly for the advanced student only. Comparing languages and understanding their strengths and weaknesses will become one of your essential computer scientist skills. Yet it is not expected that you develop this skill during your first semester.
-
[Ada RM 2012]

-
Ada Reference Manual - Language and Standard Libraries; ISO/IEC 8652:201x (E)
- [Barnes2005]
-
John Barnes; Programming in Ada 2005; Addison-Wesley, Pearson education, ISBN-13 978-0-321-34078-8, Harlow, England
-
[C++11 RM]

-
C++11 Standard; ISO/IEC 9899:201x (N1570)
-
[Goldberg1983]
(scanned with permission and provided by Stéphane Ducasse) -
Adele Goldberg, David Robson; Smalltalk-80: The Language and its Implementation; Xerox Palo Alto Research Center ISBN 0-201-11371-6. 344 pp. 1983
-
[Nierstrasz2009]

-
Oscar Nierstrasz, Stéphane Ducasse, Damien Pollet, Andrew P. Black; Squeak by Example; Square Bracket Publishing, 2009
-
[OCaml RM 2011]
(
on-line version) -
Damien Doligez, Alain Frisch, Jacques Garrigue, Didier R´emy and J´erˆome Vouillon; The OCaml System Release 3.12, 2011
-
[Python RM 2012]
(
on-line version) -
Guido van Rossum and Fred L. Drake (editors); The Python Language Reference - Release 2.7.2, 2012
-
[Harper2011]

-
Robert Harper; Programming in Standard ML; Lecture Notes, Spring Semester 2011, Carnegie Mellon University
Essential early computer science papers
Again this section is for the advanced student only. Those papers belong to the early foundations of our field and they can show you how computer science grew out of mathematics, philosophy and logic into an science of its own.
- [Church1932]

-
Alonzo Church; A set of postulates for the foundation of logic; Annals of Mathematics, Series 1932 vol. 2 (33) pp. 346-366
-
[Church1936]

-
Alonzo Church; An unsolvable problem of elementary number theory; American Journal of Mathematics 1936 vol. 58 (2) pp. 345-363
-
[Church1940]

-
Alonzo Church; A Formulation of the Simple Theory of Types; Journal of Symbolic Logic 1940 vol. 5
-
[Gödel1931]
(Translation) -
Kurt Gödel; Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I; Monatshefte für Mathematik und Physik 1931
-
[Huffman1954]

-
David A. Huffman; The synthesis of sequential switching circuits; Journal of the Franklin Institute 1954 vol. 257 (3, 4) pp. 161-190, 275-303
-
[Knuth76]

-
Donald E Knuth; Big Omicron and big Omega and big Theta; Newsletter, ACM SIGACT News, ACM New York, NY, USA (1976) vol. 8 (2)
- [Mealy1955]
-
George H. Mealy; A method for synthesizing sequential circuits; Bell System Technical Journal 1955 vol. 34 (5) pp. 1045-1079
-
[Moore1956]

-
Edward F. Moore; Gedanken-experiments on Sequential Machines; Automata Studies, Annals of Mathematical Studies, Princeton University Press, Princeton, New Jersey 1956 vol. 34 pp. 129–153
-
[Neumann1945]

-
John von Neumann; The First Draft Report on the EDVAC; Technical report 1945
-
[Rice1953] (
on-line version) -
Henry Gordon Rice; Classes of Recursively Enumerable Sets and Their Decision Problems; Transactions of the American Mathematical Society 1953 vol. 74 (2) pp. 358-366
-
[Turing1937]

-
Alan Turing; On computable numbers, with an application to the Entscheidungsproblem; Proceedings of the London Mathematical Society 1937 vol. 2 (42)
Previous textbooks
You can have a look what your ancient predecessors have been treated with.
- [Findlay1978]

-
William Findlay, David Anthony Watt; Pascal, an introduction to methodical programming; Pitman, 1978
- [Cooper1990]

-
Doug Cooper; Oh My! Modula-2!; W. W. Norton & Company, Incorporated, 1990
- [Aho1995]

-
Al Aho and Jeff Ullman; Foundations of computer science: C edition; 1995, out of print, yet available in full on-line
- [Thomas1997]

-
Peter G.Thomas, Raymond A. Weedon; Object-Oriented Programming in Eiffel; The Eiffel in Practice Series. Addison-Wesley, Wokingham, England, 2nd edition,1997
- [Thompson1999]

-
Simon Thompson; Haskell - The craft of functional programming; Addison Wesley, second edition 1999
- [Lewis2003]

-
John Lewis, William Loftus; Java software solutions; Addison Wesley, 2003

