introduction to computer science
Algorithms and Computational Thinking
How computer scientists solve problems step-by-step using algorithms and computational thinking.
In the previous chapter we learned what programming is and how programmers write instructions for computers.
But that raises an even deeper question:
Where do those instructions come from?
Before any code is written, a programmer must figure out how to solve the problem.
This is where algorithms come in.
Algorithms are the heart of computer science.
They are the step-by-step plans that tell a computer how to accomplish a task.
In fact, you use algorithms every day — even when you’re not thinking about computers.
What Is an Algorithm?
An algorithm is a clear, ordered set of steps that solves a problem.
It must be:
- Precise – every step is clear
- Ordered – steps happen in a specific sequence
- Finite – it eventually finishes
If a computer can follow the steps and reach a result, you likely have an algorithm.
For example, here is a simple algorithm for finding the largest number in a list:
- Start with the first number as the largest.
- Look at the next number.
- If it is larger, replace the current largest number.
- Move to the next number.
- Repeat until the list ends.
Even though this looks simple, this is exactly the kind of thinking that powers software.
Algorithms Are Everywhere
Algorithms are not just for computers.
You already follow them in everyday life.
Making a Sandwich
An algorithm for making a sandwich might look like this:
- Get two slices of bread
- Add filling (cheese, vegetables, etc.)
- Close the sandwich
- Cut if desired
- Eat
Simple, right?
But imagine if the instructions were vague:
“Prepare some food using bread.”
That wouldn’t be very helpful.
Computers need precise instructions, just like a chef following a recipe.
Computational Thinking
When computer scientists approach a problem, they use a mindset called computational thinking.
This means breaking problems into forms that a computer can solve.
There are four core ideas behind computational thinking.
1. Decomposition
Decomposition means breaking a large problem into smaller pieces.
Big problems are often difficult to solve all at once.
For example, building a website involves many smaller tasks:
- designing the layout
- writing code for the pages
- storing data
- handling user input
- connecting to servers
Instead of solving everything at once, developers solve one small piece at a time.
This makes complex systems manageable.
2. Pattern Recognition
Many problems look different on the surface but share similar patterns.
Recognizing patterns allows programmers to reuse solutions.
For example:
- Sorting songs in a playlist
- Sorting numbers in a spreadsheet
- Sorting search results
These all rely on sorting algorithms.
Once a good sorting algorithm exists, it can be reused in thousands of programs.
Pattern recognition saves enormous amounts of work.
3. Abstraction
Abstraction means focusing on the important details while ignoring unnecessary complexity.
Imagine driving a car.
You use:
- a steering wheel
- pedals
- a gear selector
But you do not need to understand:
- engine combustion
- transmission mechanics
- fuel injection systems
The car hides these details behind a simple interface.
Software works the same way.
Programs often hide complex systems behind simple tools.
For example:
print("Hello, world!")
This single line hides an incredible amount of work happening inside the computer.
4. Algorithm Design
Finally, once a problem is understood, we design an algorithm to solve it.
This means deciding:
- what steps the computer should take
- what data it should use
- when it should repeat actions
- when it should make decisions
For example, imagine an algorithm for checking if a password is valid:
- Receive password input
- Check its length
- Ensure it contains letters and numbers
- If valid, allow access
- Otherwise, reject it
Once the algorithm is clear, writing code becomes much easier.
Algorithms Power the Digital World
Algorithms run behind almost everything you do with technology.
Examples include:
| System | Algorithm Purpose |
|---|---|
| Search engines | Rank relevant pages |
| Navigation apps | Find the fastest route |
| Streaming services | Recommend movies or music |
| Social media | Decide which posts appear in your feed |
| Online stores | Suggest products you might like |
Even something as simple as searching the internet involves many sophisticated algorithms working together.
Efficiency Matters
Some algorithms solve problems faster than others.
For small inputs, the difference might not matter.
But with large amounts of data, efficiency becomes critical.
For example:
- Searching 10 items is easy.
- Searching 10 million items requires smarter algorithms.
Computer scientists study how algorithms perform as problems grow larger.
This field is called algorithm analysis, and it becomes extremely important in advanced computer science.
Programming vs Algorithms
A common misconception is that programming and algorithms are the same thing.
They are related, but different.
| Concept | Focus |
|---|---|
| Algorithms | The strategy for solving a problem |
| Programming | Writing code that implements the strategy |
In other words:
Algorithms are the ideas. Programs are the implementation.
Great programmers spend a lot of time thinking about algorithms before writing code.
The Power of Simple Ideas
One of the surprising things about computer science is that incredibly powerful systems often come from simple algorithms combined together.
For example:
- search engines
- video streaming platforms
- navigation systems
- artificial intelligence
All of these rely on many small algorithms working together.
This ability to combine simple ideas into powerful systems is what makes computer science so exciting.
What Comes Next
So far we have explored:
- what computers can do
- how hardware and software work together
- how programs are written
- how problems are solved with algorithms
But one big question remains:
What exactly are computers working with when they process information?
In the next chapter we will explore how computers represent data, including:
- binary numbers
- bits and bytes
- how text, images, and files become digital information.