Lecturer: Dr R.J. Anderson (firstname.lastname@example.org)
No. of lectures: 6
This course aims to introduce the students to software engineering, and in particular to the problems of building large systems, safety-critical systems and real-time systems. Case histories of software failure are used to illustrate what can go wrong, and current software engineering practice is studied as a guide to how failures can be avoided.
At the end of the course students should know how writing programs with tough assurance targets, in large teams, or both, differs from the programming exercises they have engaged in so far. They should appreciate the waterfall, spiral and evolutionary models of software development and be able to explain which kinds of software project might profitably use them. They should appreciate the value of other tools and the difference between incidental and intrinsic complexity. They should understand the software development life cycle and its basic economics. They should be prepared for the organisational aspects of their Part IB group project (in the case of Part IA students) or their first professional assignment (in the case of Part II (General) and Diploma students).
Pressman, R.S. (1994). Software Engineering. McGraw-Hill.
Leveson, N. (1994). Safeware. Addison-Wesley.
Maguire, S. (1993). Writing Solid Code. Microsoft Press.
Brooks, F.P. (1975). The Mythical Man Month. Addison-Wesley.
Neumann, P. (1994). Computer-Related Risks. ACM Press.
Lyu, M.R. (1995). Handbook of Software Reliability Engineering. IEEE Computer Society Press.
Wiener, L.R. (1993). Digital Woes. Addison-Wesley.
Report of the Inquiry into the London Ambulance Service (SW Thames RHA, 40 Eastbourne Terrace, London W2 3QR, February 1993).