skip to primary navigationskip to content

Department of Computer Science and Technology

Resource lists

 

Library resources

Fortran

Fortran 77 Standard
The official Fortran 77 standard, ANSI X3J3/90.4, freely available here in HTML format. Although it may not be exactly the same as the printed version of the standard, a lot of useful information about the implementation of the language can be found in this document.
Interactive Fortran 77
The full text of Ian Chivers and Jane Sleightholme's book of the same title which is now out of print.
Fortran 95 Standard
A draft copy of the Fortran 95 standard, produced by J3, the US Fortran standards committee. This draft is sufficiently close to the final international standard to be useful, but is not necessarily correct in all details. The final version is not freely available.
Fortran 2000 Standard
Like the above, but a draft of the international standard ISO/IEC 1539-1 for Fortran 2000. Again, the final version is not freely available.

C++

Thinking in C++
Bruce Eckel's Thinking in C++, the printed copy of which is available in the library. There is also a similar book featuring the Java programming language (see below).
Thriving in a crowded and changing world: C++ 2006-2020
A free version of The design and evolution of modern C++ by Bjarne Stroustrup. Note that although the PDF file is hosted on the ACM Digital Library, it states that it is available under a Creative Commons Attribution-No Derivatives license, although access would normally be available through the University’s ACM subscription.

Java

The Java language specification
The free online version of the official Java language specification. This edition has been updated for Java SE8.
The Java virtual machine specification
The free online version of the official Java virtual machine specification. This edition has been updated for Java SE8.
Java tutorials
A collection of online Java tutorials which are parallel to the content in Oracle’s official Java tutorial book.
Thinking in Java
Bruce Eckel's Thinking in Java, the Java counterpart to the C++ book above. This is the third edition which is freely available online where the more recent 4th edition is not.

Haskell

Real world Haskell
An online version of the O'Reilly book with the same title. The full text is freely available, although you are encouraged to buy the printed book if you find it useful. It is also available in print in the library.
Haskell Wikibook
This is a Haskell tutorial hosted on Wikibooks which has substantial content, appears largely complete and well laid out. There is also a PDF version for reading offline.
Learn you a Haskell for great good [sic.]
This is a beginner's level tutorial to the Haskell language aimed at those with some previous programming experience, but who are new to functional programming. As the title implies the book has a distinctive style(!)

Julia

Official documentation
The official documentation on the Julia language website. This is also available in PDF format.
Think Julia
An online version of the book by Ben Lauwens and Allen Downey. This was conceived as an introduction to computer science and programming using the Julia language. It is a similar concept and style to Think Python. The printed book is published by O'Reilly.

ML

Introduction to Standard ML
Bob Harper's Introduction to Standard ML. A working draft of a thorough book length introduction to the ML language.
Basis Library
Documentation for the Standard ML Basis library. This material formed part of the book published by Cambridge University Press which is available in the library.

Objective Caml

O'Reilly book
A preliminary version of a translation from the French title: Développement d'applications avec Objective Caml, which was published by O'Reilly. The translation is reasonably complete, but there may be some errors in it.
User's manual
The official user manual for the Objective Caml system. The first two sections of the manual provide information about the syntax of the language, while the remainder covers use of the langauge tools and libraries.
OCaml from the very beginning
The popular book by John Whitington, recommended for part 1A is now freely available online due to a grant from the OCaml Software Foundation

Prolog

Logic programming in Prolog
An online version of the book by Ulf Nilsson and Jan Maluszynski. The book itself is out of print but the full text remains freely available here.
The Art of Prolog
An online version of one of the texts for the part IB Prolog course. This is hosted on the KU open research library and there is an online reader, although there is also an option to download a copy in PDF format.

Perl

Perldoc
The official site for documentation of the Perl language and various standard modules. This includes a variety of tutorials and references of various parts of the language.
Free Perl books
A list of Perl books with freely available full-text versions. This is hosted on www.perl.org which also has a range of other Perl resources.

Python

Python documentation
The official list of Python documentation including that supplied as part of the standard distribution of the language.
Python Cookbook
An extremely comprehensive online collection of fragments of Python code covering most requirements. Also included are basic details on how to use each method and how they work.
NumPy reference
An introduction to the NumPy package of numerical extensions for Python. Good documentation for this package is hard to find, although another list of documents is available on the SciPy website.

Scala

Scala reference manual
Scala is a pure object-oriented, type safe language which compiles to, and is fully interoperable with, Java. The official reference manual can be found via the above link, and there are also some tutorials from the same site.
Scala by example
A draft copy of Martin Odersky's book Scala by Example. This title is on the undergraduate reading list and is at present only available online.
Programming in Scala
The first edition of the popular book by Martin Odersky, Lex Spoon and Bill Venners. The printed book is now in the third edition, but this older edition is probably still useful.

Compilers

LLVM
The Low Level Virtual Machine is widely used as an intermediate representation in language compilers. Formal published documentation is scarce, but the online documents here are a good starting point.

Programming language semantics

The Semantics of programming languages
Matthew Hennessy's book, The Semantics of programming languages. This is now out of print, so this is the only source other than the library's copy. Please note that this file is compressed postscript, so you will need gzip and ghostview or similar tools to read it.
Structure and interpretation of computer programs
Although quite old now, this book is still an important text in the field. It is also recommended background reading for the Paper 10 Meta-Programming course.