Everyone's talking about AI adoption. Almost nobody has the real numbers. Help us change that — and get the full report 👉 Engineers | Leaders

Software Design & Systems

Learn the design patterns, testing practices, and system design principles that separate working code from well-engineered software — from GoF patterns to scalable distributed architectures.


Creational Design Patterns

Patterns for object creation — singleton, factory, abstract factory, prototype, and builder.

  • [ ] Design Patterns Overview [text] free
    • Explain what design patterns are
    • Classify patterns into creational, structural, and behavioral categories
    • Read UML class diagrams
    • Implement singleton (thread-safe)
    • Implement factory and abstract factory patterns
    • Implement prototype pattern
  • [ ] Builder & Object Pool [text] free
    • Implement builder for complex construction
    • Describe object pool pattern

Structural Design Patterns

Patterns for composing classes and objects — adapter, decorator, facade, proxy, composite, and flyweight.

Behavioral Design Patterns

Patterns for communication between objects — observer, strategy, command, state, iterator, visitor, and more.

    • Implement observer (pub/sub) pattern
    • Implement strategy (interchangeable algorithms) pattern
    • Implement command (encapsulated actions) pattern
    • Implement state machine pattern
    • Implement Python iterator protocol
    • Implement visitor pattern
    • Implement memento (snapshot/restore) pattern
    • Implement delegation pattern
    • Implement template method pattern

Testing

Unit testing, mocking, dependency injection, and test-driven development.

    • Explain unit test purpose
    • Write test cases with assertions
    • Organize test suites
    • Explain mock objects and test doubles
    • Implement dependency injection
    • Describe integration testing
  • [ ] Test-Driven Development [text] free
    • Apply red-green-refactor cycle
    • Write tests before implementation
    • Identify TDD benefits and limitations

System Design Fundamentals

Scalability, databases, caching, load balancing, and distributed systems concepts.

  • [ ] Scalability Principles [text] free
    • Define horizontal vs vertical scaling
    • Explain load balancing
    • Describe caching strategies
  • [ ] Databases & Storage [text] free
    • Compare SQL vs NoSQL
    • Explain sharding and replication
    • Describe CAP theorem
    • Explain consensus algorithms
    • Describe message queues
    • Identify microservices tradeoffs

System Design Practice

Hands-on system design exercises — URL shortener, cache system, and social feed.

    • Walk through system design for a URL shortener
    • Identify bottlenecks
    • Propose solutions
  • [ ] Designing a Cache System [text] free
    • Design a distributed cache (Memcached/Redis-like)
    • Handle eviction and consistency
  • [ ] Designing a Social Feed [text] free
    • Design a news feed system
    • Handle fan-out strategies
    • Optimize for read-heavy workloads

Computer Security & Parallel Programming

Security fundamentals, parallel programming concepts, and garbage collection.

    • Identify common attack vectors
    • Explain defense-in-depth
    • Describe secure coding practices
  • [ ] Parallel Programming [text] free
    • Distinguish parallelism from concurrency
    • Explain MapReduce
    • Describe Python multiprocessing
  • [ ] Garbage Collection [text] free
    • Explain reference counting and tracing GC
    • Describe generational collection
    • Identify GC implications