Week 1

Stage 0 · Weeks 1–2 · foundations

Developer Foundations

Understand computer/dev environment

Current

Scored stage progress

0%

Practice and implementation

0/14

Exercises + milestone requirements owned by this stage

Evidence and gate

0 · 0/15

Artifacts · checked requirements

Why it matters

Purpose of this stage

Understand computer/dev environment

Subjects

4 subjects · 36 canonical topics

Each subject states what you should be able to do, an order to work through it in, what to watch for, and the questions a reviewer should be able to ask you at the end. None of it is tracked or scored.

How to work through this subject

An order that works, not a checklist. Nothing here is tracked — the steps sequence this subject’s own topics and add none.

  1. Read about CPU, memory and disk as three separate places, and write down which of them survives losing power.
  2. Open your machine's activity monitor and find one running process. Note that the program it came from is still sitting on disk unchanged.
  3. Write the same short sentence into a text file and into a document from a word processor, then look at both in a terminal and observe the difference.
  4. Write out, in your own words, the path to a file you use often — first as an absolute path, then relative to somewhere else.
  5. Finish by explaining program, process, path and environment variable out loud, without notes, in under three minutes.

What to watch for

  • The distinction that matters most is program (a file on disk) versus process (a running instance in memory).
  • Paths are not decoration: almost every beginner error in later stages is a wrong working directory.
  • The operating system is the thing standing between your program and the hardware. Every file it opens and every byte of memory it uses was granted, not taken.
  • Nothing here needs code. If you find yourself installing something to learn this group, you have gone past it.
  • These six terms recur for the next 104 weeks. Time spent making them precise now is repaid every single stage.

Curriculum topics

CPU vs memory vs disk
The CPU does the work, memory (RAM) holds what is being worked on right now, and disk keeps things when the power goes off.
program vs process
A program is a file sitting on disk; a process is that program actually running, with its own memory.
operating system
The software that manages hardware, files and running processes, and gives every program a common way to ask for them.
file/folder/path
Files hold data, folders group files, and a path is the address that locates one of them.
absolute vs relative path
An absolute path starts from the root and always means the same place; a relative path is read from wherever you currently are.
text file vs binary file
A text file is human-readable characters; a binary file is raw bytes meant for a program, and looks like noise in an editor.
executable
A file the operating system can run as a program, rather than just read.
environment variable
A named value the shell hands to programs it starts — used for configuration and secrets that should not be hard-coded.

Resources for this subject

  • REFERENCEComputer Basics GCFGlobal
    Plain-language coverage of hardware, the operating system and how files are organised, written for someone starting from nothing. Use it for the vocabulary, then move to the terminal material.
    Open

A reviewer should be able to answer these

Answer from memory, out loud, before moving on. These are not tracked and do not affect the gate — they tell you whether you actually understand this subject.

  1. What is the difference between a program and a process?
  2. Why does data in RAM disappear when the machine loses power, but data on disk does not?
  3. What does an absolute path guarantee that a relative path does not?
  4. What does the operating system actually do when you double-click an executable?
  5. Why does a text file open cleanly in an editor when a binary file does not?
  6. What makes a file executable, as opposed to merely readable?
  7. Why would a program read a value from an environment variable rather than from a line in its own source?
  8. Where does a program's data live while it runs, and where does it have to be put to still be there tomorrow?

Exercises

Demonstrated practice · 35% base weight

Create folders

warmup ~15 min

Build the learning repository's directory tree from the terminal, without a file browser.

What to implement

  • Create `applied-ai-ml-learning/` in your home directory.
  • Create `notes/`, `exercises/` and `projects/` inside it.
  • Create a nested folder two levels deep in one command.
  • Verify each level with `ls` as you create it, rather than at the end.
  • Delete one folder you created and rebuild it, without touching a file browser.

Done when

  • `pwd` and `ls` confirm the structure without opening a file browser.
  • You can recreate the whole tree from memory in under a minute.
  • You can name the flag that let one command create a nested path.
  • Every folder was created by a command you typed, not by a graphical tool.

One hint, available after you have made a real attempt.

Move files

warmup ~15 min

Practise moving and copying files between directories, and understand the difference.

What to implement

  • Create a file in `notes/` and copy it to `exercises/`.
  • Move a file to a different directory and confirm it is no longer in the original.
  • Rename a file using the same command you used to move it.
  • Copy a file onto an existing filename and observe what happened to the original.
  • Move a file into a directory that does not exist and read the resulting error.

Done when

  • You can state what `cp` leaves behind that `mv` does not.
  • You have renamed a file without creating a copy.
  • You can predict, before running it, whether a command will overwrite something.
  • You can explain why moving within one directory is the same operation as renaming.

