Module 2: Developer Environment & Tooling
Primary text: Missing Semester (https://missing.csail.mit.edu/) 2026 lectures on the shell, command-line environment, and development tools
Selective support: The Linux Command Line for depth and Unix Network Programming for Unix/POSIX professional context
This module is the bridge between "I can use a computer" and "I can work like an engineer." You will learn to navigate confidently in a shell, edit fast enough that the editor disappears into the background, and build a reproducible environment that you can carry from machine to machine.
Before You Start (Diagnostic Prerequisites Assessment)
Start with the Beginner Route and Practical Checks for shell selection, required evidence and the 18–26-hour allocation. No previous programming or Git knowledge is assumed. Prepare config files here; add their Git history in Module 3.
Diagnostic use
Allow about 20 minutes as a planning estimate, with no speed cutoff. Attempt the five questions before revealing each answer. Unfamiliar topics identify what to learn next; they do not block entry to the module. Documentation is allowed during practice. Advanced customization is optional.
Diagnostic Questions
Question 1: Tool Layering
Which statement correctly distinguishes a terminal emulator from a shell?
a) A terminal emulator displays the interface, while the shell reads and executes commands
b) A shell is the visual window, while the terminal emulator parses commands
c) They are identical and the terms are interchangeable in all contexts
d) The shell manages files, while the terminal emulator manages processes
Reveal calibration after your attempt
Correct Answer: (a)
Why This Matters: If you confuse layers, you will struggle to troubleshoot configuration problems and pick the right tool to customize.
Question 2: Navigation and Paths
You are in ~/projects/degree-plan/docs and need to move to ~/projects/degree-plan/src. Which command is the most direct?
a) cd ../../src
b) cd ../src
c) cd ~/src
d) cd /src
Reveal calibration after your attempt
Correct Answer: (b) — .. moves from docs to degree-plan; src is its sibling directory.
Why This Matters: Reliable path reasoning is the foundation for shell fluency, scripting, and tool automation.
Question 3: Streams and Redirection
What does python app.py > run.log 2> run.err do?
a) Saves both output streams into run.log
b) Saves standard output to run.log and standard error to run.err
c) Saves standard error to run.log and standard output to run.err
d) Appends both streams to both files
Reveal calibration after your attempt
Correct Answer: (b)
Why This Matters: Engineers need to separate results from errors when debugging programs, test runs, and automation scripts.
Question 4: Process Control
You launched a long-running command in the foreground and want to continue using the shell. What is the usual workflow?
a) Press Ctrl+C, restart the command, and hope it finishes faster
b) Press Ctrl+Z, then use bg to resume it in the background
c) Close the terminal window and reopen it
d) Use fg to move it into the background
Reveal calibration after your attempt
Correct Answer: (b)
Why This Matters: Job control is one of the first shell features that makes the terminal feel like a real working environment rather than just a command launcher.
Question 5: Configuration and Reproducibility
Why do professional developers keep dotfiles under version control?
a) To hide private configuration from the shell
b) To make setup reproducible, track changes, and move environments between machines
c) To prevent tools from reading configuration until explicitly enabled
d) To speed up terminal startup by compressing configuration
Reveal calibration after your attempt
Correct Answer: (b)
Why This Matters: Environment setup is part of professional workflow. If your setup only lives in memory, it is not reliable.
Routing after the diagnostic
- Questions 1–2 missed: start with Cluster 1 navigation and tool distinctions.
- Questions 3–4 missed: study streams and interactive job control, then use the local workshop.
- Question 5 missed: study environment/configuration concepts and the disposable setup lab.
Even a correct diagnostic is not practical evidence. Follow the local route, preserve your first attempts and repair with fresh cases. Full external lectures, challenge-site quotas, personal dotfile changes and speed targets are not remediation prerequisites. The exit quiz and practical checks determine completion.
What This Module Is For
This module builds the environment discipline needed for the rest of the degree. Git, compilers, test runners, debuggers, package managers, containers, and remote machines all assume you can work from the command line and keep your tools under control.
You are not trying to become a shell maximalist. You are trying to become someone who:
- can work without being blocked by the GUI
- can debug environment problems instead of fearing them
- can reproduce a productive setup across machines
- can participate in professional engineering workflows without tool friction
Hierarchical Concept Organization
Medium Module Structure (8 concept pages in 3 clusters)
Learning Pathway:
- Master shell fundamentals
- Build editor speed and low-friction navigation
- Automate your environment so setup becomes reproducible instead of manual
How To Use This Module
This is a medium module with hierarchical sequencing. PRIMARY pages carry the core mental model for each cluster. SUPPORTING pages widen the model into practical technique.
Cluster 1: Shell Mastery (Concepts 1-3)
Learning Pathway: Navigation and file reasoning -> process control -> command composition
| Order | Concept | Type | Focus |
|---|---|---|---|
| 1 | Shell Navigation and File Operations | PRIMARY | Essential commands and file system interaction |
| 2 | Process Management and Job Control | SUPPORTING | Running, monitoring, and controlling processes |
| 3 | Command Composition, Redirection, and Pipes | SUPPORTING | Streams, redirection, filters, and shell composition |
Cluster Mastery Check: Can you inspect files, predict redirection and control your own practice job, explaining each result? Accessibility tools are permitted.
Cluster 2: Editor Efficiency (Concepts 4-5)
Learning Pathway: Modal editing -> editor tuning and navigation habits
| Order | Concept | Type | Focus |
|---|---|---|---|
| 4 | Modal Editing with Vim | PRIMARY | Efficient text editing and navigation |
| 5 | Editor Configuration and Fast Navigation | SUPPORTING | Search, splits, configuration, language support, and repeatable editor habits |
Cluster Mastery Check: Can you make small edits, move around a file, search, replace, and save without stopping to think about mode?
Cluster 3: Environment Automation (Concepts 6-8)
Learning Pathway: Environment variables -> dotfiles and setup -> real workflow integration
| Order | Concept | Type | Focus |
|---|---|---|---|
| 6 | Environment Variables and Shell Startup | PRIMARY | PATH, exports, profile files, and shell initialization |
| 7 | Dotfiles and Reproducible Setup | SUPPORTING | Version-controlled configuration and bootstrap workflow |
| 8 | Workflow Integration, Remote Work, and Automation | SUPPORTING | SSH, tmux, scripts, and environment choices that scale into professional work |
Cluster Mastery Check: Can you explain how your shell starts, where your config lives, and how you would recreate your setup on a fresh machine?