IT643 — Software Design and Testing
Instructor: Ankush Chander | Institute: DA University
Framing Question
If an AI can write, debug, and refactor code on demand — what is left for a software engineer to do?
This course argues that the scarce skill is shifting from producing code to choosing what to build and judging whether the machine got it right.
What You Will Learn
Module 1: Requirements Discovery
- 0: Software Engineering in post LLM era
- 1: Requirement Engineering
- 2: Elicitation & Stakeholder Interactions
Module 2: Taming Complexity
- 3: Deep modules vs Shallow modules
- 3_b: Code review - exercise
- 4: Refactoring
- 5-6: Smells in the data
Module 3: Testing
- 7_8: Unit testing fundamentals & the AAA framework
- 9_10: Choosing what to test, and what makes a test good
- 11_12: Testing with external dependencies: test doubles
- 13_14: Testability and design
- 15_16: Test code quality
Module 4: Design beyond a class
- 17_18: SOLID Principles
- 19_20: The data model
- 21_22: Component principles
- 23: Architecture: boundaries
Labs
| Lab | What you do | Marks | Due date |
|---|---|---|---|
| 1: Make it multiplayer | Add a second player to another group's snake game, then measure what the change cost | 40 | Wednesday, 12:00 PM |
| 2_3: Detect code smell | Detect code smells in the snake game codebase | 40 | Monday(24/Aug/2026), 11:59 PM |
| 4: The tests you cannot write | Try to test five rules of your own snake game, then build the seam that makes one of them possible | 40 | Saturday(26/Sep/2026), 11:59 PM |
Project
Project evaluation — ceiling, deliverables, and how it is scored. Viva immediately after the end-sem exam.
How This Site Works
- Lecture pages — Full Markdown notes with interactive questions (
??? hintblocks to click open). - Labs — Assignment briefs with deliverables and marking criteria.
- Slides — Clickable presentation decks for select lectures (powered by reveal.js / mkdocs-slides).
- Lecture Index — Complete topic map at lectures/README.md.
Prerequisites
- Familiarity with at least one programming language
- Basic understanding of how software systems work
- No prior formal software engineering training required
"The AI did it" is not a defense — your name is on the change. Practice specification and verification as distinct skills.