Skip to main content

Prerequisites

This is an advanced course that requires strong foundational knowledge. Before starting, you should have solid experience in the following areas:

C/C++ or Rust

Strong proficiency in systems programming languages

Computer architecture

Understanding of CPU operation, memory hierarchies, and instruction execution

Operating systems

Fundamentals of OS concepts including processes, memory management, and I/O

Data structures

Mastery of algorithms and data structures for implementing complex systems

Programming languages

You’ll be implementing low-level systems throughout this course. Strong systems programming skills are essential.
Strong C/C++ or Rust: You should be comfortable with:
  • Manual memory management (malloc/free, new/delete)
  • Pointers and references
  • Memory layout and alignment
  • Build systems and compilation processes
  • Debugging with tools like gdb or lldb

Computer architecture knowledge

You should understand:
  • CPU instruction cycle (fetch, decode, execute, writeback)
  • Register usage and instruction types
  • Pipelining and branch prediction
  • Cache hierarchies (L1/L2/L3)
  • Virtual memory and address translation
  • Stack vs heap allocation

Operating systems fundamentals

Required knowledge includes:
  • Process and thread management
  • System calls and kernel/user space
  • File systems and I/O
  • Network stack basics
  • Concurrency and synchronization primitives

Data structures and algorithms mastery

You’ll need strong algorithm skills to implement:
  • Trees and graph traversal (for DOM and AST manipulation)
  • Hash tables (for symbol tables and caches)
  • Queues and priority queues (for scheduling)
  • String algorithms (for parsing)
  • Complexity analysis (for optimization)
This course moves quickly through complex material. If you’re not confident in these prerequisites, consider strengthening your foundation first.

Optional but helpful

While not required, these will enhance your learning experience:
  • Familiarity with JavaScript and React
  • Experience with performance profiling tools
  • Basic networking and HTTP protocol knowledge
  • Exposure to compiler or interpreter design
  • Understanding of rendering concepts

Ready to start?

If you meet these prerequisites, you’re ready to dive into the course structure and begin your journey from CPU to browser.
Continue to the course structure to see the complete 12-week curriculum.

Build docs developers (and LLMs) love