Everyone Can Learn Program
中文 Start learning

Programming tutorials

119 free lessons in 17 courses, from your first line of Python to system design. Every lesson explains the idea in plain words, gives the exact definition, walks through runnable examples line by line, names the common mistakes and ends with a quiz.

Want to practise? Every lesson has an interactive version: edit and run the examples, then solve exercises that are checked in your browser.

Foundations

Start here if you are new.

Core skills

What every engineer uses.
Linux and the Command Line6 lessons · about 8 h

Work on a server the way engineers do: files, search, pipes, permissions, services and scripts, in a safe practice terminal.

  1. Files and folders
  2. Reading and searching
  3. Pipes and redirection
  4. Permissions and sudo
  5. Processes and services
  6. Shell scripts
Git and GitHub6 lessons · about 6 h

Commit, branch, merge, resolve conflicts, push and pull, the way teams work, in a safe practice repository.

  1. Commits
  2. Seeing and undoing changes
  3. Branching and merging
  4. Merge conflicts
  5. Remotes: push and pull
  6. .gitignore and pull requests
Data Structures and Algorithms8 lessons · about 16 h

The patterns behind interview problems: complexity, two pointers, hash maps, stacks, binary search, recursion, graphs and dynamic programming, each with speed tests.

  1. Big-O: counting steps
  2. Two pointers and sliding windows
  3. Hash maps and sets
  4. Stacks and queues
  5. Binary search
  6. Recursion and merge sort
  7. Graphs: BFS and DFS
  8. Dynamic programming
Operating Systems6 lessons · about 8 h

Scheduling, races and locks, virtual memory, caches, deadlock and file systems, each built as a small simulation you can run.

  1. Processes and scheduling
  2. Threads, races and locks
  3. Virtual memory and paging
  4. Page replacement and LRU
  5. Deadlock
  6. File systems

Specialties

Pick the direction you want to work in.
DevOps: Containers, CI and Kubernetes5 lessons · about 10 h

Package apps with Docker, run stacks with Compose, test and deploy with GitHub Actions, and run them on Kubernetes.

  1. Containers and the Dockerfile
  2. Layers, caching and small images
  3. Docker Compose
  4. CI with GitHub Actions
  5. Kubernetes basics
Cloud and Reliability5 lessons · about 8 h

Terraform, permissions, autoscaling and SLOs: build cloud infrastructure and keep it healthy.

  1. Terraform basics
  2. Plans and state
  3. IAM and least privilege
  4. Autoscaling
  5. SLOs and error budgets
AI Foundations6 lessons · about 9 h

Data, regression, gradient descent, nearest neighbours, honest evaluation and retrieval, built from scratch in Python.

  1. Data, features and labels
  2. Linear regression and loss
  3. Gradient descent
  4. k-nearest neighbours
  5. Measuring a model
  6. Embeddings and retrieval
System Design5 lessons · about 8 h

Estimate the load, then cache, shard, rate-limit and queue: the building blocks of systems that stay up, each one coded and tested.

  1. Back-of-the-envelope estimates
  2. Caching
  3. Load balancing and consistent hashing
  4. Rate limiting
  5. Queues, retries and idempotency