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
- Subject · Beginner to Advanced
Writing Java that compiles, runs, and models a problem with objects.
- The Language
- Objects
- When Things Go Wrong
- Subject · Intermediate to Advanced
Holding data in the right Java collection, and transforming it without writing a loop.
- Collections
- Pipelines
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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