Professional Software Development · 2nd Edition
For students ready to go deeper — design patterns, how the internet really works, DNS and version control — bridging the gap between "can write code" and "builds software well".
Our first Advanced cohort, for students who already had the fundamentals and wanted to write software that lasts. A running card-game project carried the engineering ideas — design patterns, classes and clean structure — while later sessions opened up how the internet, DNS and version control actually work.
Laid out the curriculum — networking, HTML/CSS, Blazor and deployment, and object-oriented programming for managing complexity — and ran an assessment across a console app, a styled web page and a Blazor app, previewing the Blazor concepts to come.
Introduced the running card-game project: a Blazor app showing multiple styled cards, extended so clicking a card selects/de-selects it and reveals more — with the war-game rule that the Joker beats everything.
Extended the project to two players, each able to select a card independently without affecting the other — reinforcing Blazor binding, events and conditionals.
Contrasted software development with software engineering (a shed vs a skyscraper) and the role of patterns and anti-patterns. Taught the Observer pattern — a one-to-many dependency implemented with C# delegates and events — and re-modelled the cards as a design study (a GameCard type, subject and observer views).
Revised the Observer pattern and events in Blazor, walking back through the card exercises as a design exercise, with a deployed version shared on a live Azure static web URL.
Used code-tracing puzzles and connected programming to human cognition (working memory holds only a few "chunks"). Introduced classes as a way to keep data and behaviour together, and added a "Play" round where both cards are compared and the winner takes the points.
Explained networking through streaming a video — bits, servers, data centres and cables — defined protocols, and covered addressing: IPv4 vs IPv6, NAT, DNS and ICANN, ending with buying a domain and serving a page. (There was no session 7 — a deck was repeated.)
Recapped networking with code-tracing exercises, then configured DNS for real — walking through an actual zone file (NS, A, CNAME, MX and TXT records) including GitHub Pages hosting and email configuration.
Taught version control: commits as snapshots, the collaboration problem, and the evolution from file-locking to merging to decentralised Git. Positioned Git and hosted services (GitHub, Azure DevOps), and walked the clone/commit/push/pull workflow.
Recapped Git, then set a festive build: a "North Pole Secret Santa Coordinator" web app with name entry and random pairing — framed as a friendly competition between two teams.