Practice
Reading and watching tell you that you've seen something. Practice tells you whether you can do it. These 43 places are free (a few need a free account), and each one lists the stops it tests, so you know when to use it.
Coding and algorithms
- Top Interview 150
LeetCode
Grouped by topic, which makes it a good map of interview DSA. Needs a free account.
PractisesRecursionBig-O and running timeArrays, lists, stacks and queuesHash tablesTrees and heaps
- CSES Problem Set
CSES
PractisesSorting and searchingGraph algorithmsGreedy algorithmsDynamic programmingSolving problems under pressure
- Codeforces problemset
Codeforces
Every problem has a difficulty rating, so you can climb steadily.
PractisesSolving problems under pressure
- Exercism
Exercism
Free practice tracks with mentoring, one per language.
PractisesKotlinC#PHPSwift and iOSProgramming in PythonFunctions and abstractionObjects and designC and memoryJavaGoC++JavaScriptTypeScript
- Project Euler
Project Euler
Maths puzzles you solve with code.
PractisesDiscrete maths
- Rustlings
The Rust community
Small broken programs you fix one at a time, on your own machine.
PractisesRust
- Type Challenges
Anthony Fu and contributors
PractisesTypeScript
SQL and data
- SQLBolt
SQLBolt
Short interactive lessons that run in the browser.
PractisesSQL
- PostgreSQL Exercises
Alisdair Owens
Runs in the browser against a real database.
PractisesSQLWhy a query is slow
- SQL 50
LeetCode
PractisesSQL
- HackerRank SQL
HackerRank
- Kaggle Learn
Kaggle
Short hands-on courses that run in the browser.
Practisesscikit-learnSQLData wrangling with pandasData visualisationFeature engineeringTime series and forecastingMachine learningComputer visionDeep learning in practice
- pandas exercises
Guilherme Samora
PractisesData wrangling with pandas
- TidyTuesday
R for Data Science community
A new real dataset every week. Works just as well with pandas.
PractisesData visualisationProject: analyse a public dataset
- Kaggle Datasets
Kaggle
PractisesPower BIProject: analyse a public datasetProject: answer a business question with data and a modelTableau
Machine learning and deep learning
- Kaggle competitions
Kaggle
PractisesProject: answer a business question with data and a modelMachine learning
- Understanding Deep Learning notebooks
Simon J. D. Prince
Sixty-eight Python notebooks with the key code left for you to fill in.
PractisesNeural networks and backpropagationConvolutional networksAttention and transformersGenerative modelsReinforcement learning
- Learn PyTorch exercises
Daniel Bourke
PractisesPyTorch
Web development
- Frontend Mentor challenges
Frontend Mentor
Real designs to build, from newbie to advanced. Most are free.
PractisesHTML and CSSReact
- Responsive Web Design
freeCodeCamp
PractisesHTML and CSS
- Back-End Development and APIs
freeCodeCamp
Node and Express, with projects checked by automated tests.
Systems, built from scratch
- Nand to Tetris projects
Noam Nisan, Shimon Schocken
Twelve projects with tests, from logic gates to a compiler, run in the free online tools.
PractisesCompilers and virtual machinesDigital logicHow a computer runs a program
- OSTEP homeworks
Remzi and Andrea Arpaci-Dusseau
Small simulators for scheduling, paging, threads and file systems. Each asks you to predict the result before you run it.
PractisesProcesses and virtual memoryConcurrencyStorage and file systems
- 6.1810 Operating System Engineering labs
MIT
Labs on xv6, a small teaching OS. Hard and very good.
- BusTub
CMU Database Group
The teaching database behind CMU 15-445’s projects.
PractisesHow databases work
- 6.5840 Distributed Systems labs
MIT
Build MapReduce and Raft in Go, with tests that try to break them.
PractisesDistributed systems
- Maelstrom
Jepsen
A workbench that runs your toy distributed system and checks it.
PractisesDistributed systems
- Build your own X
CodeCrafters and contributors
Tutorials for rebuilding real tools from scratch.
PractisesBuilding an interpreter
Git, DevOps and cloud
- Learn Git Branching
Peter Cottle
PractisesGit
- GitHub Skills
GitHub
Short courses that run inside your own GitHub repository.
- Kubernetes 101 labs
Killercoda community
A real cluster in the browser. Needs a free account.
PractisesKubernetes
Security
- TryHackMe
TryHackMe
Guided rooms with a machine to attack in the browser. Many are free.
PractisesSecurity fundamentalsDetecting attacksComputer networks
- OverTheWire wargames
OverTheWire
PractisesProject: work through beginner CTFsThe shell and command-line toolsLinux administrationReading logs and troubleshooting
- picoCTF
Carnegie Mellon University
PractisesSecurity fundamentalsProject: work through beginner CTFsSystems security
- Web Security Academy
PortSwigger
Free labs where you exploit real vulnerabilities in a safe sandbox.
PractisesBurp SuiteWeb security
- The Cryptopals crypto challenges
Matasano Security (now part of NCC Group)
PractisesCryptography
Maths, probability and quant puzzles
- Khan Academy exercises
Khan Academy
Short practice sets that check each answer, with hints.
PractisesCalculusStatistics
- 6.042J problem sets (Fall 2010)
Tom Leighton, Marten van Dijk
- 18.06SC Linear Algebra, problems and solutions
Gilbert Strang
The self-paced version of 18.06. Each session ends with problems and worked solutions.
PractisesLinear algebra
- Brainstellar
Brainstellar
Probability and logic puzzles from quant interviews.
PractisesProbability
Finance
- QuantConnect
QuantConnect
Free backtesting on real market data, in Python or C#.
PractisesProject: backtest a trading strategy
Design
- Daily UI
Daily UI
A design prompt in your inbox every day for 100 days.
PractisesUX and UI design
Embedded
- Wokwi
Wokwi
An Arduino, ESP32 and Raspberry Pi Pico simulator in the browser.
PractisesMicrocontrollersTalking to hardwareReal-time operating systemsProject: build a working device