Close Menu


Course Title: 
Software Engineering
Educational Level: 
Semester offered: 
Associated Programme: 
B.Sc. CS; B.Sc. IT
Core Course: 
Course Aims: 

The primary goal of the course will be to introduce students to the intricacies in planning and developing large information systems and emphasizing the need for different methods. The students will be introduced to certain techniques and tools to facilitate large information systems development.

  1. Software Design: Fundamental design concepts and principles; The role and the use of contracts; Structured design; Design qualities; Internal - including low coupling, high cohesion, information hiding, efficiency; External - including reliability, maintainability, usability, performance.
  2. Using APIs: Programming using APIs.
  3. Tools and Environments: Programming environments; Requirements analysis and design modelling tools; Testing tools including static and dynamic analysis tools; Tools for source control, and their use in particular in team-work; Configuration management and version control tools; Tool integration mechanisms.
  4. Software Processes: Software life-cycle and process models; Software process capability maturity models; Approaches to process improvement; Process assessment models; Software process measurements.
  5. Requirements Specifications: Systems-level considerations; Software requirements elicitation; Requirements analysis modelling techniques; Functional and non-functional requirements; Acceptability of certainty/uncertainty considerations regarding software/system behavior; Prototyping.
  6. Software Verification Validation: Distinguishing between verification and validation; Static approaches and dynamic approaches; Validation planning; documentation for validation; Different kinds of testing – human-computer interface, usability, reliability, security, conformant to specification; Testing fundamentals, including test plan creation and test case generation black-box and white-box testing techniques; Defect seeding; Unit, integration, validation, and system testing; Measurements: process, design, program; Verification and validation of non-code (documentation, help files, training materials); Fault logging, fault tracking and technical support for such activities; Regression testing; Inspections, reviews, audits.
  7. Software Evolution: Software maintenance; Characteristics of maintainable software; Reengineering Legacy systems; Refactoring.
  8. SE/Software Project Management: Team management; Team processes; Team organization and decision-making; Roles and responsibilities in a software team; Role identification and assignment; Project tracking; Team problem resolution; Project scheduling; Software measurement and estimation techniques; Risk analysis ( The issue of security, High integrity systems, safety-critical systems, The role of risk in the life cycle); Software quality assurance (The role of measurements); Software configuration management and version control; release management; Project management tools; Software process models and process measurements.
  9. Professional Ethics: Community values and the laws by which we live; The nature of professionalism (including care, attention and discipline, fiduciary responsibility, and mentoring); Keeping up-to-date as a professional (in terms of knowledge, tools, skills, legal and professional framework as well as the ability to self-assess and computer fluency); Various forms of professional credentialing and the advantages and disadvantages; The role of the professional in public policy; Maintaining awareness of consequences; Ethical dissent and whistle-blowing; Codes of ethics, conduct, and practice (IEEE, ACM, SE, AITP, and so forth); Dealing with harassment and discrimination; “Acceptable use” policies for computing in the workplace; Healthy computing environment (ergonomics).
  10. Risks: Historical examples of software risks (such as the Therac-25 case); Implications of software complexity; Risk assessment and risk management; risk removal, risk reduction, and risk control.
Course Assessment: 
    • Final Written Examination  40%
    • Coursework:       60%

One Software Development Group Project

    • Requirements Documentation       15%
    • Design Model (e.g., UML diagrams)        15%
    • Presentations (10) using relevant tools, e.g. PowerPoint   15%
    • Final Presentation of Implemented System           15%
Course Prerequisites: 

COMP1126 - Introduction to Computing I, COMP1127 - Introduction to Computing I AND COMP1161- Object-Oriented Programming.

Top of Page