Syllabuses - UG

CS308 - Building Software Systems

TIMETABLETEACHING MATERIAL
Credits20
Level3
SemesterSemester 1
AvailabilityNot available as an elective.
PrerequisitesCS207 Advanced Programming
Learning Activities BreakdownLectures: 10 | Labs: 20
Assignments: 100 | Self study: 70
Assessment100% classwork
LecturerAbdulsalam Kalaji

Aims and Objectives

To extend and deepen the students understanding of the analysis, design and implementation of software systems; to provide further experience in the activity of designing and implementing non-trivial systems; and to enable the student to demonstrate practical competence in a group environment.

The goal for the student is the development in a group setting of significant systems from scratch aiming not just at any solution but a good solution, and to be introduced to more general Software Engineering topics.

Learning Outcomes

On completion of the class, a student should be able to:

  • understand the need for working effectively within a team environment, on practical software engineering problems, including planning and managing a group’s workload
  • display a disciplined approach to good practices in the general area of software engineering, and to apply software engineering techniques to practical problems
  • appreciate the importance of organisation, management and professionalism in the development of large scale software
  • undertake a requirements analysis and to write a software requirements specification
  • determine, from an object-oriented analysis, a detailed design which incorporates the necessary technical infrastructure and which provides a basis for implementation
  • identify opportunities for re-use, including the use of design patterns
  • distinguish between designs in terms of their intrinsic quality and in terms of objective criteria such as flexibility, robustness to change etc.
  • implement, verify and validate a medium-sized software system
  • effectively employ a range of software development tools e.g. IDEs, version control, testing and issue tracking

Syllabus

Further study of software engineering methods drawn from the following: requirements analysis and specification, establishing stakeholders’ viewpoints, use-case modelling, systems analysis, specification, design (in particular the development of a detailed design for the construction phase, designing for re-use and future change, further design patterns, design metrics, implementation and testing of designs), implementation, defensive programming, verification and validation, and maintenance. Further study of software development tools, especially those that facilitate software development in a group context (e.g. version control and configuration management tools, xUnit etc.). Software engineering management: project management, team organization.

The substantial practical activity will exercise skills from a selection of syllabus topics, and will incorporate group projects. This material thus provides a broader experience of the management and organisation of software processes for the production of large-scale software.

Recommended Reading

This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

Peopleware: Productive Projects & Teams 2nd Edition: Productive Projects and Teams. Tom DeMarco, and Timothy Lister. Dorset House Publishing, 1999. | Stocked at Amazon (Other retailers are available)

Code Complete: A Practical Handbook of Software Construction. Steve McConnell, Microsoft Press; 2nd edition, 2004. | Stocked at Amazon (Other retailers are available)

Last updated: 2022-09-09 13:40:49