Atlas

Computing & Computer Science

How computation works in principle and in practice — from what a machine can compute to how real software and hardware are built.

Contents
  1. Why it matters
  2. How to approach this
  3. The learning path
  4. 1. Computation and information
  5. 2. Mathematical foundations
  6. 3. Digital logic and circuits
  7. 4. Computer architecture
  8. 5. Programming fundamentals
  9. 6. Data structures
  10. 7. Algorithms and complexity
  11. 8. Software engineering
  12. 9. Operating systems
  13. 10. Computer networks
  14. 11. Databases
  15. 12. Programming languages and compilers
  16. 13. Security and cryptography
  17. 14. Distributed systems
  18. 15. Machine learning and artificial intelligence
  19. Where this leads

Computing is using machines to transform information, where information is symbols such as numbers, text or images that carry meaning; computer science is the study of the principles, limits and trade‑offs behind those transformations. You meet computing every day when your phone shows a map update, a search returns results, or a bank confirms a payment: each of those is many tiny information transformations chained together until a useful answer appears on your screen.

These everyday results rest on layers you cannot see: physical switches that hold a 0 or 1, rules that prove a program will do what it claims, and networks that move packets across continents in a few hundred milliseconds. A modern mobile chip can contain about 20 billion transistors (tiny electronic switches) and the Internet connects roughly 5 billion people, which hints at the scale and impact of the field.

Why it matters

Algorithms, which are step‑by‑step recipes for solving problems, decide whether an application is practical or hopeless: a search engine needs algorithms that return useful results in under a second on web indexes of billions of pages (see the PageRank paper by Larry Page and Sergey Brin, 1998). Efficiency changes what is possible.

Software correctness and engineering practices decide whether systems are safe. The Therac‑25 radiation accidents in the mid‑1980s, where concurrent software errors in a medical device led to patient deaths, are a stark example that bad software can kill. Engineering matters for human lives.

Operational mistakes or buggy logic can also cost huge sums: a faulty trading program at Knight Capital in 2012 caused rapid erroneous trades that lost about $440 million in 45 minutes. That shows how small mistakes at scale can have massive economic consequences.

How to approach this

Begin with a readiness to do a bit of maths and to write and run small programs: high‑school algebra and familiarity with manipulating text files or a simple scripting language are enough to start. Expect to spend about 6–12 months to become comfortable with the fundamentals if you study regularly and build small projects.

Most learners stall on two things: the gap between code you write and what the machine actually does, and reasoning about multiple things happening at once (concurrency, which means several computations proceed simultaneously). Address those by building: write a program, run it, and inspect what the machine produces; then try a tiny concurrent example and see how results can race or block.

The learning path

1. Computation and information

Start with Computation and information, which defines computation as a step‑by‑step transformation of symbols and a bit as a binary digit (0 or 1) used to encode those symbols. This gives the language for saying what a program does without worrying yet about machines.

It belongs first because you must be able to state problems precisely before you can build or analyse solutions; it opens the question: how do we write a step‑by‑step recipe that accomplishes a concrete task, such as adding two numbers or finding the longest word in a list?

2. Mathematical foundations

With the idea of computation in hand, Mathematical foundations supply the discrete mathematics (the study of distinct objects such as integers and finite graphs) and probability (the mathematics of chance) needed to count, prove and reason about algorithms. Logic, sets and combinatorics become the rigorous tools you use repeatedly.

This step sits second because you use proofs and counting to reason about correctness and performance; it opens the question: how can we prove a program always terminates or bound how its running time grows with input size?

3. Digital logic and circuits

After the abstract rules, Digital logic and circuits show how bits are physically represented and manipulated using logic gates (small circuits computing boolean functions like AND, OR, NOT) and transistors (electronic switches that implement those gates). This connects symbols to silicon.

It comes here because you need to know how a 0 or 1 is actually stored and moved before studying whole processors; it opens the question: how do dozens of gates and transistors combine to perform arithmetic or hold a value?

4. Computer architecture

With circuits understood, Computer architecture explains how a central processing unit (CPU, the hardware that executes instructions), memory and input/output are organised, and how choices like caches (small fast memory between CPU and main memory) and pipelining affect speed. It translates gates into a usable machine.

It follows circuits because architecture is the engineering of many circuits into an instruction‑executing device; it opens the question: given a particular CPU design, how will a program’s speed and memory use behave on real hardware?

5. Programming fundamentals

