[The University of Leicester]

Department of Mathematics & Computer Science

Next: CO1011 Logic and Discrete Structures Up: Year 1 Previous: CO1004 Algorithms and Data Structures

CO1006 Software Engineering and Professional Practice

CO1006 Software Engineering and Professional Practice

Credits: 10 Convenor: Dr S. J. Ambler Semester: 2

Prerequisites: essential: CO1003
Assessment: Coursework: 40% Two hour exam in May/June: 60%
Lectures: 18 Problem Classes: 6
Tutorials: none Private Study: 45
Labs: none Seminars: none
Project: none Other: none
Surgeries: 6 Total: 75

Subject Knowledge


To understand the problems and difficulties and issues associated with specifying, designing and building high quality large software systems. To discuss the management, professional and ethical issues of software development.

Learning Outcomes

Students will have a broad understanding of the development processes involved in producing a large software system. They will be able to write clear and concise goals for projects, presenting the information in a well structured fashion suitable for measuring project progress. They will to be able to make reasoned choices among alternative development paths. They will understand the need for quality assurance techniques, and gain the knowledge required to apply suitable strategies in simple cases. Students will understand what ``professionalism'' means in the context of the software industry, They will be aware of the legal and ethical issues likely to affect every professional in the software industry.


Class sessions together with course notes, recommended textbooks, worksheets.


Marked coursework (including 1 written essay and 1 spreadsheet assignment), written examination.

Subject Skills


To develop analytical and problem solving skills, including the ability to make appropriate abstractions. To make reasoned judgements based on quantitative data. To learn skills in research and presenting ideas in a written form.

Learning Outcomes

Students will be able to: formulate technical problems and their solution in a methodical way; justify solutions quantitatively; research an issue and present their findings in writing in a balanced manner.


Class sessions together with worksheets.


Marked coursework, written examination.

Explanation of Pre-requisites

This module assumes that you have some feeling for the problems inherent in writing software and therefore some prior programming experience is required. In addition, it is beneficial if you are alert to current issues in software engineering as they occur and are reported in the news media.

Course Description

By the late 1960's it had become very clear within the software and computing industries that there were major problems inherent in the construction of large software systems. Many projects were delayed, or never completed. Those that were completed were over budget. A large proportion of systems were found to be unsatisfactory in use: they were ``buggy'' and required constant maintenance to fix problems; they did not satisfy the needs of the actual users.

In this module we will be taking an introductory look at the many approaches that have been devised and developed to try to tackle these problems in the past 30 or more years, and trying to assess how successful they have been. These techniques have generally resulted in a more structured and controlled development lifecycle for software systems, and as a result the people involved have had to adopt a more professional attitude. The module examines what it means to be a professional in the software industry.


Software development a brief history of software development; the problems of software development; the software development crisis; a solution -- software engineering.

The system development process developing large systems; the need for abstraction; the development process.

The system development cycle managing the development process; how software is produced; frameworks for system development.

Planning a software project describing project goals; evaluating project goals; choosing solutions to meet the project goals.

Quality assurance what is quality; the development cycle and QA; documentation requirements; validation and verification; reviews and inspections; measuring the development process.

Testing and maintenance testing the result; behavioural testing techniques; testing for quality.

The professional software engineer what is software engineering; professional practice; ethics; ensuring quality; standards and procedures; standards and procedures; tools for management.

Reading list


R. Pressman, Software Engineering -- A Practitioner's Approach, European 5th edition, McGraw Hill, 2000.

R. Ayres, The Essence of Professional Issues in Computing, Prentice Hall, 1999.


T. Gilb, Principles of Software Engineering Management, Addison-Wesley, 1988.

I. Sommerville, Software Engineering, 6th edition, Addison-Wesley, 2001.

F. Bott, A. Coleman, J. Eaton, D. Rowland, Professional Issues in Software Engineering, 3rd Edition, UCL Press, 2001.

R.G. Epstein, The Case of the Killer Robot, John Wiley and Sons, 1997.


Course notes, web page, study guide, worksheets, handouts, lecture rooms with OHP and data-projector, past examination papers.

Module Evaluation

Course questionnaires, course review.

Next: CO1011 Logic and Discrete Structures Up: Year 1 Previous: CO1004 Algorithms and Data Structures

[University Home] [MCS Home] [University Index A-Z] [University Search] [University Help]

Author: N. Rahman, tel: +44 (0)116 252 3902
Last updated: 2003-09-23
MCS Web Maintainer
This document has been approved by the Head of Department.
© University of Leicester.