Project Sherlock

Technology & Engineering

Computer Science

What can be computed, how fast, and how to build machines and programs that do it reliably.

16 fields · 191 topics · 317 curated works

Fields within Computer Science

Algorithms & Data Structures

15

The core toolkit — and the difference between a program that finishes and one that does not.

Foundations & Overviews · Asymptotic Analysis · Sorting & Searching · Arrays, Lists & Hash Tables · Trees & Balanced Search Trees

Theory of Computation

13

The mathematical limits of machines, established before the machines existed.

Foundations & Overviews · Automata Theory · Formal Languages & Grammars · Turing Machines · Computability & Decidability

Programming Languages

13

How languages are designed, what they let you say, and what they prevent you from saying.

Foundations & Overviews · Language Design Principles · Type Systems · Static vs Dynamic Typing · Functional Programming

Compilers & Interpreters

11

Turning source text into something a machine will execute.

Foundations & Overviews · Lexical Analysis · Parsing · Abstract Syntax Trees · Semantic Analysis

Computer Architecture

13

The machine underneath the abstraction.

Foundations & Overviews · Instruction Set Architecture · Pipelining · Superscalar & Out-of-Order Execution · Cache Hierarchies

Operating Systems

11

The program that manages every other program.

Foundations & Overviews · Processes & Threads · Scheduling · Virtual Memory · File Systems

Computer Networks

11

Moving bits between machines that do not trust each other.

Foundations & Overviews · The OSI & TCP/IP Models · Routing & Switching · TCP & Congestion Control · DNS

Databases & Data Systems

13

Storing data so it survives, and querying it so the answer arrives.

Foundations & Overviews · Relational Model · SQL · Query Optimisation · Indexing & Storage Engines

Distributed Systems

13

Systems where partial failure is the normal case.

Foundations & Overviews · Consistency Models · The CAP Theorem · Consensus Algorithms · Paxos & Raft

Security & Cryptography

16

Adversarial computing — the only discipline with an opponent.

Foundations & Overviews · Symmetric Cryptography · Public Key Cryptography · Hash Functions · Digital Signatures

Software Engineering

15

Building systems that other people will have to maintain.

Foundations & Overviews · Software Architecture · Design Patterns · Testing & Test Strategy · Debugging

Computer Graphics & Visualisation

11

Turning models into pixels, and data into pictures.

Foundations & Overviews · Rasterisation · Ray Tracing · Physically Based Rendering · Shading & Lighting Models

Human-Computer Interaction

9

The part of the system that a person actually touches.

Foundations & Overviews · Interaction Design · Usability Testing · Accessibility · Information Architecture

Formal Methods & Verification

9

Proving software correct rather than testing it and hoping.

Foundations & Overviews · Model Checking · Theorem Proving · Program Logics · Static Analysis

Quantum Computing

9

A different model of computation, with a different complexity landscape.

Foundations & Overviews · Qubits & Quantum Gates · Quantum Circuits · Shor's Algorithm · Grover's Algorithm

History of Computing

9

How we got from mechanical calculators to whatever this is.

Foundations & Overviews · Babbage & Lovelace · The Turing Era · Early Mainframes · The Personal Computer Revolution

Reading in Computer Science

317

A way in

  1. Start here

    No prior grounding assumed.

    As We May Think

    Vannevar Bush · 1945

    Proposes the memex, an associative trail-following machine, and anticipates hypertext by two decades.

    +34 more at this level

  2. Then

    Assumes you know the vocabulary.

    Reflections on Trusting Trust

    Ken Thompson · 1984

    You cannot trust code you did not totally create yourself — a compiler can hide a backdoor that survives inspection of its own source.

    +87 more at this level

  3. Go deeper

    Primary sources and full treatments.

    A Mathematical Theory of Communication

    Claude Shannon · 1948

    Defines information quantitatively and proves the limits of compression and error-free transmission over noisy channels.

    +193 more at this level

12 of 317 works

Essay1985

The GNU Manifesto

Richard Stallman

Announces the GNU project and argues software should be free to run, study, share and modify, laying out the ethical case for free software that the later open-source movement would recast in more pragmatic terms.