Beyond Windows and Mac — Why Every Computing Student Should Spend Some Time Using Linux
For many GCSE and A Level Computer Science students, the phrase operating system really means one of two things:
Windows or macOS.
They may know, because the specification tells them, that an operating system manages memory, processes, files, peripherals and the user interface. They may be able to answer an examination question about multitasking or virtual memory.
But there is a considerable difference between learning that an operating system can work in different ways and actually experiencing one that does.
That is why I think one of the most useful things a computing student can do is spend some time with Linux.
Not because everybody should abandon Windows.
Not because Linux is automatically “better”.
And certainly not because using a terminal somehow makes somebody a more serious computer scientist.
The value is much simpler.
Linux makes you realise that many things you thought were fundamental features of a computer are actually just choices made by the designers of the operating system you normally use.
And once students understand that, their view of computing changes.
An Operating System Is More Than the Desktop You See
One misconception I frequently encounter is the idea that the graphical desktop is the operating system.
Students see:
the Start menu;
the taskbar;
File Explorer;
windows;
icons;
menus;
desktop backgrounds.
Because these are the parts of Windows they interact with every day, it is easy to assume that an operating system naturally looks something like Windows.
Linux quickly challenges that assumption.
Strictly speaking, Linux is the kernel, the central part of the operating system that communicates with the hardware and manages resources.
What people commonly call “Linux” is normally a complete Linux distribution containing the kernel together with utilities, libraries, applications, package-management software and usually a graphical desktop environment.
Examples of Linux distributions include:
Ubuntu;
Debian;
Fedora;
Linux Mint;
Arch Linux;
openSUSE;
Raspberry Pi OS.
Already, that gives students something interesting to think about.
There isn't simply one Linux operating system that looks the same on every machine.
Different distributions can be designed for different purposes.
Then You Discover the Desktop Can Change Too
Install Windows and you largely receive Microsoft's Windows interface.
Install macOS and you receive Apple's desktop environment.
Linux can be rather different.
A Linux installation might use GNOME, which presents one style of graphical interface.
Another could use KDE Plasma, which can feel much closer to the traditional desktop environment familiar to Windows users.
Others might use:
Xfce;
Cinnamon;
MATE;
LXQt.
This is a fascinating discovery for students because the same underlying operating system can be presented through substantially different graphical environments.
It immediately raises a useful computing question:
Where does the operating system finish and the user interface begin?
That is much more interesting than simply memorising:
“The operating system provides a user interface.”
Linux allows students to see that separation in practice.
Your First Linux Surprise: The Terminal
Then comes the part that can initially look slightly frightening.
The command line.
Open a terminal window and instead of icons and folders you might see something such as:
student@computer:~$
At first it can appear as though computing has suddenly travelled backwards 40 years.
Where have all the windows gone?
Where is File Explorer?
Why would anybody want to type commands when they can click on something?
Spend a little time with it, however, and something interesting happens.
You begin to understand why command-line interfaces have survived.
They are extraordinarily powerful.
Your First Few Linux Commands
A beginner does not need hundreds of commands.
Start with a handful.
To find the current directory:
pwd
To display its contents:
ls
To change directory:
cd Documents
To move up one level:
cd ..
To create a directory:
mkdir experiments
To copy a file:
cp results.txt backup.txt
To rename or move one:
mv results.txt oldresults.txt
To display a text file:
cat results.txt
Within quite a short period of time, students are navigating the filesystem without touching the mouse.
And something more important is happening.
They are beginning to understand the filesystem rather than merely operating a graphical representation of it.
Suddenly File Paths Make More Sense
Students learning programming regularly encounter file paths.
On Windows they might see:
C:\Users\Philip\Documents\program.py
On Linux they might encounter:
/home/philip/Documents/program.py
Linux introduces the idea of the root directory:
/
and beneath it directories such as:
/home
/etc
/bin
/var
/tmp
You certainly don't need a GCSE student to memorise the entire Linux filesystem hierarchy.
What is useful is seeing that there are alternative ways of organising storage.
It also makes absolute and relative paths far less abstract.
One of Linux's Best Lessons: Permissions
Suppose a student tries to modify a system file and Linux replies:
Permission denied
Initially this can be annoying.
Educationally, it is wonderful.
Who owns this file?
Which user is the program running as?
Who is allowed to read it?
Who is allowed to modify it?
Who is allowed to execute it?
A command such as:
ls -l
might display something resembling:
-rwxr-xr--
Those apparently mysterious characters introduce a very real implementation of:
read permissions;
write permissions;
execute permissions;
users;
groups.
Suddenly access rights are no longer just another paragraph in an operating-systems textbook.
They are controlling what you can actually do.
Installing Software Works Differently Too
For many students, installing software means:
search for a website;
download an installer;
double-click it;
click Next several times;
hope you downloaded the genuine version.
Linux distributions commonly use package managers instead.
On a Debian or Ubuntu-based system, for example, software can often be installed using something like:
sudo apt install python3
There is a lot contained in that single command.
The computer:
contacts configured software repositories;
identifies the requested package;
checks dependencies;
downloads the required files;
installs them;
registers the software with the package-management system.
Students can then discover that updating installed packages can also be centrally managed.
This leads to excellent discussions about:
software repositories;
dependencies;
version control;
trusted sources;
security updates;
system administration.
Then You Discover Pipes
One of my favourite ideas to show students is the Unix philosophy of combining small tools.
Imagine one command produces some information.
Instead of building an enormous application that does everything, Linux encourages us to take the output of one program and give it to another.
The vertical bar symbol:
|
is called a pipe in this context.
For example:
ls | sort
The first command generates a list.
The second sorts it.
You can begin building increasingly powerful combinations:
ls | sort | head
The concept is remarkably elegant:
take several simple programs and combine them to solve a more complicated problem.
That is a very computer-science way of thinking.
Searching Becomes Extremely Powerful
Suppose we have a large text file and want every line containing the word "error".
Instead of opening the document and searching visually, we might use:
grep "error" logfile.txt
Now imagine searching hundreds of log entries.
Or thousands.
Or searching the output from another program.
That is when the command line begins to stop looking old-fashioned and starts looking efficient.
Students begin to appreciate that graphical interfaces and command-line interfaces are not competing generations of computing.
They are tools suited to different tasks.
Processes Stop Being an Abstract Diagram
GCSE and A Level students study processes.
They learn that programs executing in memory become processes and that an operating system schedules processor time between them.
Linux gives them opportunities to observe this.
Commands such as:
ps
can display running processes.
Programs such as:
top
allow users to watch processor and memory usage changing in real time.
A student can start a program, observe the process appear, terminate it and watch it disappear.
Now an examination question about process management has a physical experience attached to it.
That matters.
Linux Is Particularly Good for Learning Networking
Networking is another subject that can become rather theoretical at school.
Linux provides an extraordinary collection of tools for exploring networks.
Students can investigate concepts using commands such as:
ping
and tools for examining:
IP addresses;
routing;
DNS;
active connections;
network interfaces.
For example:
ping bbc.co.uk
does much more educationally than simply demonstrate whether a website responds.
It raises questions.
How did the computer convert the domain name into an IP address?
What route did the packet take?
Why does latency vary?
What happens if a host does not respond?
What exactly is being transmitted?
A networking specification suddenly becomes a network you can interrogate.
Linux and Python Work Beautifully Together
Linux is also a natural environment for programming.
Suppose we create a simple Python file:
hello.py
containing:
print("Hello from Linux")
We can run it directly from the terminal:
python3 hello.py
Now consider writing a Python program that:
reads command-line arguments;
processes a text file;
creates a log;
communicates across a network;
monitors a sensor;
controls a Raspberry Pi.
The relationship between software, filesystem and operating system becomes much more visible.
This is especially valuable for students moving beyond very simple programming exercises.
From Commands to Shell Scripts
Eventually students discover that if they keep typing the same commands, they can put them into a file and run them automatically.
That introduces shell scripting.
A very simple script might perform several operations sequentially.
Perhaps it:
creates a backup directory;
copies important files;
adds the date to a log;
reports whether the operation completed successfully.
Now we have moved from merely using the operating system to programming the operating system's environment.
Concepts such as:
sequence;
selection;
variables;
loops;
input;
output;
automation
suddenly appear somewhere other than Python or another classroom programming language.
That reinforces the underlying principles.
Linux Quietly Runs Much of the Computing World
Another reason students should encounter Linux is that desktop market share gives a rather misleading impression of its importance.
Walk around homes and schools and Windows, macOS, Android, iOS and ChromeOS may appear dominant.
Look behind the scenes and Linux becomes extremely important.
Linux-based systems are widely found in:
web servers;
cloud computing;
supercomputers;
networking equipment;
embedded systems;
development environments;
containers;
scientific computing;
Raspberry Pi projects.
Android itself uses the Linux kernel.
So even a student who never intends to replace Windows on their laptop is likely to encounter Linux somewhere if they continue into computing.
You Probably Already Own a Linux Computer
There is an especially easy route into all this.
A Raspberry Pi.
Raspberry Pi OS gives students a graphical desktop that feels reassuringly familiar while providing the full Linux terminal underneath.
It is an excellent combination.
Use the desktop to browse the web or edit a Python program.
Open a terminal and investigate:
ls
or:
python3
Then connect an LED, sensor or other device and Linux suddenly becomes part of a physical-computing system.
The computer is no longer simply something that runs applications.
It becomes something you control.
You Don't Need to Replace Windows
This is important.
I would not recommend that a student unfamiliar with Linux immediately erase their main computer and install an unfamiliar operating system.
There are much safer ways to experiment.
Option 1 — Use a Raspberry Pi
Probably the most enjoyable educational route.
You have a completely separate Linux computer to experiment with.
If you make a mess of it, you can reinstall the operating system.
That freedom encourages experimentation.
Option 2 — Use a Virtual Machine
Programs such as virtualisation software allow Linux to run as a computer inside your existing computer.
You can experiment without changing your normal Windows installation.
Option 3 — Use a Live USB
Many Linux distributions can run from a USB drive without immediately installing anything on the computer.
Option 4 — Windows Subsystem for Linux
Windows users can also explore many Linux command-line tools through WSL.
For a student primarily interested in programming and command-line skills, this can provide a useful introduction.
A Practical Linux Challenge for Computing Students
Rather than simply installing Linux and looking around, I would turn the exercise into a challenge.
See whether you can complete all of these.
Challenge 1
Find your current directory.
Challenge 2
Create a directory called:
linuxchallenge
Challenge 3
Move into that directory.
Challenge 4
Create a text file.
Challenge 5
Copy the file.
Challenge 6
Rename the copy.
Challenge 7
Display the contents of the directory.
Challenge 8
Run a Python program from the command line.
Challenge 9
Find your computer's IP address.
Challenge 10
Use ping to test another computer or suitable internet host.
Challenge 11
Look at running processes.
Challenge 12
Investigate the permissions on one of your files.
A student who completes those twelve tasks has probably learned more about operating systems than somebody who has merely revised several pages of notes describing them.
A More Ambitious Project: Build a Tiny Linux Server
For an A Level student, I would go further.
Take a Raspberry Pi or an old suitable computer and turn it into a simple server.
It might host:
a web page;
files;
a small Python web application;
sensor readings;
a database;
a home dashboard.
Now the student has to think about:
IP addressing;
users;
permissions;
processes;
services;
ports;
files;
software installation;
security;
networking.
Almost an entire section of the Computer Science curriculum begins joining together.
That interconnected understanding is far more valuable than learning each specification point independently.
The Mistakes Are Part of the Lesson
Anyone learning Linux will make mistakes.
You will type a command incorrectly.
You will try to access a directory that does not exist.
You will wonder why a file cannot be executed.
You will receive:
Permission denied
You will search the internet for an explanation.
You may spend 20 minutes discovering that Linux filenames are case-sensitive and that:
Program.py
and:
program.py
are not necessarily the same file.
This can occasionally be frustrating.
But it is also how a great deal of genuine computing is learned.
You form a hypothesis.
You try something.
It fails.
You read the error.
You investigate.
You modify your approach.
You try again.
That is computational thinking in a much more authentic environment than simply answering a multiple-choice question about operating systems.
Linux Also Teaches an Important Lesson About Choice
There is another reason I like students encountering Linux.
It makes computing feel less fixed.
You can change:
the desktop;
the terminal shell;
the file manager;
the text editor;
the programming tools;
the services running in the background.
You begin to realise that a computer does not have to operate in exactly the way its manufacturer originally presented it.
For somebody interested in Computer Science, that is quite an empowering discovery.
But Is Linux Better Than Windows or macOS?
That is probably the wrong question.
Windows has enormous software compatibility and is familiar to vast numbers of users.
macOS provides an extremely polished environment tightly integrated with Apple's hardware and ecosystem.
Linux provides exceptional flexibility, transparency and access to powerful development and administrative tools.
All three have strengths.
The educational value comes from experiencing the differences.
A student who has only ever used one operating system may mistake its conventions for universal computing principles.
A student who has used several begins separating the concept from the implementation.
That is exactly what Computer Science education should encourage.
Final Thought — Stop Simply Using the Computer and Start Investigating It
There is a moment when learning computing changes.
At first, the computer is something that provides applications.
You open Word.
You launch a browser.
You run a game.
You write a Python program.
But eventually you start wondering what is underneath all of that.
Where are the files actually stored?
Which processes are running?
Who owns them?
How does the machine know where another computer is?
What happens when software is installed?
How can one program send its output into another?
What exactly is the operating system doing?
Linux provides a wonderful environment in which to start asking those questions.
So my challenge to GCSE and particularly A Level Computer Science students is simple:
Spend a little time outside Windows or macOS.
Install Linux in a virtual machine, try it on a Raspberry Pi, experiment with WSL or boot a suitable live Linux system.
Open the terminal.
Type:
ls
and begin exploring.
You may discover that the most valuable thing Linux gives you is not another operating system.
It is a different way of looking at the computer you thought you already understood.


