COURSE CODE: COMP 2140
COURSE TITLE: Software Engineering
SEMESTER: 2
CREDITS: 3
PRE-REQUISITES: COMP 1126, COMP 1127 AND COMP 1161
RESTRICTION: FOR BSc SOFTWARE ENGINEERING STUDENTS ONLY
COURSE CONTENT:
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 toolsincluding 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 behaviour; 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 criticalsystems, 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 asthe 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. 
 

ASSESSMENT

Coursework           60%
Final Examination (2 Hours)           40%
Top of Page