
When we program a system, we can think of it as a kind of state machine.
At any moment, the system has some current state.
Chess game position or a robot location are examples of states.
A workflow is an instruction on how a system changes from one state to another.
The simplest way to represent a workflow is with a diagram called a flowchart.
It uses just two main building blocks.
A rectangle represents an action, something the system does.
And a diamond represents a decision, a branching point where the workflow can continue in different directions.
For example: “If the temperature is too high - turn on the cooler.”
And these two - actions and decisions - are enough to describe essentially any algorithm humanity has invented.
So, a programming language is simply a notation for writing workflows precisely and unambiguously.
A variable is one of the most fundamental concepts in programming.
You can think of a variable as a named piece of information stored inside a system.
For example, a game may store the player’s score.
A weather application may store temperature.
And a banking system may store account balances.
Every variable has two important properties.
First, it has a name. The name allows the program to refer to a specific piece of information.
Second, it has a value. The value is the actual data stored at that moment.
For example, if a variable is called “score”, its value might currently be fifty one.
It is called a variable because its value can change over time.
So, variables are the memory of a program.
They allow the system to remember information and track changes.
Variables store individual pieces of information and form the current state of the system. And the workflow describes how that state changes over time.
A loop is a type of workflow that allows you to repeat the same actions multiple times.
Instead of writing the same instructions we place them inside a loop.
The program will then execute the same operations repeatedly, but with different values.
For example, a music app plays every song in a list. The songs are different, but the repeated action is the same.
Every repetition is called an iteration.
There are two ways to control a loop:
The first way is with a counter. The program knows in advance how many times the loop should repeat.
The second way is with a condition. This is useful when we do not know how many iterations will be needed. The loop continues while some condition remains true, or until something changes.
So, a loop is a way to perform the same actions again and again, while the state gradually changes over time.
What if we need to store two hundred marks?
Instead of creating many separate variables, programmers use lists.
A list is an ordered collection of values.
Think of it as a row of memory cells placed one after another.
Each position in the list stores one value.
And all these values now belong to one structure.
To access a particular value, the program needs the name of the list, and the position of the element inside it.
Usually, these positions are numbered starting from zero.
This allows the program to access individual elements when needed.
Lists become especially powerful when combined with loops.
A loop can process all elements one by one automatically.
The program simply repeats the same workflow for each element in the list.
Thus, lists turn chaos into organized collection.
Imagine a warehouse full of boxes.
Some boxes contain books.
Some contain glass.
From the outside, they are all just boxes.
The label tells the workers how to handle each one.
In the same way, a data type tells the program how to handle a value.
A data type tells the program what kind of value it is dealing with and how it can be used.
This is important because different kinds of information support different operations.
Numbers can be added together.
Words can be joined into sentences.
Lists can store many values.
By knowing the data type, the program knows how to store a value, how to interpret it, and what operations make sense for it.
A data type is assigned to each variable to help the program treat its value appropriately.
A function is a named workflow that performs a specific task.
Once a function has been defined, the program can execute it whenever needed simply by using its name.
Instead of describing the same workflow every time, we describe it once and give it a name.
The function then becomes a reusable building block that can be used throughout the program.
And this reusability is one of the reasons software can become so powerful.
Some functions may require days or weeks of work.
A function might contain hundreds of steps hidden inside.
But once the function has been implemented, using it is simple.
Another programmer may be able to perform the same task with a single line of code.
Many functions used today were created by people who have never met each other.
One developer writes a function once, and then other developers reuse it without having to solve the same problem again.
This ability to build on the work of others is one of the foundations of modern software development.
Functions allow programmers to solve a problem once and use the solution forever.
Functions allow knowledge, experience, and effort to be packaged into reusable tools.
An object combines related data and related functions into a single unit.
The data describes the object's current state.
The functions describe what the object can do.
You can think of an object as a small self-contained system with its own state and its own workflows.
Objects help programmers organize large programs into manageable pieces.
Objects package state and behavior into reusable components and keep related data and actions together.
Most programming languages use a simple dot notation to access the information and functions stored inside objects.
If we write player.score we are asking for the score that belongs to the player.
And if we write player.jump() it means: "Execute the jump function that belongs to this player."
Thus, objects keep related data and actions together.
Objects combine memory and behavior in one place.
The dot helps us look inside objects.
The dot lets us access what an object knows and what it can do.
This course contains the use of artificial intelligence. Some videos use AI-generated voiceover. In addition, certain illustrations and short video fragments were created with AI generation tools.
Hello!
My name is Rosti, and for the last 30 years, I have been doing one thing I truly love: explaining programming to people who think they "can't learn it."
I have taught 6-year-olds. I have taught university students, career changers, and retirees.
And I know for certain: the concepts you learn first are the ones that stick with you forever.
If you deeply understand a few key concepts from the very start, everything else becomes easier.
That is what this course is.
It focuses on understanding of the fundamentals:
What is a workflow and how it represents a system changing from one state to another
A system's state is simply the collection of all its variable values at a given moment
The two ways to control loops: counters and conditions
Why lists are preferable to creating many separate variables
Why a program needs to know a variable's data type to store, interpret, and use it correctly
What is a function, why naming a workflow enables reuse, and how functions allow developers to build on each other's work
What is an object, how it combines data and functions into a single unit, and how dot notation lets you access what an object knows and does