About
About this map
CS Atlas is an open notebook about the history and structure of computer science. It tries to answer two questions: what the field is made of, and how it became what it is today.
Why this exists
Knowledge in computer science is scattered across courses, papers, documentation and blogs. Beginners see isolated lists; engineers know their own corner well but struggle to place it on the map. This site tries to offer one continuous picture: every topic has a position, a prehistory and neighbours.
It does not aim to be an encyclopaedia. It is closer to an atlas with an editorial point of view: which nodes to include, how to connect them, which history comes first — all of that is a judgement.
How to learn with it
The value here is not finishing every topic; it is a loop you can repeat: pick one → read → self-test → build → mark → review.
Only start when the prerequisites are there
The progress page only suggests topics whose prerequisites you have already touched. Skip them and what you read is just vocabulary.
Self-test right after reading
The self-test on a topic page turns each concept name into a question: answer from memory first, then open it. Whatever you cannot answer is the real gain of that session.
It counts only once you build it
Every topic carries a task worth one evening to one weekend. Tick it off and the topic is marked as built — depth comes from there, not from reading.
Let review come to you
After you mark a topic it comes back for review at 2, 7 and 21 days; answer correctly and the interval doubles. The numbers on the progress page move, and blind spots surface by themselves.
Three editorial rules
Structure first, detail second
Each topic first answers what problem it solves and where it sits, then opens up dates and people. Dates follow the common account, and say “about” where they are disputed.
History is an argument, not decoration
Technical history is not a timeline. Every turn answers a concrete difficulty: memory was too expensive, networks were unreliable, compilers were not clever enough. History is told here to explain today’s designs.
Links first
Knowledge is most valuable at the boundaries. Every topic lists its related nodes explicitly, and jumping sideways is encouraged over reading straight through.
Adding to it
The site is static files with data separated from the interface. To add a topic, append one record to the matching domain file under data/ and refresh: it appears in the graph, the timeline and search.
CS.addTopics([{
id: 'my-topic',
name: 'Topic name',
en: 'English Name',
domain: 'theory', // domain id
year: 1936,
tags: ['tags'],
summary: 'one-line summary',
body: ['first paragraph', 'second paragraph'],
milestones: [[1936, 'event', 'note']],
concepts: [['concept', 'explanation']],
people: [['person', 'dates', 'contribution']],
related: ['turing-machine'],
reading: [['title', 'author', 1936]]
}]);Sources and thanks
The narrative here owes a debt to these books: Computer Science: An Overview (Brookshear), The Innovators (Isaacson), Code (Petzold), Computer Systems: A Programmer’s Perspective (Bryant and O’Hallaron), Introduction to Algorithms (CLRS), The Art of Computer Programming (Knuth) and Structure and Interpretation of Computer Programs (Abelson and Sussman). Facts follow published papers, standards and vendor documentation; corrections to the data files are welcome.
How it is built
Plain HTML, CSS and JavaScript: no build step, no external dependencies, no tracking. The graph is inline SVG with a deterministic ring-cluster layout; the timeline and search are generated in the browser. The whole site works offline by opening index.html.
Licence
The writing is shared under CC BY-NC-SA 4.0 — reuse it with credit, but not commercially, and keep the same licence. The code behind the site is MIT.