Skip to main content

Computer Science Fundamentals

Use this page as a checklist, not as a course syllabus. The durable core is small:

  1. Representation: bits, numbers, text, instructions, and data formats.
  2. Execution: expressions, state, control flow, functions, recursion, and abstraction.
  3. Resources: time, memory, storage, networks, and the trade-offs between them.
  4. Composition: interfaces, modules, processes, protocols, and layers.
  5. Reliability: invariants, tests, failure modes, observability, and security boundaries.

Continue with Data Structures, Algorithms, and Programming Languages. For a rigorous introductory course, Berkeley CS 61A is a useful external path.

Turn the checklist into a reading path​

This is a map of programming fundamentals, not a full treatment of hardware, operating systems, networking, or security. You can start without knowing a language, but work through examples in one language rather than trying to learn every layer at once.

QuestionStart withCheck your understanding
Does assigning a variable copy its data?Python names and objectsPredict whether changing an aliased list changes both views.
How does a function produce a result?FunctionsDistinguish arguments, local names, returned values, and side effects.
Why does more input require more work?Time complexityName the input size and the operation being counted before writing a bound.
Which facts must stay true after an update?Linked listsExplain what happens to head and tail when the last element is removed.
How does a program keep its own state?Processes, address spaces, and memoryDistinguish process memory from shared resources.
How does a request reach an application?Following a network requestLocate DNS, connection, TLS, and HTTP failures.
How do related records stay consistent?Relational data, SQL, and transactionsExplain what constraints enforce and what a transaction commits together.
How do I detect behavior that violates a contract?Unit testsTest an ordinary input, an empty input, and an invalid input separately.

An invariant is a property that every valid state or every completed loop step must preserve. A test checks selected executions; an argument from invariants explains why all executions satisfying the assumptions are correct. Neither substitutes for stating what the program is supposed to do. Termination also needs an argument that the algorithm progresses toward stopping; an invariant alone does not prove that it will stop.

Explore connectionsOpen network