Skip navigation

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.

[IPA2013] pdf document (updated 1.2.2013)

 

Further essential information and support can be found at:

 

Acrobats

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] link

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] pdf document (link on-line version)

Bernie Pope, Clem Baker-Finch (2007 revision); A Tour of the Haskell Prelude

[GHC UG 7.6.1] pdf document (link on-line version)

The GHC Team;The Glorious Glasgow Haskell Compilation System - User's Guide, Version 7.6.1

[Marlow2010] pdf document (link 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] (link on-line version)

Miran Lipvača; Learn You a Haskell for Great Good; ISBN: 978-1-59327-283-8 (2011), 2011

[O'Sullivan2008] (link 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] pdf document

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] pdf document

C++11 Standard; ISO/IEC 9899:201x (N1570)

[Goldberg1983] pdf document (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] pdf document

Oscar Nierstrasz, Stéphane Ducasse, Damien Pollet, Andrew P. Black; Squeak by Example; Square Bracket Publishing, 2009

[OCaml RM 2011] pdf document (link 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] pdf document (link on-line version)

Guido van Rossum and Fred L. Drake (editors); The Python Language Reference - Release 2.7.2, 2012

[Harper2011] pdf document

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] pdf document

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

[Church1936] pdf document

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

[Church1940] pdf document

Alonzo Church; A Formulation of the Simple Theory of Types; Journal of Symbolic Logic 1940 vol. 5

[Gödel1931] pdf document (Translation)

Kurt Gödel; Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I; Monatshefte für Mathematik und Physik 1931

[Huffman1954] pdf document

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] pdf document

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] pdf document

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] pdf document

John von Neumann; The First Draft Report on the EDVAC; Technical report 1945

[Rice1953] (link 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] pdf document

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] Pascal

William Findlay, David Anthony Watt; Pascal, an introduction to methodical programming; Pitman, 1978

[Cooper1990] Pascal

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

[Aho1995] Pascal

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

[Thomas1997] Pascal

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

[Thompson1999] link

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

[Lewis2003] Pascal

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

 
 

Updated:   Wednesday 11 January, 2012 12:25 / Responsible Officer:   JavaScript must be enabled to display this email address. / Page Contact:   Course Webmaster