School of Computer Science

Module 06-25078 (2012)

ICY: Software Engineering

Level 1/C I

Rami Bahsoon Semester 2 10 credits
Co-ordinator: Rami Bahsoon
Reviewer: Alan Sexton

The Module Description is a strict subset of this Syllabus Page.


The aims of this module are to:

  • Introduce the software life-cycle and its main stages
  • Demonstrate that the production of quality software in a cost-effective and productive way requires a systematic and disciplined approach

Learning Outcomes

On successful completion of this module, the student should be able to:

  • explain why the production of a large, quality-assured piece of software is a task demanding a disciplined approach to all stages, closely analogous to the methodology used in more traditional engineering activities
  • explain the concept of the software lifecycle
  • demonstrate knowledge of relevant concepts for each stage of the software life-cycle
  • understand the application of software engineering approaches, both as an introduction to professional practice and as an aid to project work

Teaching methods

2 hrs lectures/tutorials per week


  • Sessional: 1.5hr examination (100%)
  • Supplementary: 1.5hr examination (100%)

Detailed Syllabus

  1. Introduction: definitions and history of software engineering; models of the software lifecycle.
  2. Requirements definition: outline, documentation, validation.
  3. Design: general concepts of traditional designs (structure, modularity, hierarchy), inheritance; design methods; validation.
  4. Implementation: choice of language and coding strategies; testing and debugging, including white-box and black-box testing.
  5. Validation: techniques for each stage - informal reviews, formal reviews, testing, formal proofs.
  6. Documentation: quality, types, techniques for each stage.
  7. Management of software projects: principles; personnel issues; estimation, scheduling and costing.