COS 501
Techniques in Software Engineering
2 Unit(s) (LH 30)
Course Description
At the end of the course, students should be able to:
1. identify, formulate, and solve software engineering problems, including the specification,
design, implementation, and testing of software systems that meet specification,
performance, maintenance and quality requirements;
2. elicit, analyse and specify software requirements through a productive working relationship
with various stakeholders of a software development project;
3. function effectively as a team member;
4. exhibit professional, ethical and social responsibility of a software engineer;
5. participate in design, development, deployment and maintenance of a medium scale software
development project;
6. convey technical material through oral presentation and interaction with an audience;
7. convey technical material through written reports which satisfy accepted standards for writing
style;
8. use Unified Modeling Language in software specification documents; and
9. evaluate the impact of potential solutions to software engineering problems in a global society,
using the knowledge of contemporary issues and emerging software engineering trends,
models, tools, and techniques.
Course Outline
Software Design Concepts and principles, design of software quality, abstraction, refinement,
modularity, software architecture, control hierarchy, structural partitioning, data structure. Design
methodology, data, architectural, transformation mapping. Post processing design; optimization;
interface design, Foundations of human-computer interaction: Human-centered development and
evaluation. Procedural design: structure programming, graphical notation, tabular notation.
Program Design Language (PDL), A PDL example, Object-oriented design: Concept of patterns
and the use of APIs; modeling tools such as class diagrams, CRC cards, and UML use cases,
Software: re-use and re-engineering, Client/server Software Development, Computer aided
Software Development.