Skip to content

Repository files navigation

COS730 – Software Engineering (I)

Official Module: Software Engineering (I) 730 (COS 730)
University of Pretoria – Honours | NQF Level 08 | 15 credits
Lecturers: Dr. Avinash Singh & Ms. Sara Mir
Semester 1, 2026

GitHub repo size GitHub language count GitHub top language


Module Overview

This module covers advanced perspectives of Software Engineering theory and practices, focusing on overcoming challenges of scale, complexity, and urgency in contemporary systems. It bridges historical theories with current practices for predictable, repeatable, and value-producing software development.

Key themes include:

  • Object Interaction Modelling & Dynamic Behaviour
  • Responsibility-Driven Design (GRASP Patterns)
  • Modelling Transformational, Rule-Based, and Persistence Systems
  • Applying Situation-Specific Patterns
  • Software Configuration Management & Maintenance
  • Technical Debt, Software Evolution, and Security

Assignments Overview

# Assignment Format Focus Area Due Date
1 Responsibility Patterns Report (Design & Modelling) Object Interaction, GRASP, high cohesion/low coupling 19 March 2026
2 Situation-Specific Patterns Code + Report Baseline vs Optimised implementation, persistence frameworks, refactoring 14 May 2026

Getting Started

Each assignment is self-contained within its own folder. Navigate into the relevant folder and consult its internal README.md for specific instructions tailored to that submission.

  • Assignment 1 is a design‑only report – open the PDF to review the models and analysis.
  • Assignment 2 includes a fully functional Java/Maven implementation – follow the build and run instructions in its README.

All assignments are structured to be explored independently, so you can dive straight into the one that interests you most.


Module Outcomes Demonstrated

These assignments collectively demonstrate the ability to:

  • Analyse and model system behaviour using interaction modelling techniques.
  • Apply responsibility-driven design principles to produce cohesive, loosely coupled designs.
  • Select and adapt modelling approaches for diverse system types (transformational, rule-based, event-driven).
  • Evaluate and apply design patterns judiciously, acknowledging trade-offs.
  • Design persistent state management that preserves domain integrity.
  • Identify technical debt and apply refactoring to improve design quality.
  • Justify design decisions using professional terminology and clear documentation.

About

Advanced Software Engineering (COS730) assignments – Object Interaction Modelling, GRASP Patterns, Persistence Frameworks, and Software Evolution at the University of Pretoria.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages