Overview
This course develops intermediate proficiency in object-oriented programming and introduces disciplined software-engineering practice. Topics include classes and objects, encapsulation, constructors, inheritance, polymorphism, interfaces, composition, exception handling, generics or type systems, collections, and reusable libraries.
Students apply requirements elicitation, user stories, use cases, domain modeling, UML or equivalent design notation, modular architecture, cohesion, coupling, design patterns, code style, refactoring, documentation, and maintainability principles. Practical work emphasizes unit and integration testing, test-driven or test-first development, debugging, code review, version control, branching, issue tracking, continuous integration concepts, and collaborative workflows.
A team project requires students to progress from requirements through design, implementation, testing, documentation, and presentation. The course develops the ability to design coherent solutions, evaluate alternatives and trade-offs, produce reliable and readable code, use collaborative tools effectively, and apply iterative development processes.
Learning Outcomes
- Design coherent object-oriented solutions using encapsulation, inheritance, polymorphism, interfaces, composition, and appropriate abstraction.
- Implement reliable and maintainable software using collections, generics or type systems, exception handling, reusable libraries, and established coding conventions.
- Analyze requirements using user stories, use cases, domain models, and UML or equivalent design notation.
- Evaluate alternative architectures, design patterns, and implementation strategies with reference to cohesion, coupling, extensibility, and maintainability.
- Construct unit and integration tests and apply test-driven or test-first techniques to verify software behavior.
- Diagnose defects using systematic debugging, testing evidence, code inspection, and version-control history.
- Apply branching, issue tracking, code review, and continuous integration practices in collaborative software development.
- Synthesize requirements, design, implementation, testing, documentation, and presentation into a functioning team software project.
Timetable
| Type | Length | Frequency | Period |
|---|---|---|---|
| Lecture | 2 hours | Weekly | All semester |
| Lab | 2 hours | Weekly | All semester |
| Tutorial | 1 hour | Fortnightly | All semester |
| Workshop | 1 hour | Fortnightly | Second term |
Assessment Schedule
| Type | Description | Weighting |
|---|---|---|
| Quiz | Quizzes (5 × 2%) | 10.00% |
| Assignment | Object-oriented design assignment | 15.00% |
| Test | Practical programming test | 15.00% |
| Capstone | Team software project | 30.00% |
| Deliverable | Code review and collaborative workflow record | 5.00% |
| Exam | Final examination | 25.00% |
Prerequisites
Teaching Staff & Programs
This course is delivered jointly by faculty from the participating programs listed below. In line with the Douchewater Way, the University of Sexology tailors core instruction directly to each cohort's specific discipline — adapting curriculum to program needs rather than forcing students into a one-size-fits-all model. Learn more about our approach at The Douchewater Way.


