Coding (programming) is writing step-by-step instructions in a programming language so a computer can carry out a task.
A computer cannot guess what you want. So a human has to turn a fuzzy goal into exact, unambiguous steps. Coding is that translation between people and machines.
Every app, website, game and automated system exists because someone wrote code. The choices and blind spots of coders end up built into the digital world everyone else lives in.
Levels of language and abstraction
Machine code is the raw binary (1s and 0s) the processor runs directly: exactly what the hardware runs, but near-impossible for a person to read or write.
Assembly swaps binary for short mnemonics (ADD, MOV): still close to the hardware and processor-specific, but more readable.
High-level languages (Python, Java) use words and symbols close to English or maths. Whatever level you write at, code must become machine code before it can run.
Each step up is a layer of abstraction: it hides messy detail below so a programmer can think in bigger, more human ideas.
Abstraction makes modern software possible: programmers build on ready-made libraries and tools without understanding every layer, standing on the work of those before them.
Low-level versus high-level
Low-level languages (close to machine code) give fine hardware control and run extremely fast, but are complex, unforgiving and slow to write.
High-level languages are readable, quick to write and tool-rich (so most software uses them); the cost is less direct control and often slower performance.
There is no single best level: speed-critical software may need low-level, while a small team building fast almost always uses high-level.
Getting code to run: compiled and interpreted
A compiler translates the whole program into machine code once, ahead of time, producing a file that then runs quickly on its own.
An interpreter translates and runs code line by line: easier to test and change, portable across machines with the interpreter, but usually slower.
Compiled programs are faster to run but slower to build and fix. Interpreted programs are more flexible and portable, though they pay a translation cost every time they run. Many modern languages blend the two approaches.
Examples: C is typically compiled (operating systems, games); Python and JavaScript are usually interpreted, common on the web where one page must run on every visitor's device.
What coding builds
System software runs and manages the computer itself: the operating system, device drivers and utilities that keep the machine working, mostly out of sight.
Application software is what people use to get things done (browsers, word processors, games, messaging) and relies on the system software beneath it.
Coding is the craft behind the entire digital environment: transport timetables, payments, hospital records and phones all run on code, so one bug or design choice can ripple out to millions.
Coding, abstraction and access
Rising abstraction lowers barriers: each easier level lets more people code without mastering the hardware, and block-based tools let children build working programs.
Being able to code means being able to build things, not only use what others have made, and that is a real form of power in a digital society.
Contested: that power is unevenly shared, since learning to code still depends on devices, connectivity, time and teaching not everyone can reach.
Case study
Case study
System: Scratch, a block-based programming language and online community where users snap coloured blocks together instead of typing text (computers content topic).
Specifics: Created by the MIT Media Lab and released in 2007 for children and beginners; now one of the most widely used ways to learn to code, with many millions of projects shared and use in schools worldwide.
Impacts and implications: Impacts: many young people and non-specialists built games and animations who would never have written text code. Implications: raising abstraction widens who can create rather than only consume, but the opportunity still depends on access, so it can also deepen divides.
Concepts: Power (build not just use), change (abstraction reshapes who takes part), values and ethics (equity of access); human knowledge and social contexts.
Theory of Knowledge
TOK
If most people use software but few can write it, who really holds power in a digital society?
As tools make coding easier, do we understand computers better, or just rely on hidden layers we cannot see?
Active recall
Self review
What is coding, and why is it the bridge between people and machines?
How do machine code, assembly and high-level languages differ in abstraction?
What is the trade-off between low-level and high-level languages, and between compilers and interpreters?
What is the difference between system software and application software?
How does the level of abstraction affect who can build, and why does that matter?