Learn

Every subject in the library. Open one to see its topics in order, or follow a path if you would rather be told what comes next.

14 subjects · 172 topics · 1429 cards

Show subjects in

14 subjects

  • Subject · Beginner to Advanced

    Running software in containers, and building images that other people can run.

    • Running Containers
    • Building Images
    5 topics · 29 cardsnot started
  • Subject · Beginner to Advanced

    Writing Java that compiles, runs, and models a problem with objects.

    • The Language
    • Objects
    • When Things Go Wrong
    15 topics · 131 cardsnot started
  • Subject · Intermediate to Advanced

    Holding data in the right Java collection, and transforming it without writing a loop.

    • Collections
    • Pipelines
    9 topics · 78 cardsnot started
  • Subject · Intermediate to Advanced

    Running Java on more than one thread without corrupting the data underneath.

    • Threads and What They Cost
    • Why Shared State Breaks
    • Locks
    5 topics · 43 cardsnot started
  • Subject · Beginner to Advanced

    Wiring a Java application together with Spring's IoC container, instead of doing it by hand.

    • Why Spring Exists
    • The Bean and the Container
    • Wiring Beans Together
    4 topics · 25 cardsnot started
  • Subject · Intermediate to Advanced

    Building a REST service with Spring Boot: wired to real data, validated, and fast enough to trust in production.

    • Spring Boot Essentials
    • Building REST APIs
    • Data Access
    12 topics · 77 cardsnot started
  • Subject · Beginner to Advanced

    Turning a product's requirements into a first design for a web system, and knowing what each part is there for.

    • Starting a Design
    • The Parts of a System
    • Moving Data Around
    11 topics · 100 cardsnot started
  • Subject · Beginner to Advanced

    Recognising object-oriented code that will be hard to change, and restructuring it with the five SOLID principles.

    • Design Rot and the Five SOLID Principles
    • Single Responsibility Principle
    • Open/Closed Principle
    7 topics · 58 cardsnot started
  • Subject · Beginner to Advanced

    Recognising the 23 classic design patterns from a class diagram or from code, and implementing each in Python, Java and TypeScript.

    • Foundations
    • Creational Patterns
    • Structural Patterns
    28 topics · 225 cardsnot started
  • Subject · Beginner to Advanced

    Following a request from an application down through the network layers and back, and naming the layer where a network problem lives.

    • Getting a Packet There
    • Between Two Programs
    • Applications and Debugging
    11 topics · 106 cardsnot started
  • Subject · Beginner to Advanced

    Designing HTTP APIs that clients can understand, call safely, and keep using as the API changes.

    • HTTP for API Designers
    • Designing the Contract
    • Repeats, Retries and Long Jobs
    14 topics · 132 cardsnot started
  • Subject · Beginner to Advanced

    Choosing a data structure by the cost of its operations, and implementing arrays, linked lists, stacks, queues, hash tables, trees, heaps, tries and graphs in Python, Java and TypeScript.

    • Measuring Cost
    • Sequences and Lookup
    • Recursion and Trees
    15 topics · 122 cardsnot started
  • Subject · Intermediate to Advanced

    Tracing, implementing and proving the cost of the classic searching, sorting and graph algorithms, and designing new ones with divide and conquer, backtracking, greedy choice and dynamic programming, in Python, Java and TypeScript.

    • Searching and Simple Sorting
    • Efficient Sorting
    • Design Strategies
    19 topics · 168 cardsnot started
  • Subject · Intermediate to Advanced

    Recognising which of the common problem-solving patterns an unseen coding problem needs, and solving it in Python, Java or TypeScript within the time an interview allows.

    • Approach
    • Array and Number Patterns
    • Linked List Patterns
    17 topics · 135 cardsnot started