coding-interview-university
A complete computer science study plan to become a software engineer.
A battle-tested, months-long self-study plan covering the computer science fundamentals needed to pass technical interviews at top tech companies, created by someone who used it to get hired as a Software Development Engineer at Amazon.
This repository is a long, opinionated study plan that the author (John Washam) put together while preparing to interview at large tech companies. He used it himself for several months of full-time study and was eventually hired as a Software Development Engineer at Amazon. He shares it so other self-taught engineers can prepare for technical interviews at companies like Amazon, Facebook, Google, and Microsoft without having to assemble the material themselves.
The README is upfront about what it is and is not. It is a plan for backend software engineering interviews, not frontend or full-stack roles, and it covers roughly the 75% of a computer science curriculum that the author judges to be relevant for interviews. The author explicitly warns the reader not to study as much as he did, and points to Kamran Ahmed's Computer Science Roadmap for anyone who wants a more complete self-taught CS program.
The body of the README is a large table of contents that lays out both the meta-advice and the technical curriculum. The meta sections include why to use the plan, how to use it, how to choose a programming language, recommended books for data structures, algorithms, and interview prep, the author's own mistakes to avoid, a daily plan template, and pointers for coding question practice.
The technical curriculum then walks through algorithmic complexity and Big-O analysis, core data structures (arrays, linked lists, stacks, queues, hash tables), supporting ideas (binary search, bitwise operations), trees (binary search trees, heaps and priority queues, balanced search trees, traversals such as preorder, inorder, postorder, BFS, and DFS), sorting algorithms (selection, insertion, heapsort, quicksort, mergesort), graphs (directed and undirected, adjacency matrix, adjacency list, BFS, DFS), recursion, dynamic programming, design patterns, combinatorics and probability, and the theory of NP and NP-complete problems. The README is also translated into many languages, with separate translations in progress tracked through GitHub issues.
Where it fits
- Follow a structured, all-in-one study plan to prepare for software engineering interviews at Amazon, Google, Meta, or Microsoft.
- Learn the core computer science topics most relevant to interviews, algorithms, data structures, and Big-O analysis, as a self-taught developer.
- Use the built-in daily plan template and recommended book list to pace a multi-month interview prep campaign.
- Review the author's documented mistakes to avoid over-studying and focus only on the 75% of CS that actually appears in interviews.