Introduction to Low Level Design Series
What this lesson covers
This lesson introduces the low level design series and explains how it is organised. The series has two parts. The first covers guiding principles, including SOLID, inheritance, composition and encapsulation. These are described as rules that software engineers should usually follow, although they can be broken. They are presented as data-driven: across many projects, engineers have generalised what they learned, and the most general and useful patterns from that experience became principles. SOLID, for example, is an acronym for five such principles. The second part covers design patterns, described as blueprints for thinking. Many problems have been solved before, so engineers can reuse not only code but also the reasoning and conclusions behind earlier solutions. The video's example is building an attendance system for a hospital by taking inspiration from a school's attendance system. To tie these together, the series builds a turn-based game AI engine, a deliberately complex project chosen because it touches most of the design patterns and principles. The requirement is loosely defined: given any turn-based board game, such as chess, Sudoku, Go or Chain Reaction, the AI should be able to play it. Throughout the series, the code is judged on three qualities: readability, extensibility and correctness.
- The series is split into guiding principles and design patterns
- Guiding principles such as SOLID come from experience generalised across many projects
- Design patterns are reusable blueprints for thinking about recurring problems
- The running project is a turn-based game AI engine meant to play any board game
- Code is evaluated for readability, extensibility and correctness