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.
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.