The computer and the basics of programming
Before we learn to program, let's answer one question: how does a computer actually «think»? In this lesson we will interactively explore the binary system (0 and 1), how text and color are stored, and how the code we write turns into a language the computer understands, that is, compilation.
1.1 What is programming?
In programming we tell the computer what to do step by step. The computer does not figure anything out by itself; it carries out your instructions precisely, in order, and without any guessing.
Imagine you are explaining to a friend how to brew tea. For a person, saying «brew tea» is enough. But a computer is not that smart, so you have to tell it like this:
- Pour water into the kettle
- Heat the water until it boils
- Add the tea leaves and wait 5 minutes
- Pour it into the cup
This sequence of precise instructions is called an algorithm, and writing it in a computer language is called a program. In this course we will learn to write such instructions. But first we need to understand how the computer «hears» these instructions.
1.2 The computer and two states: 0 and 1
Inside a computer there are millions of very small «switches» (transistors). Each switch has only two states: there is current or there is no current. We mark them like this:
- 0 means no current (off)
- 1 means there is current (on)
One such 0 or 1 is called a bit (the smallest piece of data). Eight bits together make a byte. Everything in a computer, that is, numbers, letters, images, video and music, is ultimately just a collection of 0s and 1s.
1.3 The binary number system
In everyday life we use the decimal system, which has 10 digits (from 0 to 9). The computer, however, uses the binary system, which has only 2 digits: 0 and 1. Don't worry, the secret of both is one simple idea: the position each digit sits in matters.
First, something familiar: a decimal number
Let's take the number «342». In fact we «assemble» it this way every day, we just don't notice it. Each digit is multiplied by its place value:
3×100 + 4×10 + 2×1 = 300 + 40 + 2 = 342
Notice: from right to left each place grows 10 times larger: ones, tens, hundreds...
Now the same idea in binary
Binary is exactly the same, only each place grows not 10 but 2 times larger: 1, 2, 4, 8, 16, 32, 64, 128. One byte (8 bits) consists of these eight places. The rule is simple: the place value where a 1 sits is added, and where a 0 sits it is not added.
For example, let's «read» the number 00001101 together:
We add only the on (1) places: 8 + 4 + 1 = 13
Now it's your turn. In the game below, click the bits and watch with your own eyes how the number is assembled:
See it? Each on bit adds its own «place value». For example, 01000001 = 64 + 1 = 65. With one byte you can express 0 to 255, that is 256 different numbers in total.
Binary ↔ Decimal converter
Write any number, and its binary form will appear on the other side (and vice versa).
1.4 Units of data: byte, KB, MB, GB
One byte is almost nothing, just a single letter. But bytes add up and form enormous things. You've seen the label «128 GB of storage» on your phone; that GB is also actually made of bytes. Each next unit is about 1000 times larger than the previous one:
So file size («3 MB image»), storage («256 GB»), internet speed («50 Mbit/s»), all of these are measured with these bytes. Now, when you see these numbers, they will be meaningful to you.
1.5 How are a letter, color and hex stored?
If a byte can store a number in the range 0–255, then it can also store letters: we simply assign one number to each letter. For example, Latin A = 65, B = 66, a = 97, space = 32.
The question «why exactly 65?» comes up naturally. The answer is simple: it is a table the whole world agreed on (like a shared dictionary), and its name is ASCII. Because everyone follows this table, text written on one computer can be read the same way by another.
Write a word below, and you will see the number behind each letter and its 8-bit binary form:
A color is also three numbers
The color of each point (pixel) on the screen consists of three bytes: how much red, how much green, how much blue (each 0–255). This is called RGB.
An important point: this is not paint but a mixture of light (the screen emits light). So it is the opposite of paint: if all three are 0, there is no light, that is black; if all three are 255, there is full light, that is white. Drag the sliders and see how a color is «born from numbers»:
What about Uzbek? Unicode
The ASCII table has only 128 characters: Latin letters, digits and punctuation. But there are thousands of characters in the world: Cyrillic letters, Uzbek oʻ and gʻ, Chinese characters, even the emoji 😀. To fit all of them, there is a larger table called Unicode. In it a single character can take not 1 but several bytes (the most widespread form is UTF-8).
Try writing an emoji or a Cyrillic letter in the ASCII inspector above, and its code will come out greater than 255, meaning it does not fit in one byte.
Hex: the short language of numbers
In the color result you saw a notation like #5B5BD6. This is the hexadecimal (hex) system. It has 16 «digits»: 0–9, then A, B, C, D, E, F (that is 10, 11, 12, 13, 14, 15). Why is it needed? Because 2 hex characters represent exactly 1 byte (8 bits), which is very compact. For example, FF = 255 (the largest byte), 5B = 91. That is why colors are written in hex: #RRGGBB, that is the byte values of red, green and blue.
1.6 Compilation: translating code into machine language
We write a program in a language a human can read. For example, in C a program that prints «Salom, dunyo!» looks like this:
But the processor does not understand this text, it only knows binary machine code (0 and 1). For this reason a «translator» is needed in between; it is called a compiler (the famous one for C is gcc). The compiler reads your code in full and turns it into a binary file the processor can execute.
Click the button below and watch which stages the code goes through:
What if you make a mistake?
The compiler is very demanding: if there is an error in the code (for example, a missing semicolon), it will not build the program at all and will tell you exactly which line the error is on. This is a good thing: the error is found before the program runs. For example:
This message means «on line 4, a ; was forgotten». In the coming weeks we will learn to read and fix such errors.
Compilation vs interpretation
Not every language is compiled. Languages like C are converted fully into machine code in advance (compilation), so they run fast. Languages like Python, on the other hand, are read line by line by an interpreter at run time (there is no separate compilation step); this is convenient but slower. We learn the basics in C: it shows most openly what is happening inside the computer.
1.7 Practice exercise: solve it yourself
The best way to lock in knowledge is to do it yourself. In this exercise one number appears each time, and one of two cases occurs:
- If the number consists only of 0s and 1s (binary), convert it to a decimal number.
- If the number is ordinary (decimal), convert it to 8-bit binary.
When solving, use the helper below; these are the place values. When reading binary, add the values of the on (1) places. For example: 1010 = 8 + 2 = 10; and the other way, 10 = 00001010. Write your answer and press Enter (or «Check»). The goal: collect 10 correct answers.
1.8 Going deeper: computing with binary advanced
This section is deeper and optional. It takes you from «storing data» to «how the computer computes». Real understanding begins here.
Addition in binary
We add as in decimal: 0+0=0, 0+1=1, and 1+1 in binary is «10», meaning you write 0 and carry the 1 to the next place (just like the «carry» in decimal at 9+1=10). Example: 3 + 1 = 4:
The tiny circuits inside the processor perform exactly this operation billions of times per second. This is the computer's «computing».
Negative numbers and two's complement
With only 0 and 1 there is no «minus» sign. The trick is this: the leftmost bit is used as the sign, and negative numbers are written in a special way, that is, with two's complement. The beauty of this trick: the processor computes both +5 and −5 with the same addition circuit, so no separate subtraction is needed. We will see the details in the coming weeks.
Bit operations (bitwise)
Sometimes a programmer operates directly on bits. The main ones: AND (if both are 1 → 1), OR (if one is 1 → 1), XOR (if exactly one is 1 → 1), NOT (swaps 0 and 1), shift (moves the bits left/right). Drag the sliders and try the operations:
Logic gates: everything comes from these
These operations are performed inside the processor by tiny electronic circuits called logic gates (AND, OR, NOT). From them an «adder» is built, and from adders an entire processor is assembled. So a computer consists of millions of AND/OR/NOT gates. This is how the entire digital world is built from just 0 and 1.
1.9 Knowledge quiz
Before the quiz: new terms
The main concepts learned this week. Skim through them before the quiz:
Now let's try it
15 questions. To complete the week, answer at least 11 correctly.
Congratulations! Week 1 is complete
You now know that inside a computer everything is 0 and 1, how numbers, letters and colors are stored, and what compilation is. This is a solid foundation for programming.
Go to the next module