CS3203 focuses on practice of software engineering in the Software Development Life Cycle (SDLC). It provides students with hands-on experience in working in project groups through a complete SDLC to develop a well-designed, well-tested, large-scale software system. This first part focuses on applying best software engineering practices on the analysis and design of software systems. The students will practice the analysis of user’s needs, formulation of computing requirements to meet the user’s needs, modeling and design of the computer system according to the requirements, and evaluation of the design.
You can quickly find out about the approach taken in this project course, and about experiences teaching it in the paper "Teaching an Advanced Design, Team-oriented Software Project Course", published in the Proceedings of the 26th Conference on Software Engineering Education and Training (2013).
CS3203 replaces the former CS3201 and CS3202 (both of which are worth 4 modular credits). It looks deep into software architecture issues, and requires students to do team work with elements of individual assessment during requirements analysis and architecture design.
The essence of this course is advanced software design in action. Students learn to apply design principles and "best development practices" in practice. Architectural design, design specifications and evaluation of alternative design solutions that lead to quality code are emphasized throughout the course. The problem students work on is carefully selected to demonstrate the application of design principles. The size of the problem and iterative development style make it difficult to succeed in the project without applying a principled and systematic approach to design, documentation, development and testing.
Specific objectives are:
- Apply software engineering principles in practice
- Follow the SDLC according to the "best software engineering practices"
- Define and document software architecture, justify design decisions
- Apply and consolidate what students have learned in these three programming courses: CS1101, CS1102 and CS2103
- Develop an ability to work as part of a group in a project of substantial size and complexity
- Enhance project planning skills
- Develop writing skills
- Develop a well-tested, production-quality software system in iterative development
- Prepare students for industrial projects