One hint, available after you have made a real attempt.

Inspect files

warmup ~10 min

Read file contents from the terminal and tell text and binary files apart.

What to implement

  • Print a text file's contents to the terminal.
  • Inspect a binary file (an image, say) and observe what happens.
  • List a directory including hidden files.
  • Print only the first few lines of a long file rather than all of it.
  • Check a file's size before printing it, so you do not flood the terminal.

Done when

  • You can explain why printing a binary file produces unreadable output.
  • You can list files most tools hide by default.
  • You can inspect an unfamiliar file without knowing in advance how large it is.
  • You can name the convention that makes a file hidden.

One hint, available after you have made a real attempt.

Run commands

core ~20 min

Chain commands and use shell history so you stop retyping and start composing.

What to implement

  • Use shell history to re-run an earlier command without retyping it.
  • Pipe the output of one command into another.
  • Find out what a command does before running it.
  • Chain three commands into one pipeline and describe what each stage received.
  • Re-run the previous command with one argument changed, using history rather than retyping.

Done when

  • You can describe what the pipe passed between the two commands.
  • You have looked up at least one flag rather than copying it.
  • You can build a two-stage pipeline without looking up the syntax.
  • You can explain why the second command never knew a file was involved.

One hint, available after you have made a real attempt.

Create environment variables

core ~20 min

Set a variable in your shell, read it back, and observe that it disappears in a new session.

What to implement

  • Set an environment variable and print its value.
  • Open a new terminal and confirm whether it survived.
  • Read the variable from inside a Python program.
  • Set a variable for one command only, without changing the rest of the session.
  • Read the variable from a Python program when it is missing, and handle that case.

Done when

  • You can explain why the variable did not survive the new session.
  • A Python script has read a value you set in the shell.
  • You can state the difference between a shell variable and an exported one.
  • Your Python script behaves sensibly when the variable is not set at all.

One hint, available after you have made a real attempt.

Install Python

core ~30 min

Install Python and confirm which interpreter your terminal actually invokes.

What to implement

  • Install Python 3 on your machine.
  • Print the version from the terminal.
  • Find the full path of the interpreter that runs when you type `python3`.
  • List every Python your shell can find, not only the first one.
  • Record the version and path in your notes for the environment you will use all stage.

Done when

  • You can state the exact version and location of the interpreter you are using.
  • You know what to check if a second Python appears later.
  • You can explain why `python` and `python3` may resolve to different programs.
  • Your recorded version matches what a fresh terminal reports.

One hint, available after you have made a real attempt.

Run a `.py` file

core ~15 min

Write and run your first script from the terminal, from more than one directory.

What to implement

  • Write a `.py` file that prints something.
  • Run it from the same directory.
  • Run it from a different directory using a path.
  • Run it once with an absolute path and once with a relative one.
  • Run it from a directory where the relative path fails, and explain the failure.

Done when

  • The script runs from anywhere on the machine.
  • You can explain the relationship between your working directory and the path you typed.
  • You can predict whether a given path will work before pressing enter.
  • You can state what the working directory had to do with the failure.

One hint, available after you have made a real attempt.

Stage project

Only milestones owned by Stage 0 count here

P0 · Stage project

Terminal Notebook

Project detail

basic environment literacy.

P0.M1 · Environment literacy

Resources

0% progress weight

Resource status is a convenience marker only. It cannot change competencies, gates, or stage completion — in any tier below.

References

2 available
  • OPTIONALThe Missing Semester of Your CS Education MITThe shell, editors and developer tooling a CS degree assumes you picked up somewhere. Optional here: take the shell lectures if the terminal still feels foreign after the practice, and leave the rest.Open
  • REFERENCEVS Code Documentation MicrosoftReference for the editor itself — the integrated terminal, workspace folders and settings. Look things up as you need them; there is nothing here to work through.Open
Need another explanation?6 supplementary resources · not part of the canonical library

Use these for a demonstrated gap, not as a parallel course. They are authored additions and can never be the primary resource for a subject.

  • REFERENCEComputer Basics GCFGlobalPlain-language coverage of hardware, the operating system and how files are organised, written for someone starting from nothing. Use it for the vocabulary, then move to the terminal material.Open
  • REFERENCEInstalling Packages Python Packaging AuthorityWhat a package manager does and why each project gets its own virtual environment, from the people who maintain both. Read the tutorial for the why and the venv page for the mechanics.Open Open
  • REFERENCEHow does the Internet work? MDNClient, server, addresses and what a URL is made of, at the level of intuition this stage asks for. Stage 4 supplies the protocol detail; stopping here is deliberate.Open Open
  • REFERENCEThe Unix Shell Software CarpentryA structured, exercise-driven shell course built for people who have never used a terminal. Covers exactly the commands Stage 0 lists.Open
  • REFERENCEThe Linux command line for beginners UbuntuA single-sitting walkthrough of navigation, paths and file manipulation. Good as a second pass if the shell still feels foreign.Open
  • REFERENCEexplainshell explainshell.comPaste any command and it breaks down every flag. Use it instead of copying a command you do not understand — which is the habit Stage 0's gate tests.Open

