A one-page tutorial on writing a virtual machine for the LC-3 architecture in C, ending with real LC-3 programs running. in C, C++ & Rust →
Algorithms
Algorithms and data structures, to learn, visualise and practise.
50 links
Draw a graph in the browser and run shortest path, connectivity and flow algorithms on it. in Mathematics →
Jeremy Kun’s blog joining mathematics with working code — cryptography, graphs, the maths of machine learning. in Mathematics →
A channel working through algorithms on a board with complexity analysis. in Learning & Roadmaps →
A platform that visualises an algorithm step by step alongside its code, and runs code you write yourself. in Learning & Roadmaps →
A channel explaining computer science concepts in conversation with academics. in Learning & Roadmaps →
The classic collection of step-by-step animations for data structures and algorithms, from red-black trees to Dijkstra. in Learning & Roadmaps →
The classic whiteboard series on data structures and algorithms. in Learning & Roadmaps →
Orders algorithm problems by topic dependency — two pointers into sliding window into dynamic programming. in Learning & Roadmaps →
An open textbook presenting data structures in Java, C++, Python and pseudocode side by side. in Learning & Roadmaps →
A browser visualisation that animates how SHA-256 turns an input into a hash, showing the bits in memory and each round. in Learning & Roadmaps →
One puzzle a day each December, with the archive open year round. in Practice & Challenges →
Java implementations of algorithms and data structures. in Practice & Challenges →
A stepwise framework for approaching an interview algorithm problem — constraints, examples, brute force, optimise, test. in Practice & Challenges →
A Japan-based contest platform whose beginner rounds (ABC) are more approachable for newcomers than Codeforces. in Practice & Challenges →
An online judge grading programming, mathematics and SQL problems automatically, formerly URI Online Judge. in Practice & Challenges →
A single colour-coded table of time and space complexity for data structures and sorting algorithms. in Practice & Challenges →
A piece correcting common misunderstandings of big-O notation. in Practice & Challenges →
A collection of common bit-level tricks — the patterns that turn up in low-level optimisation and interview questions. in Practice & Challenges →
A competitive algorithm platform with regular contests, difficulty-tagged problems and published editorial solutions. in Practice & Challenges →
The busiest competitive programming platform, with regular rounds and a rating system. in Practice & Challenges →
A skills assessment and interview platform that produces a standardised score you can send to several companies. in Practice & Challenges →
The assessment platform companies use for technical screening, with a practice section open to candidates. in Practice & Challenges →
A free handbook for competitive programming, from basic algorithms to advanced techniques. in Practice & Challenges →
An English translation and extension of the e-maxx.ru write-ups on competitive-programming algorithms, each topic with code and practice problems. in Practice & Challenges →
A visualisation tool built for Georgia Tech’s data structures course — narrower than VisuAlgo but aligned exactly to a syllabus. in Practice & Challenges →
A service that emails one coding-interview problem every day. in Practice & Challenges →
A very broad article archive of algorithms, data structures and interview questions. in Practice & Challenges →
Combines contests with hiring assessments — companies run technical screening here. in Practice & Challenges →
Opens up the reasoning steps rather than handing over the answer, showing how you move from brute force to optimal… in Practice & Challenges →
Gamified interview preparation. Unlike LeetCode’s open problem pool, topics are ordered by dependency, each building on the last. in Practice & Challenges →
The most widely used bank of interview questions, filterable by company tag. in Practice & Challenges →
Tushar Roy’s large collection of coding-interview problems and solutions. in Practice & Challenges →
A roadmap that groups LeetCode problems by topic and pairs each with a solution video. in Practice & Challenges →
Mathematical problems where brute force does not finish; solutions need number theory or combinatorial insight. in Practice & Challenges →
Well-explained small programming projects, heavy on maths and algorithms. in Practice & Challenges →
A wiki showing the same small problem solved in hundreds of languages. in Practice & Challenges →
A long-running online judge with a large archive of classic algorithm problems. in Practice & Challenges →
Stanford’s problem-solving course for technical interviews with open materials — it teaches a way of thinking rather than a question bank. in Practice & Challenges →
A channel presenting data structures and algorithms as an ordered curriculum. in Practice & Challenges →
An archive of data structure and algorithm problems grouped by topic, with C++, Java and Python solutions. in Practice & Challenges →
One of the oldest competitive programming platforms; its problem archive and editorials form a slice of algorithm history. in Practice & Challenges →
The classic arena for timed algorithm competitions (SRM). in Practice & Challenges →
The classic competitive programming tutorials, many from the early 2000s, on subjects that do not age. in Practice & Challenges →
A channel working algorithm problems step by step, best known for its dynamic programming series. in Practice & Challenges →
A classic online judge auto-grading hundreds of contest problems. in Practice & Challenges →
Animates data structures and algorithms step by step. in Practice & Challenges →
An online book on writing fast code for modern hardware: cache hierarchy, SIMD, branch prediction. in Free Books & Long Reads →
A single-table reference for the time and space complexity of data structures and sorting algorithms. in Cheat Sheets & Quick Reference →
NIST’s dictionary of algorithms and data structures, with a short definition, a formal statement where one exists, and links to implementations. in Cheat Sheets & Quick Reference →