Learning Outcomes:
On successful completion of this module, the student will be able to:
1. Apply object-oriented design principles — encapsulation, inheritance, the Liskov Substitution Principle, and SOLID — to design and implement well-structured Java classes and systems, correctly identifying and preserving class invariants.
2. Select and apply appropriate design patterns to a given design problem, distinguishing genuine structural need from unnecessary complexity.
3. Critically evaluate AI-generated code for correctness, security, and design quality using a structured evaluation framework, and identify, explain, and correct seeded or naturally occurring defects.
4. Design and implement automated unit and system tests for both human-written and AI-generated code, and assess a codebase for technical debt, proposing remediation strategies.
5. Identify security vulnerabilities characteristic of AI-generated code against the OWASP risk categories, and apply secure design practice, specification, and contract-based design to prevent them.
6. Work effectively within a team to design, build, test, and document a non-trivial software system, and individually justify and defend design decisions and AI-assisted contributions under questioning.
7. Evaluate the ethical, legal, and professional implications of AI-assisted software engineering — data protection, intellectual property, and bias — and apply responsible-AI judgment in practice.
Indicative Module Content:
Week 1: Software engineering in the AI era; AI-assisted development — tools and responsible use.
Week 2: Classes, objects and encapsulation; prompt engineering basics for Java.
Week 3: Inheritance, polymorphism and interfaces; recognising flaws in AI-generated class hierarchies (LSP violations, the IS-A trap).
Week 4: Exceptions, generics and collections; lambdas, streams and AI-assisted debugging.
Week 5: SOLID as a diagnostic grammar; diagnosing SOLID violations in AI-generated code.
Week 6: Design patterns as a working set: creational, structural and behavioural patterns.
Week 7: Specification and requirements in the AI era; prompting as specification.
Week 8: Testing what you didn't write: JUnit 5, test-driven development, coverage limits, mutation testing and auditing generated test suites.
Week 9: Technical debt at machine speed; code smells, refactoring and maintenance at scale.
Week 10: Security in AI-generated code: OWASP Top 10:2025, secure prompting and the software supply chain.
Week 11: Trust calibration: CI/CD, DevOps and quality gates; ethics, intellectual property and professional responsibility.
Week 12: The human layer and module retrospective; optional enrichment on building AI-powered features (not examinable).