# missing-semester/missing-semester

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/missing-semester-missing-semester).**

5,525 stars · 1,319 forks · CSS · other

## Links

- GitHub: https://github.com/missing-semester/missing-semester
- Homepage: https://missing.csail.mit.edu/
- awesome-repositories: https://awesome-repositories.com/repository/missing-semester-missing-semester.md

## Description

The Missing Semester is a free, open-source educational curriculum designed to bridge the gap between theoretical computer science and the practical tooling every software engineer needs. Organized as a structured course, it covers Unix shell mastery, version control with Git, software debugging and profiling, system administration fundamentals, and computer security practices — the skills often left out of traditional degree programs. The project is maintained as a collaborative set of lecture notes, exercises, and guides that function as both a professional development tools course and a Unix and Git mastery resource.

What distinguishes The Missing Semester is its unusually broad scope, extending from core command-line and shell scripting to contemporary workflows like AI-assisted code generation, containerization with Docker and Docker Compose, and integration with external services via MCP and web APIs. The curriculum also addresses data wrangling and text processing, desktop environment customisation, advanced web browsing techniques, and a full security module covering encryption, authentication, and network privacy. This range means a single course can take a learner from basic filesystem navigation through to structured logging, performance profiling, and automated software testing.

The course is delivered through a lecture-video-driven format with accompanying Markdown notes that are rendered into a static website. Content is maintained year by year using separate Git branches, and community-translated versions in dozens of languages are linked directly from the site. Anyone can contribute improvements via pull requests, making the resource itself a living example of the open-source collaboration practices it teaches.

## Tags

### Education & Learning Resources

