Computing Fundamentals

Every abstraction you work with eventually lands on the same machinery: a processor fetching instructions, a memory hierarchy that is fast only when you are predictable, an operating system multiplexing many programs onto a few cores, and bytes that only mean something once both sides agree on an encoding. You can ship a lot of software without thinking about any of it — until a loop that "should" be fast is ten times slower than expected, an emoji corrupts a database column, or adding threads makes a service slower.

This topic collects the fundamentals that explain those surprises. It is written for developers rather than hardware engineers: each guide starts from a symptom you have probably seen, explains the mechanism underneath, and ends with what to do differently in code.

TL;DR

From Silicon to Your Program

Each layer is a contract. Performance problems and data corruption bugs usually live where a program quietly relies on something the contract does not promise.

Featured Topics

How the Machine Runs Code

How Data Is Represented

Doing Many Things at Once

Common Questions

Do application developers really need this?

You need enough to recognize the symptoms. Most production performance problems are not algorithmic — they are cache misses, lock contention, excessive system calls, or data being copied between processes and devices. Knowing the mechanism turns "it's slow" into a hypothesis you can measure with a profiler. You do not need to design a CPU; you do need to know why iterating an array beats chasing pointers.

Where should I start?

Start with Computer Architecture for the memory hierarchy, then Operating System Concepts for processes and virtual memory. Those two explain most performance behavior. Read Binary Data and Character Encoding before your first internationalized product, and Concurrency and Parallel Computing before your first multi-threaded service.

How does this relate to systems programming?

Systems programming applies these fundamentals in languages such as C and Rust that expose memory and threads directly. The fundamentals apply to every language, including garbage-collected and interpreted ones — a Python service still pays for cache misses, page faults, and context switches.

Is this the same as a computer science degree?

It overlaps with the systems half of one, minus the proofs and circuit design. The emphasis here is practical: what to measure, what to change, and which mental model explains the behavior you are seeing. For algorithmic foundations, see Algorithms & Data Structures.

Learning Path

Beginner

Learn the memory hierarchy, the difference between a process and a thread, and how UTF-8 encodes text.

Intermediate

Profile a hot loop and explain its cache behavior, read strace output for a slow program, and find a data race with a race detector (Concurrency).

Advanced

Reason about memory ordering and lock-free code, tune NUMA and thread placement, and write and profile a GPU kernel.

Related Topics