- Student Records
Programme & Unit Catalogues

Department of Computer Science, Unit Catalogue 2010/11


CM50109: Formal methods & programming

Click here for further information Credits: 12
Click here for further information Level: Masters
Click here for further information Period: This unit is available in...
Semester 1
Click here for further information Assessment: CW 100%
Click here for further informationSupplementary Assessment: Like-for-like reassessment (where allowed by programme regulations)
Click here for further information Requisites:
Click here for further information Description: Aims:
(a) to develop an understanding of how the principles behind software development are much more important than the chosen programming language, and how specification and design choices may have a major impact on the correctness and suitability of the final software solution;
(b) to develop a systemic understanding of software development paradigms for complex software system building;
(c) to develop skills in critically analysing problems for appropriate software solutions;
(d) to develop an understanding of, and skills in the use of, formal methods as part of the software design process.
(e) to develop group working skills in software development, and an understanding of how teams are built and interact.

Learning Outcomes:
After taking this unit the student should be able to:
* identify issues and appropriate solutions for the design and implementation of complex software problems;
* perform evaluations of design solutions to determine their fitness for purpose;
* demonstrate an understanding of the principles of software development paradigms and their relationship to the appropriateness of an eventual software solution;
* demonstrate an understanding of the use of formal methods as part of the development of software solutions;
* work effectively in a team to develop a software solution to a given problem.

Skills:
Choosing appropriate design techniques (T F A); designing software solutions in modular and object-oriented programming languages (T, F, A); Formally specifying solutions for modular languages, and incorporating these specification into hierarchical object models, and implementing software solutions based on these models (T, A). Group working (T, A).

Content:
The building blocks of software. Software design paradigms: abstraction, modularisation, encapsulation, data hiding, clientship, reuse, forms of inheritance and their meanings. Use of formal specification techniques and their place in the software development lifecycle. Principles for engineering complex software systems. The effect of the programming language on design and implementation issues. The differences (and similarities) between modular programming and object oriented programming. Software project management and group working (with associated group project).
NB. Programmes and units are subject to change at any time, in accordance with normal University procedures.