Computational Thinking
Computational thinking is the mental skill of turning a messy, real-world problem into something precise enough that a machine with no judgment or common sense can still carry it out correctly, and it is a skill taught independently of any specific programming language because the thinking happens before a single line of code gets written. Decomposition is the first move: breaking a large, intimidating problem into smaller pieces that are each individually solvable, the same way a chip design team breaks "build a processor" down into front-end logic design, physical layout, verification, and fabrication rather than tackling the whole thing as one undifferentiated task. Pattern recognition comes next — noticing that a new problem shares structure with one already solved, that searching for a name in a sorted list of a million names is the same underlying problem as searching for a word in a dictionary, so a solution developed for one transfers directly to the other without starting from scratch. Abstraction means deliberately ignoring irrelevant detail to focus on what actually matters for the problem at hand: a program that calculates shipping cost doesn't need to know the color of the package, only its weight and destination, and a good abstraction is precisely the skill of knowing which details are safe to throw away without changing the answer. Algorithm design is where these pieces combine into an actual precise, step-by-step procedure — not vague intent like "sort the list" but an exact, unambiguous sequence of operations that produces a correct result every time it's followed, for every valid input, not just the examples that happened to come to mind while designing it. Pseudocode is the tool computational thinking typically gets written down in before any real code exists: structured, language-agnostic, plain-language steps (`IF x is greater than y THEN swap them`) that let a person design and check an algorithm's logic without getting distracted by a specific programming language's exact syntax rules, semicolons, and punctuation. The reason this topic sits this early in the curriculum, before programming fundamentals, is deliberate: the single most common reason a beginner's program doesn't work isn't a syntax mistake, it's that the underlying plan was never actually precise enough to execute correctly in the first place, and no amount of syntax knowledge fixes a plan that was vague from the start.
Every single topic later in this series — data structures to hold the pieces an algorithm operates on, algorithm analysis to judge whether a design is actually good, programming languages to finally translate pseudocode into something a compiler accepts — is downstream of getting this one step right first, which is exactly why it comes before any of them.