Working with a Computer

Before anyone writes a line of code, they need to be able to tell a computer what to do using nothing but files, directories, and a command line, because every programming tool, compiler, and version control system this site will eventually cover assumes that fluency as a given. A file is simply a named collection of bytes stored on disk — it could be text, a program's compiled machine code, an image, anything — and a directory, also called a folder, is a container that groups files and other directories together, forming a tree structure that starts at one root and branches outward. A file's full location in that tree is its path; `/home/user/projects/notes.txt` on a Unix-style system or the Windows equivalent under a drive letter both describe the same idea, a sequence of directory names leading down to one specific file. The operating system is the software layer, introduced as a concept in this series' first article, that actually manages this file tree on disk, decides which program can read or write which file, and exposes that control to a human through two main interfaces: a graphical interface where you click folder icons, and a command-line interface, usually called a terminal or shell, where you type text commands directly. The terminal is worth learning deliberately rather than avoiding, because it is faster, more precise, and more scriptable than clicking through folders, and because essentially every serious programming, systems administration, and data science workflow eventually routes through one. A small, consistent set of commands covers most day-to-day navigation on Unix-like systems (Linux, macOS): `pwd` prints the current directory you're standing in, `ls` lists what's inside it, `cd` changes into a different directory, `mkdir` creates a new one, `cp` copies a file, `mv` moves or renames one, and `rm` deletes one — permanently, with no trash bin by default, which is the single most common way beginners lose work they didn't mean to lose. Each of these commands is itself a small program, found on disk and executed by the shell exactly the way any other program is executed, which is a useful thing to internalize early: the shell is not magic, it is itself just software that reads what you typed, finds the matching executable file, and runs it with whatever arguments followed. Permissions are the other concept worth learning here before moving on — every file and directory on a Unix-like system carries read, write, and execute flags for its owner, its group, and everyone else, which is the actual mechanism (not just a UI convention) that stops one user's program from reading another user's private files on a shared machine, the same multi-user isolation principle the earliest timesharing operating systems had to solve decades ago.

You type a command
e.g. ls -la, cd projects, rm notes.txt
Shell parses the text
splits command name from its arguments
Shell locates the executable
searches directories listed in the PATH variable
Operating system runs the program
checks your permissions on the target file first
Result printed back to the terminal
output, or an error if permission was denied
The Filesystem Is a Tree Every file's path describes a walk down from the root / etc/ home/ usr/ user/ projects/ notes.txt /home/user/projects/notes.txt — one path, one unique location
Core Terminal Commands A small vocabulary covers most day-to-day navigation pwd print working directory ls list directory contents cd change directory mkdir make a new directory cp / mv copy / move or rename a file rm delete — no trash bin by default each command is itself a small program the shell locates and runs

Everything else in this curriculum series — writing a program, compiling it, running it under a debugger, committing it to version control — happens inside this same filesystem-and-terminal environment, so the fluency this article covers is not a prerequisite to skip past quickly but the actual workspace every later topic takes place in.

Take working with a computer further

Ask the copilot about this term, or have our engineers assess it against your process.