CS3 Programming Methodology

CS3 Programming Methodology

This page is obsolete. Everything below is from 2000/2001 which is the last time this module was taught.

Time, place and scope

This module runs in term 1. The CS3 Handbook entry is here. Lectures take place in JCMB Lecture Theatre A on Tuesdays at 1pm and in Chemistry Lecture Theatre T250 on Thursdays at 9am. There are no tutorials.


In the course we will discuss how to build systems and the control of that process. The lecture content is structured into five sections. Each section has its own short page describing the material available. The course log provides an account of what has happened, including when handouts were issued so you can check you have everything that has been issued without rummaging through the CS3 pigeon hole (outside the ITO, room 1502). All the handouts are online and can be accessed via the course log.

The lecture notes try to provide a short summary of the main points for each of the main activites involved in developing a system. This can often seem rather abstract. To provide a concrete example of practice the above pages give pointers to local copies of a number of documents which provide detailed guidance. The main source of these is the NASA Software Engineering Laboratory. It may be useful to browse this site because it provides a good example of best practice in the development of systems.

Acknowledgement: This course was taught by Stuart Anderson until 1998/99 and the lecture notes and some other material were written by him.

Office Hours

There are no tutorials for this course. There are however four tutors with designated office hours during which they are available to answer questions. These are:
Ambrose Nankivell (ambrosen@cogsci.ed.ac.uk), 2R16 in 2 Buccleuch Place, 12-1 Thursday
Ambrose Nankivell (ambrosen@cogsci.ed.ac.uk), 2R16 in 2 Buccleuch Place, 1-2 Thursday
Don Sannella (dts@dcs.ed.ac.uk), 1616 JCMB, 1-2 Thursday
Alan Smaill (smaill@dcs.ed.ac.uk), 2611 JCMB, 1-2 Thursday
To enter 2 Buccleuch Place, you will need to ring the bell on the 2nd floor and wait to be let in.

Group Project

The coursework is a self-assessed project done in groups of six students. The practical exercise handout is here, which includes the report forms for deliverable 1 and deliverable 2. Some resources on e-cash and other information relevant to the exercise are here.

An exercise on specification in Extended ML is here.

Here is some feedback on deliverable 1.

Additional material

Software Engineering: There is quite a bit of useful material on software engineering on the web. More material may be added to the following list as the course progresses.

ML: A tutorial introduction to ML that mostly covers core ML is here (and here is a printable version). Material on the modules system is here (under "Module Language") and here. Browsable documentation on the Moscow ML Library is here and a 2-up postscript version of the same thing is here.

EML: A tutorial introduction to specifying and verifying ML programs with examples is here.

Past exam papers

The content of this course has changed significantly over time so the more recent exam papers are a better guide to the style of the exam than the less recent papers. FAQ for the Prog Meth exam.

Running Standard ML

On Linux
Type mosml to the shell to start Moscow ML version 2.00. Then type use "file.sml"; to load an SML source file called file.sml.

Documentation: try typing help "topic"; in Moscow ML for information about topic. There are various manuals at the Moscow ML website, including the Moscow ML library manual (2-up postscript version).

If you have a home machine

Moscow ML version 2.00 is free and can be downloaded from here.

Running Extended ML

On Linux
Type eml to the shell to run the Warsaw EML Kit parser/typechecker (v1.1). Then type use "file.eml" to load the contents of file.eml. Type control-D to quit.

If you have a home machine

The Warsaw EML Kit (v1.1) can be downloaded from these local copies: eml11-src.tar.gz (source) eml11-i386.tar.gz (i386 Linux binaries) eml11-sparc.tar.gz (Sun SPARC Solaris binaries), or directly from Warsaw.

Here are a couple of tips on getting the Extended ML system to accept your specifications.

Don Sannella. Please mail me if you have any comments on this page.
Last modified: Fri Apr 29 09:11:24 BST 2011