- [Video Lectures](https://awesome-repositories.com/f/education-learning-resources/educational-resources/reference-and-media/tutorials-media-curated-lists/interactive-learning-media/video-learning-channels/video-lectures.md) — Delivers structured lessons primarily through recorded video lectures paired with text notes.
- [Shell Mastery Fundamentals](https://awesome-repositories.com/f/education-learning-resources/shell-command-line-tutorials/shell-mastery-fundamentals.md) — Mastering the Unix shell, including scripting, pipelines, and command-line tools to automate tasks efficiently.
- [Practical Computing Courses](https://awesome-repositories.com/f/education-learning-resources/educational-resources/algorithms-theory-academics/academic-curricula-resources/academic-course-materials/curriculum-structuring/practical-computing-courses.md) — A structured course that teaches shell mastery, version control, debugging, and other essential tools for professional software engineers.
- [Technical Tooling Courses](https://awesome-repositories.com/f/education-learning-resources/educational-resources/courses-training-certifications/software-engineering-training-courses/professional-development-courses/technical-tooling-courses.md) — A primer covering the command-line, version control, debugging, security, and automation workflows needed in modern software development.
- [Version Control Fundamentals](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/version-control-learning/version-control-fundamentals.md) — Teaches fundamental version control concepts using snapshots for collaboration and rollback. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [Unix and Git Mastery Courses](https://awesome-repositories.com/f/education-learning-resources/unix-and-git-mastery-courses.md) — A focused curriculum on Unix shell, Git workflows, system administration, and data processing techniques for engineering environments.
- [Modal Editing Fundamentals](https://awesome-repositories.com/f/education-learning-resources/text-editor-tutorials/vim-guides/modal-editing-fundamentals.md) — The Missing Semester covers switching between Vim modes and composing keystrokes for efficient text manipulation. ([source](https://missing.csail.mit.edu/2026/development-environment/))

### Part of an Awesome List

- [Benchmarking and Profiling](https://awesome-repositories.com/f/awesome-lists/devtools/benchmarking-and-profiling.md) — Teaches performance benchmarking and profiling techniques for measuring CPU time, memory, and I/O. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))
- [Fundamentals](https://awesome-repositories.com/f/awesome-lists/devtools/debugging-and-profiling/fundamentals.md) — Diagnosing software issues using debuggers, logging, system call tracing, and performance profilers.
- [Shell Dotfile Configurations](https://awesome-repositories.com/f/awesome-lists/devtools/dotfiles-and-configuration/shell-dotfile-configurations.md) — The Missing Semester covers editing configuration files, setting PATH, creating aliases, and using enhanced history search. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [Git and Version Control](https://awesome-repositories.com/f/awesome-lists/devtools/git-and-version-control.md) — Managing code history and collaborating with Git through branching, merging, and effective commit workflows.
- [Browser Automation Tools](https://awesome-repositories.com/f/awesome-lists/devtools/browser-automation-tools.md) — Teaches browser automation scripting with WebDriver to simulate user interactions. ([source](https://missing.csail.mit.edu/2019/web/))

### Development Tools & Productivity

- [Command Line Argument Handlers](https://awesome-repositories.com/f/development-tools-productivity/command-line-argument-handlers.md) — Teaches accessing positional parameters, flags, and globbing patterns to control program behavior. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [Filesystem Navigation](https://awesome-repositories.com/f/development-tools-productivity/filesystem-navigation.md) — Covers moving between directories using cd and pwd, resolving absolute and relative paths. ([source](https://missing.csail.mit.edu/2026/course-shell/))
- [Git Workflow Utilities](https://awesome-repositories.com/f/development-tools-productivity/git-workflow-utilities.md) — Teaches customizing Git workflows with configuration, ignore files, and worktrees. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [History Rewriting](https://awesome-repositories.com/f/development-tools-productivity/history-rewriting.md) — Teaches rewriting Git history through rebasing, reverting, and stashing. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [Git History Navigation](https://awesome-repositories.com/f/development-tools-productivity/project-history-navigation/git-history-navigation.md) — Teaches inspecting Git history with commit logs, blame, and search. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [Pipeline Compositions](https://awesome-repositories.com/f/development-tools-productivity/shell-command-optimization/pipeline-compositions.md) — The Missing Semester covers spawning concurrent processes and connecting output of one to input of another via stdin, stdout, and stderr. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [AI Coding Assistants](https://awesome-repositories.com/f/development-tools-productivity/ai-coding-assistants.md) — Covers prompting an agent to write, refactor, or fix code with autonomous iteration over tests and linters. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [Automatic Code Formatters](https://awesome-repositories.com/f/development-tools-productivity/automatic-code-formatters.md) — Covers automatically reformatting code to enforce consistent style, handling spacing, quotes, and imports. ([source](https://missing.csail.mit.edu/2026/code-quality/))
- [Natural Language Codebase Exploration](https://awesome-repositories.com/f/development-tools-productivity/code-editors-ides/codebase-exploration-utilities/natural-language-codebase-exploration.md) — Teaches asking an agent questions about project structure, dependencies, and logic for accelerated onboarding and debugging. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [Pre-Commit Validations](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-analysis-tools/local-change-reviewers/pre-commit-validations.md) — Covers automatically running checks on staged files before each commit to prevent issues from entering the repository. ([source](https://missing.csail.mit.edu/2026/code-quality/))
- [Educational Code Reviews](https://awesome-repositories.com/f/development-tools-productivity/code-review-assistants/educational-code-reviews.md) — Teaches providing human review that distinguishes blocking issues from suggestions and focuses on code. ([source](https://missing.csail.mit.edu/2026/beyond-code/))
- [Exit Status Signaling](https://awesome-repositories.com/f/development-tools-productivity/exit-status-reporters/exit-status-signaling.md) — The Missing Semester covers checking exit status with $? and combining them with boolean operators for conditional execution. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [Breakpoint Debugging](https://awesome-repositories.com/f/development-tools-productivity/interactive-debug-consoles/breakpoint-debugging.md) — Teaches halting execution at breakpoints, inspecting variable state, and stepping through code. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))
- [Agent Session Parallelization](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/custom-parallel-task-execution/parallel-task-orchestrators/agent-session-parallelization.md) — Teaches launching multiple agent copies simultaneously using git worktrees to prevent interference. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [Project Agent Configuration](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-configuration/project-agent-configuration.md) — Covers providing behavioral instructions and documentation references that load automatically when an agent starts on the project. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [Project Task Execution](https://awesome-repositories.com/f/development-tools-productivity/project-task-execution.md) — Teaches defining aliases for common project-specific commands to run tasks with a short invocation. ([source](https://missing.csail.mit.edu/2026/code-quality/))
- [Deterministic Dependency Locking](https://awesome-repositories.com/f/development-tools-productivity/reproducible-build-environments/deterministic-dependency-locking.md) — Teaches pinning exact versions of all dependencies in a lock file for identical build environments. ([source](https://missing.csail.mit.edu/2026/shipping-code/))
- [Terminal Session Persisters](https://awesome-repositories.com/f/development-tools-productivity/terminal-session-persisters.md) — The Missing Semester teaches keeping terminal sessions alive after disconnecting and reattaching to them later. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))

### DevOps & Infrastructure

- [Branch Merging Strategies](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/version-control-systems/branch-merging-strategies.md) — Teaches branch merging strategies and conflict resolution for collaborative development. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [Staging Areas](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control/staging-areas.md) — Teaches using the Git staging area to selectively stage changes for commits. ([source](https://missing.csail.mit.edu/2026/version-control/))
- [Containerized Application Runtimes](https://awesome-repositories.com/f/devops-infrastructure/containerized-application-deployments/containerized-application-runtimes.md) — The Missing Semester teaches packaging an application with its full filesystem into a lightweight container image using Docker. ([source](https://missing.csail.mit.edu/2026/shipping-code/))
- [Continuous Integration Checks](https://awesome-repositories.com/f/devops-infrastructure/continuous-integration-pipelines/continuous-integration-checks.md) — Covers automatically executing formatters, linters, and tests on pushed code or pull requests to catch errors early. ([source](https://missing.csail.mit.edu/2026/code-quality/))
- [Virtual Environment Dependency Management](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/project-management/dependency-isolation/virtual-environment-dependency-management.md) — Teaches installing and isolating package dependencies per project using tools like pip or uv. ([source](https://missing.csail.mit.edu/2026/shipping-code/))
- [Multi-Container Orchestration](https://awesome-repositories.com/f/devops-infrastructure/multi-container-orchestration.md) — The Missing Semester teaches defining and managing interconnected services with shared networking using Docker Compose. ([source](https://missing.csail.mit.edu/2026/shipping-code/))

### Operating Systems & Systems Programming

- [Shells & Scripting](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/shells-scripting.md) — The Missing Semester teaches using bash conditionals, loops, command substitution, and exit status checks to build reusable scripts. ([source](https://missing.csail.mit.edu/2026/course-shell/))
- [Process Signal Management](https://awesome-repositories.com/f/operating-systems-systems-programming/process-signal-management.md) — The Missing Semester teaches sending signals like SIGINT and SIGTERM to pause, resume, or terminate processes and manage background jobs. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [File Search by Attribute](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-system-utilities/file-metadata-inspection/metadata-preservation-engines/metadata-extraction/file-system-attributes/alternate-file-selection-by-system-attributes/file-search-by-attribute.md) — The Missing Semester teaches using find to search for files by name, type, size, or age, with optional command execution on matches. ([source](https://missing.csail.mit.edu/2026/course-shell/))

### Programming Languages & Runtimes

- [Shell Program Execution](https://awesome-repositories.com/f/programming-languages-runtimes/function-argument-passing/shell-program-execution.md) — Teaches running executables by name, passing arguments, and consulting man pages for help. ([source](https://missing.csail.mit.edu/2026/course-shell/))
- [Shell Command Substitutions](https://awesome-repositories.com/f/programming-languages-runtimes/variable-assignments/variable-substitutions/shell-command-substitutions.md) — Covers assigning, exporting, and unsetting shell variables and using command substitution. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [Memory and Concurrency Error Detection](https://awesome-repositories.com/f/programming-languages-runtimes/undefined-behavior-detection/memory-and-concurrency-error-detection.md) — Teaches instrumenting code to catch buffer overflows, data races, and undefined behavior. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))

### Security & Cryptography

- [Remote Command Execution and File Transfers](https://awesome-repositories.com/f/security-cryptography/secure-ssh-access/remote-command-execution-and-file-transfers.md) — The Missing Semester teaches running commands non-interactively, transferring files, and authenticating with key pairs via SSH. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))
- [Security Best Practices](https://awesome-repositories.com/f/security-cryptography/security-best-practices.md) — Protecting data and systems with encryption, authentication, SSH key management, and secure communication.
- [Key Pair Authentication Methods](https://awesome-repositories.com/f/security-cryptography/ssh-authentication/key-pair-authentication-methods.md) — The Missing Semester teaches logging into remote servers by proving possession of a private key through challenge-response. ([source](https://missing.csail.mit.edu/2020/security/))
- [Password Management](https://awesome-repositories.com/f/security-cryptography/password-management.md) — The Missing Semester covers using a password manager and two-factor authentication to secure accounts. ([source](https://missing.csail.mit.edu/2019/security/))

### Software Engineering & Architecture

- [Educational Curricula](https://awesome-repositories.com/f/software-engineering-architecture/open-source-projects/educational-curricula.md) — A collaboratively maintained set of lecture notes, exercises, and guides for bridging theoretical computer science and practical tooling.
- [Contribution Workflows](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/engineering-best-practices/open-source-collaboration/open-source-methodologies/contribution-workflows.md) — Teaches submitting bug reports and pull requests that respect maintainer time with clear rationale. ([source](https://missing.csail.mit.edu/2026/beyond-code/))
- [Regular Expression-Based Parsing](https://awesome-repositories.com/f/software-engineering-architecture/regular-expression-based-parsing.md) — The Missing Semester teaches using regex syntax to search, validate, and parse strings across command-line tools, IDEs, and programming languages. ([source](https://missing.csail.mit.edu/2026/code-quality/))

### System Administration & Monitoring

- [Systemd Unit Control](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/service-and-infrastructure-management/service-infrastructure-monitoring/service-monitors/systemd-service-monitoring/systemd-unit-control.md) — Teaches controlling systemd services using systemctl and journalctl. ([source](https://missing.csail.mit.edu/2019/machine-introspection/))
- [Command Line System Administration](https://awesome-repositories.com/f/system-administration-monitoring/command-line-system-administration.md) — Configuring and managing Unix systems, services, networks, and resources from the command line. ([source](https://missing.csail.mit.edu/2019/os-customization/))
- [System Call Tracing](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/execution-tracers/kernel-tracing-frameworks/system-call-tracing.md) — Teaches system call tracing for diagnosing low-level application interactions. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))
- [System Activity Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/system-activity-monitoring.md) — Teaches real-time system activity monitoring for processes, resource usage, and network connections. ([source](https://missing.csail.mit.edu/2019/machine-introspection/))
- [System Logging](https://awesome-repositories.com/f/system-administration-monitoring/system-logging.md) — Teaches inspecting system and application logs with tools like journalctl and dmesg. ([source](https://missing.csail.mit.edu/2019/machine-introspection/))
- [System Service Managers](https://awesome-repositories.com/f/system-administration-monitoring/system-service-managers.md) — Teaches managing system services, daemons, and basic system administration tasks. ([source](https://missing.csail.mit.edu/2020/potpourri/))
- [Structured Logging](https://awesome-repositories.com/f/system-administration-monitoring/structured-logging.md) — Teaches adding structured logging statements with severity levels for later diagnostic analysis. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))

### Artificial Intelligence & ML

- [Agentic Context Management](https://awesome-repositories.com/f/artificial-intelligence-ml/agentic-context-management.md) — Teaches clearing, rewinding, or compacting the agent's context window to maintain focus and performance. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [AI Code Reviewers](https://awesome-repositories.com/f/artificial-intelligence-ml/ai-code-reviewers.md) — Teaches asking an agent to examine uncommitted changes or pull requests for correctness, security, and style. ([source](https://missing.csail.mit.edu/2026/agentic-coding/))
- [Error Diagnosis Assistants](https://awesome-repositories.com/f/artificial-intelligence-ml/ai-development-assistants/error-diagnosis-assistants.md) — Teaches feeding error messages and crash dumps to a language model for explanations and fixes. ([source](https://missing.csail.mit.edu/2026/debugging-profiling/))
- [Shell Command Generation](https://awesome-repositories.com/f/artificial-intelligence-ml/shell-command-generation.md) — Teaches generating shell commands from natural language descriptions using AI models. ([source](https://missing.csail.mit.edu/2026/command-line-environment/))

### Testing & Quality Assurance

- [Automated Software Testing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/e2e-integration-testing/end-to-end-testing/automated-software-testing.md) — Teaches creating unit, integration, and end-to-end tests to verify correctness, including regression and property-based tests. ([source](https://missing.csail.mit.edu/2026/code-quality/))
- [Static Code Analysis](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis.md) — Teaches running static analysis to detect bugs, style violations, and risky patterns with configurable rules and auto-fixes. ([source](https://missing.csail.mit.edu/2026/code-quality/))

### User Interface & Experience

- [Keyboard Navigation Shortcuts](https://awesome-repositories.com/f/user-interface-experience/navigation-components/keyboard-navigation-shortcuts.md) — Teaches browser keyboard shortcuts for efficient tab and window navigation. ([source](https://missing.csail.mit.edu/2019/web/))
- [User Stylesheets](https://awesome-repositories.com/f/user-interface-experience/user-stylesheets.md) — Teaches injecting custom stylesheets to permanently alter web page appearance. ([source](https://missing.csail.mit.edu/2019/web/))

### Web Development

- [Script Injections](https://awesome-repositories.com/f/web-development/custom-page-frameworks/page-content-injections/script-injections.md) — Teaches injecting user scripts to modify and extend web page functionality. ([source](https://missing.csail.mit.edu/2019/web/))
- [Command-Line HTTP Requests](https://awesome-repositories.com/f/web-development/fetch-api-integrations/command-line-http-requests.md) — Teaches fetching data from web APIs using HTTP requests in command-line workflows. ([source](https://missing.csail.mit.edu/2019/web/))
- [Data Fetching and Repository Access](https://awesome-repositories.com/f/web-development/web-apis/data-fetching-and-repository-access.md) — Teaches accessing online data through web APIs and contributing changes to repositories. ([source](https://missing.csail.mit.edu/2020/potpourri/))
