Skip to content

The Computer Science Book

Resources

Chapter Checklist

  • Introduction
  • Theory of computation
    • Introduction
    • Automata theory
    • Computability
    • Algorithmic complexity
    • Conclusion
    • Further reading
  • Algorithms and data structures
    • Introduction
    • Data structures
    • Abstract data types
    • Algorithms
    • Conclusion
    • Further reading
  • Computer architecture
    • Introduction
    • Representing information
    • Circuits and computation
    • The processor
    • Memory
    • Performance optimisations
    • Conclusion
    • Further reading
  • Operating systems
    • Introduction
    • Common operating systems
    • The boot process
    • Interrupts: hardware support for software
    • The kernel
    • Managing the processor
    • Managing memory
    • Managing persistence
    • Conclusion
    • Further reading
  • Networking
    • Introduction
    • What is a network?
    • The networking stack model
    • The Internet Protocol
    • Transmission Control Protocol
    • Internet addressing and DNS
    • The web, hypertext and HTTP
    • Conclusion
    • Further reading
  • Concurrent programming
    • Introduction
    • Concurrency, parallelism and asynchrony
    • Determinacy and state
    • Threads and locks
    • JavaScript and the event loop
    • Communicating sequential processes in Go
    • Conclusion
    • Further reading
  • Distributed systems
    • Introduction
    • Why we need distributed systems
    • A theoretical model
    • Handling network partitions: the CAP theorem
    • Consistency models
    • Consistency protocols
    • Conclusion
    • Further reading
  • Programming languages
    • Introduction
    • Defining a programming language
    • Programming language concepts
    • Programming paradigms
    • Type systems
    • Conclusion
    • Further reading
  • Databases
    • Introduction
    • What does a database offer?
    • Relational algebra and SQL
    • Database architecture
    • B-trees
    • Indexes
    • Concurrency control in SQLite and Postgres
    • Conclusion
    • Further reading
  • Compilers
    • Introduction
    • Compilation and interpretation
    • The program life-cycle
    • Building a compiler
    • Who to trust?
    • Conclusion
    • Further reading