This course is about getting comfortable with the parts of a computer that most programmers courses treat as "someone else’s problem". When people say "system programming", they usually refer to layers of software that stays close to the operating system and the machine. It’s the area where details matter.
We’ll use Linux as our main reference point, because by being open source it exposes these layers in a relatively direct way, and because a lot of the concepts and terminology in system programming are easiest to explain with a concrete operating system in mind. The goal isn’t to turn you into a Linux administrator, and it isn’t to teach "Linux tricks"; it’s to use Linux as a clear example of ideas that also show up elsewhere.
We’ll move through four broad layers:
- binary (how information is represented and manipulated as bits and bytes)
- hardware (the practical model of how CPUs and memory behave)
- kernel (the privileged core that controls resources and exposes system calls)
- userland (the programs, libraries, shells, and conventions that make a Linux system feel usable)
You don’t need to be an expert in any of these to start; the course is structured so that each layer makes the next one less mysterious.
This is a theory-focused course. You won’t be asked to build projects, or set up a complicated development environment. Instead, the course aims to give you a mental model you can use: when you later see a crash, a weird performance problem, a permissions issue, or a confusing file format, you’ll have a way to reason about what could be happening and what questions to ask next. To make that possible, the explanations will spend time on definitions, on how conventions formed, and on the tradeoffs that led to the systems we use today.
This is a beginner course, but it is not a "no friction" course. Some parts will feel slower than typical programming material, because we’ll be careful about foundations. The payoff is that later topics that often feel like "magic" (where memory goes, what a file really is, why permissions matter, why performance changes) will start to feel like something logical rather than superstitious.
If you take it one section at a time, you’ll be surprised how quickly the "mysterious parts" of a computer begin to feel familiar. So open the next section, follow the thread, and give yourself permission to be confused sometimes: let's start!