Knowing what a machine looks like, Programming fundamentals teaches how to express computations as programs using variables (named storage locations), control flow (if statements and loops) and input/output in a language such as Python. This gives the practical skill of making a machine follow your recipe.

It sits here because you write code with an awareness of what the hardware expects; it opens the question: how do you turn a problem statement into a working program that reads, transforms and writes data?

6. Data structures

With basic programs in hand, Data structures examine organised ways to store data—arrays (contiguous indexed storage), linked lists (nodes pointing to successors), hash tables (associative lookup by key) and trees (hierarchical nodes)—each trading time for memory differently. They make programs efficient.

They follow programming because you must know how to express operations before you decide how to store the values those operations touch; they open the question: which organisation lets me find, insert or delete items quickly for my task?

7. Algorithms and complexity

Next, Algorithms and complexity teach how to design step‑by‑step solutions and to measure their resource use (time and space) using Big O notation (a shorthand for growth rates). Classic examples include sorting and graph search algorithms.

It follows data structures because algorithm performance depends on the underlying storage; it opens the question: is this approach feasible when the input grows from hundreds to millions of items?

8. Software engineering

Once you can write efficient code, Software engineering provides practices and tools—version control (systems that track changes), testing and modular design—to build, maintain and evolve large programs reliably over months and years. It turns short scripts into sustainable projects.

This step comes after algorithms because quality at scale requires both correct logic and maintainable structure; it opens the question: how do teams keep a large codebase correct and deployable across many machines?

9. Operating systems

With development practices in place, Operating systems cover the software that manages hardware, including processes (running program instances), scheduling (deciding which runs when) and virtual memory (giving each process the illusion of its own large memory). They provide the environment programs run in.

They follow software engineering because running software safely on shared hardware requires OS support; they open the question: how can multiple programs share CPU and memory without interfering with each other?

10. Computer networks

Next, Computer networks explain how computers exchange data in packets and use protocol suites such as TCP/IP to provide addressing and reliable delivery across the Internet. They introduce latency (delay) and bandwidth (maximum transfer rate) as key constraints.

They come after operating systems because reliable communication builds on local resource management; they open the question: how do we send a file across continents and ensure it arrives intact and in order?

11. Databases

With networking in play, Databases teach organised persistent storage and query systems such as the relational model and SQL (a language for querying tables), plus indexing (data structures to speed lookup) and transactions (atomic multi‑step updates). They make data durable and queryable.

They follow networks because many applications must store and retrieve data across machines; they open the question: how can a system answer queries fast and ensure updates are not lost or inconsistent?

12. Programming languages and compilers

At this point, Programming languages and compilers explain how high‑level program text is parsed (turned into structured trees), checked by type systems (rules classifying values) and translated into lower‑level code or executed directly. They clarify why programs behave the way they do.

They belong here because understanding execution models helps you write better code and optimisations that target real machines; they open the question: how can a human‑friendly language be turned into fast machine instructions?

13. Security and cryptography

With systems built, Security and cryptography consider protecting them: cryptography studies secrecy and authentication (for example encryption for confidentiality and digital signatures for authenticity), while security engineering studies threats and practical mitigations. They provide the tools and mindset to reduce risk.

They follow because scale and connectivity create attack surfaces that must be defended; they open the question: given an attacker with certain capabilities, how can we keep data confidential and systems available?

14. Distributed systems

Next, Distributed systems examine how independent computers coordinate to appear as one system, coping with partial failures and network delays using techniques such as replication (keeping multiple copies) and consensus (agreeing on a value). They scale services beyond a single machine.

They sit after networks and databases because distribution requires reliable communication and storage models; they open the question: how can many machines agree on a value despite some of them failing or messages being delayed?

15. Machine learning and artificial intelligence

Finally, Machine learning and artificial intelligence study algorithms that learn patterns from data (supervised learning learns from labelled examples) and models such as linear regression and neural networks for tasks like classification and prediction. Evaluation on held‑out data measures real performance.

This capstone comes last because applying learning methods at scale depends on data, systems and algorithms from the earlier steps; it opens the question: given a large labelled dataset, what model will generalise well to new examples?

Where this leads

Work through the path and you can design, build and reason about complete systems: from a low‑level device driver talking to hardware, to a web service serving millions of users, to a trained model deployed across a cluster. You will also be able to judge trade‑offs—speed, cost, safety and privacy—that determine which engineering choices succeed in the real world.