Stage gate

Readiness assessment

Not ready

Stage-specific requirements

Answer each prompt without notes. Expand a question only when you are ready to check your answer.
0/7
  • What happens when a Python program runs?
    Without notes.
    Answer

    The operating system starts the Python interpreter as a process. With CPython, the interpreter parses and compiles the source to bytecode, then executes that bytecode in Python's virtual machine while the process uses RAM for its working data. When execution finishes or an unhandled error occurs, the process exits.

  • What is the difference between RAM and disk?
    Without notes.
    Answer

    RAM is fast, temporary working memory used by running processes; its contents disappear when power is lost. Disk is slower, persistent storage that keeps programs and files after the computer is turned off.

  • What is the difference between an absolute and a relative path?
    Without notes.
    Answer

    An absolute path identifies a location from the filesystem root, so it does not depend on the current directory. A relative path identifies a location starting from the current directory, so its meaning can change when the current directory changes.

  • What is the difference between a package and a dependency?
    Without notes.
    Answer

    A package is a distributable bundle of code that can be installed by name and version. A dependency is a relationship: it is a package or project that your program needs in order to run, build, or be tested.

  • What is the difference between a client and a server?
    Without notes.
    Answer

    A client starts an exchange by sending a request, such as a browser asking for a page. A server waits for requests, processes them, and sends responses, often using application logic or stored data.

  • What is an environment variable?
    Without notes.
    Answer

    An environment variable is a named text value supplied by the operating system or shell to a process. Programs use it for configuration that should vary between environments, including secrets that should not be hard-coded or committed.

  • How do you create and navigate a project directory entirely from Terminal?
    Answer

    For example, run mkdir -p my-project/src to create the folders, cd my-project to enter the project, pwd to confirm the current directory, and ls to inspect its contents. Use cd .. to move to the parent directory and cd src to enter the nested folder.

Universal requirements

The eight conditions 01_LEARNING_RULES.md applies to every stage. Expand one to see what it actually asks for.
0/8
  • Core concepts can be explained from memory.
    What this asks for

    Every subject in this stage has review questions. The condition is met when you can answer them out loud, without notes and without looking anything up, in your own words rather than a recited definition. An explanation you can only give with the material open is recognition, not recall.

  • Required exercises are complete.
    What this asks for

    Complete means each exercise satisfies its stated requirements and its done-when criteria, not that you attempted it. Where an exercise says you should be able to explain or defend something, that explanation is part of completing it. A stage whose source lists no exercises meets this through its owned project milestone instead.

  • Stage project works.
    What this asks for

    Works means it runs end to end from a clean checkout, on the inputs it was built for, with the failure cases it claims to handle actually handled. It is not a notebook that produced a result once. Someone else following your README should be able to run it without asking you a question.

  • Tests or verification exist.
    What this asks for

    There is something that would fail if the behaviour regressed, and you have watched it fail. That can be automated tests or a written verification procedure with recorded results, depending on what the stage produces. A test that has only ever passed is evidence of nothing.

  • README explains decisions.
    What this asks for

    The README says what the project is, how to install, run and test it, and why it is built the way it is: the choices you made, the alternatives you rejected, and what you deliberately left out. A list of commands with no reasoning does not meet this condition.

  • You can reproduce the core implementation without copying.
    What this asks for

    Delete the central piece and write it again from an empty file, without your previous version, a tutorial, or generated code in front of you. It does not have to be identical, it has to work and you have to be able to explain every line. This is the condition that separates having finished from being able.

  • You pass the stage self-assessment at >= 80%.
    What this asks for

    Record a gate exam and score yourself honestly against the dimensions the roadmap defines: recall, implementation, debugging, testing and design judgment. Elapsed time, hours watched and completed resources count for nothing here. Checking the boxes without a recorded exam does not open the gate.

  • Claude/ChatGPT reviewer finds no foundational blocker.
    What this asks for

    Ask an AI reviewer to examine the work against this stage's concepts and report foundational misunderstandings, not style. A foundational blocker is a misconception that later stages would build on, such as leakage, a broken abstraction, or an explanation that is confidently wrong. Nothing in that class may remain open when you pass.

Recorded exam

No exam recorded. Checking every requirement is not sufficient.

Evidence

Artifacts linked to this stage

Add evidence
No stage evidence yet.