HOME    Past Students    Fellows    Courses    Competition    Self-Study    LINKS    CONTACT

ComputerScience@Corpus: Self Study


One good thing to do before starting is to learn to touch type at a reasonable speed. As a professional Computerist you can look pretty silly if you type with just two fingers, however fast you are!

Your Own Computer

Although not in any way expected or required, it is a good idea to have your own computer and to have installed Linux on it before you have arrived. All of our course can be followed without Linux or unix experience, but the majority of lecturers and students use Linux for most of their work (or recent versions of MacOS which are another form of unix).

If you are not already using a favourite version of Linux perhaps choose the distribution that is currently used for our MCS+Linux practical classes. The Computer Laboratory internally mainly uses Ubuntu. In the second year of the Tripos there is a course on how to install and use Linux for the still uninitiated.

Recommended Reading

For many years the following book was recommended by us:
  • Computer Science: A Modern Introduction
    by Les Goldschlager: Pub: Prentice Hall, International Series in Computer Science.
    Although the theory and content are still highly valuable, this book's references to contemporary computers are now out of date.

Books currently recommended by the Computer Laboratory include:

  • The New Turing Omnibus
    by A Kee Dewdney. Pub: Palgrave Macmillan, 2003, ISBN 978-0805071665
    Remember to try the exercises at the end of each chapter.

  • How to Think Like a Mathematician
    by Kevin Houston. Pub: Cambridge University Press, 2009, ISBN 978-0-521-71978-0
    Don't be misled by the title; this book is absolutely relevant for computer scientists. Especially, please read parts I and III.

A favourite of mine (DJG) when I was an A-level student was the following:

  • Godel, Esher, Bach
    by Douglas Hofstadter. Pub: Basic Books ISBN 978-0-465-02656-2.
    This is a highly entertaining book, although it is rather long given the small amount of technical content. It covers Godel's incompletness theorem which is lectured in the second year of our course.

Some Programming Experience?

It is a good idea to have written at least one program before you arrive, although we must emphasise that this is not at all required.

//A random fragment of program (imperative language):
    { print("Hello World - I am going to be a Computer Scientist!
      return 0; }

//Another fragment of nonsense program (functional language):
    let rec explode_my_stack(int n) = explode_my_stack(n+1);

David Greaves has a current favourite programming language: F Sharp - designed by his ex Computer Laboratory cricket team colleague Don Syme. F # runs perfectly on Linux/mono. It is basically ML (the first language taught to Undergraduates on the CST Tripos) but has instant access to all the dot net library facilities. Mind you, for speed of execution in recent place-and-route, proof engine and digital audio projects, David has used C and C++. BTW: Bjarne Stroustrup, designer of C++ shared an office with Andy Hopper when they were both postgraduates at the Computer Laboratory and Bjarne is a visiting fellow at the Laboratory this year. Disclaimer: having a favourite language is not necessarily a good idea: one should always use the best tool for the job! Having written a program in Second Life's scripting language or languages for children like Mindstorms or Logo for Turtles is just as good in terms of introductory experience.

Hardware Hands-on Experience

In some years, every proto-undergraduate is sent a Raspberry Pi board by the department as soon as admission acceptance is confirmed. We produced this board because hands-on hardware has always been a major part of our ethos and there seemed to be a gap in what was cheaply available.



There is plenty of online courseware for Computer Science. Ours is one of the subjects for which Wikipedia entries tend to be completely accurate and as good as the best text books. The NAND To Tetris online courseware covers a good selection of topics from the first two years of our course and is well worth private study. If you are on top of this material before you arrive then you will have that much more time to devote to the more abstract subjects while you are here.

It's also pretty much expected of any Computerist that they can upgrade the motherboard in a PC or install a new hard disk or memory DIMM. This is not computer science and it is certainly not taught on our course, but it is another useful skill for self-study.

MV Wilkes      

'Some people object to the term 'Computerist', but I have heard it used by Sir Maurice V Wilkes himself and he built the first practical, electronic, stored-program computer, so it must be a good term.' -- David Greaves.

HOME    Past Students    Fellows    Courses    Competition    Self-Study    LINKS    CONTACT