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.
- Requirements and Specification
- Design and Implementation
- Verification and Validation
- Planning and Management
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.
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 (email@example.com), 2R16 in 2 Buccleuch Place, 12-1 ThursdayTo enter 2 Buccleuch Place, you will need to ring the bell on the 2nd floor and wait to be let in.
Ambrose Nankivell (firstname.lastname@example.org), 2R16 in 2 Buccleuch Place, 1-2 Thursday
Don Sannella (email@example.com), 1616 JCMB, 1-2 Thursday
Alan Smaill (firstname.lastname@example.org), 2611 JCMB, 1-2 Thursday
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.
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.
- The technology page of the Software Engineering Institute at Carnegie-Mellon University contains a useful overview of software engineering.
- The Software Engineering pages of Wikipedia and Online Computer Science Degree Resources are useful starting points when you are looking for information.
- The Future of Software Engineering is an up-to-date summary of the state of the art in each of the key areas of software engineering, which sets out the key challenges facing software engineers and an outline of ways in which such challenges might be met.
- For examples of the kinds of things that can happen when software is not developed to an appropriate standard see: Nancy Leveson. Medical Devices: The Therac-25, 1995 or the official report on the Ariane 5 failure, 1996. An analysis of software failures in medical devices is in Dolores Wallace and Richard Kuhn. Lessons from 342 Medical Device Failures, 1999.
- The Formal Methods Wiki has loads of useful information about formal methods. For a sketch of the state of the art in formal methods as of 1996, with lots of examples of application areas, see: Edmund Clarke and Jeannette Wing. Formal Methods: State of the Art and Future Directions. Report of Formal Methods Working Group, ACM Strategic Directions in Computing Research, 1996.
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.
- January 1995, June 1995 and September 1995
- June 1996 and September 1996
- June 1997 and September 1997 (Note: These papers appear to be first drafts or have been poorly scanned, and contain errors.)
- June 1998 and September 1998
- June 1999 and September 1999
- January 2000 includes sample solutions. Remarks about some common errors are here.
- June 2000 and September 2000
- June 2001 and September 2001
Running Standard ML
On LinuxType 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 machineMoscow ML version 2.00 is free and can be downloaded from here.
Running Extended ML
On LinuxType 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 machineThe 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.