Index of John Sturdy's Teaching pages


General advice to students

Overview of the subject

Revision advice

This page is mostly out of date; I will update it when I have the time. In brief: I am now a university researcher, and have given a lecture course on Operating Systems, at the University of Limerick.

Old material

By arrangement with my employer at the time, I used to do some supervision of Cambridge University CS students.

I've written this page in the hope that it will be

  • a useful reference point for my students
  • some encouragement for Cambridge CS graduates from local computing companies to do some supervising -- your alma mater (``Bountiful mother''; distinct from ``Alma Ata'' (``Father of Apples'') which is a town in Central Asia; mind you, they might need you too!) needs you!

On-line resources made available by lecturers

A dictionary of Computer Science

There is an on-line reference of CS terms in FOLDOC -- the Free On-Line Dictionary Of Computing. This is made from contributions from over 400 people on the net, so its quality could be variable, although the entries I've look at seem fine.

External supervisors

This teaching forms part of the network of traditional links between the lab and the surrounding technical companies. Although in many departments and faculties, opportunities to supervise are all rapidly filled by the staff and graduate students of the department, the Computer Lab is usually short of supervisors from within, and arranges for supervisions to be given by people from the many computing companies in the Cambridge area.

If you have a Cambridge CS degree, and are interested in doing some supervision, do get in touch with someone at the lab; if you don't know who to contact there, mail me and I'll find someone. I find teaching very rewarding, particularly when I have taken someone from not understanding something important in the course to understanding it. (By the way, it is paid, not voluntary, work.) See also Frank King's notes on supervising.

General notes on being a student

I've prepared a separate page of general advice about being a student.

An overview of the structure of the subject

I think it is important to see how the different areas of a subject fit together, and encourage students to develop an awareness of the subject as a whole. I have my own view (which is, of course, right) on how Computer Science is structured; here is a summary, as best I can express it in a few minutes of HTML-writing.

Lambda calculus

An area of teaching that has often confused students is programming languages and lambda calculus, and to get round this I started to teach people Lisp. I've now distilled this teaching into written form, both as heavily-commented elisp files that you can download and learn-by-doing on, and as marked-up WWW documents. If you download the plain elisp files and try running them, you may find show-eval.el useful for displaying the results.

  1. Introduction to Syntax of Lisp Evaluator for Teaching (also available for downloading and running as a plain elisp file)
  2. (unpolished)Lisp Evaluator for Teaching (also available as a plain elisp file)
  3. Compilation (to be written)
  4. Partial evaluation (to be written)
  5. Lazy evaluation (to be written)
  6. Meta-tower evaluation (to be written)
with more to come.

Structure and Interpretation of Computer Programs

For teaching lambda calculus, and some other areas of CS, I'm considering going over to the Scheme dialect of Lisp, and am starting to recommend the book Structure and Interpretation of Computer Programs (SICP for short) by Abelson and Sussman, MIT Press 1985, ISBN 0-262-01077-1 (also published by McGraw-Hill as ISBN 0-07-000-422-6). Your college library may already have this; if it doesn't, it's a reasonable one to suggest they get.


I have started to write a page about revision although for now it is fairly succinct!

General notes

Introduction to Syntax of Lisp

Lisp Evaluator for teaching




Contact me
Last modified: Fri Aug 30 17:16:31 1996 [Home]