🌍 The Odin Project · subject
The Odin Project Foundations Syllabus
The Foundations syllabus for The Odin Project in full: 6 chapters and 35 topics, every one listed below, plus 50 Foundations flashcards with answers.
Foundations syllabus: all 6 chapters
Expand any chapter to see its topics and sub-topics.
-
Introduction & Prerequisites
6 topics- Introduction to Web Development
- Motivation and Mindset
- Asking For Help
- How Does the Web Work?
- Installations & Text Editors
- Command Line Basics
-
Git Basics
3 topics- Setting up Git
- Introduction to Git
- Git Basics
-
HTML Foundations
8 topics- Introduction to HTML and CSS
- Elements and Tags
- HTML Boilerplate
- Working with Text
- Lists
- Links and Images
- Commit Messages
- Project: Recipes
-
CSS Foundations
5 topics- Intro to CSS
- The Cascade
- Inspecting HTML and CSS
- The Box Model
- Block and Inline
-
Flexbox
5 topics- Introduction to Flexbox
- Growing and Shrinking
- Axes
- Alignment
- Project: Landing Page
-
JavaScript Basics
8 topics- Language Fundamentals
- Installing Node.js
- JavaScript Developer Tools
- Problem Solving
- Understanding Errors
- Clean Code
- DOM Manipulation and Events
- Foundations Projects
The Odin Project Foundations flashcards — 50 questions with answers
What is the difference between a front-end, back-end, and full-stack web developer?
A front-end developer builds the parts of a website users see and interact with in the browser (using HTML, CSS, JavaScript). A back-end developer works on the server side: databases, servers, and application logic. A full-stack developer works on both the front end and the back end.
What are the distinct roles of HTML, CSS, and JavaScript in a web page?
HTML provides the structure and content (the raw material), CSS controls the style and presentation (layout, colors, fonts), and JavaScript adds behavior and interactivity (making the page dynamic).
What is a growth mindset, and how does it differ from a fixed mindset?
A growth mindset is the belief that abilities can be developed through effort and practice, so challenges and failures are opportunities to learn. A fixed mindset assumes intelligence and talent are static, so failure is seen as a limit. Learning to code requires a growth mindset because struggling is a normal part of the process.
What is 'tutorial hell,' and what is the recommended way to escape it?
Tutorial hell is endlessly watching or following tutorials while passively copying code without being able to build anything independently. The cure is active learning: build your own projects, struggle through problems yourself, and use tutorials only as references.
What is 'rubber duck debugging'?
A debugging technique where you explain your code and problem out loud, line by line, to an inanimate object (like a rubber duck). Articulating the problem forces you to slow down and often reveals the solution on its own.
What is the 'XY problem' when asking for help?
Asking about your attempted solution (Y) instead of your actual underlying problem (X). Helpers waste time on Y when a better solution to X may exist. Always describe the original problem and end goal, not just the workaround you are stuck on.
What should a good programming help question include?
Context about the goal, the exact code (or a minimal reproducible example), the full error message, what you expected to happen versus what actually happened, and what you have already tried. Show your research effort and don't ask to ask, just ask.
List the main steps that happen after you type a URL into a browser and press Enter.
1) The browser asks a DNS server to resolve the domain name into an IP address. 2) The browser sends an HTTP(S) request to the server at that IP. 3) The server processes the request and sends back a response (HTML, CSS, JS, images) in data packets. 4) The browser assembles the packets and renders the page.
What is an IP address?
An Internet Protocol address: a unique numerical address identifying each device on a network (e.g., 172.217.7.142 for IPv4), used so computers can find and communicate with each other.
What is DNS and what problem does it solve?
The Domain Name System is like the internet's phone book: it translates human-readable domain names (e.g., google.com) into machine-usable IP addresses, so people don't have to memorize numeric addresses.
What are packets in the context of the web?
Small chunks into which data is broken before being sent across the internet. Each packet travels independently (possibly by different routes) and the pieces are reassembled in order at the destination; this makes transfer faster and more fault-tolerant.
What is the difference between a client and a server?
A client is the device/software (typically a web browser) that requests resources. A server is a computer that stores websites and services and responds to client requests by sending the requested data. Together they form the web's request-response model.
What is HTTP, and how is HTTPS different?
HTTP (HyperText Transfer Protocol) is the protocol defining how clients and servers exchange web data via requests and responses. HTTPS is HTTP with encryption (TLS/SSL), so data in transit cannot be read or tampered with by third parties.
What is the difference between a web browser and a search engine?
A web browser (e.g., Chrome, Firefox) is software on your device that retrieves and displays web pages. A search engine (e.g., Google, Bing) is a website you visit through a browser that indexes and helps you find other web pages.
Why must code be written in a plain-text editor (like Visual Studio Code) rather than a word processor?
Word processors embed hidden formatting characters that break code. Plain-text editors save only the raw characters and add developer features like syntax highlighting, auto-completion, extensions, and an integrated terminal.
In the command line, what do `pwd`, `cd`, `..`, and `~` do or mean?
`pwd` prints the current working directory; `cd <path>` changes directory; `..` refers to the parent directory (so `cd ..` moves up one level); `~` is shorthand for your home directory.
What do the commands `ls`, `mkdir`, and `touch` do?
`ls` lists the files and folders in a directory (`ls -a` includes hidden files); `mkdir <name>` creates a new directory; `touch <name>` creates a new empty file.
How do you delete files and directories from the command line?
`rm <file>` deletes a file; `rmdir <dir>` deletes an empty directory; `rm -r <dir>` recursively deletes a directory and everything inside it. Deletions are permanent (no trash bin), so use with care.
What is the difference between the `cp` and `mv` commands?
`cp source destination` copies a file or directory (leaving the original in place; use `cp -r` for directories), while `mv source destination` moves it or renames it (the original no longer exists at the old path).
Which two Git configuration commands must you run when first setting up Git, and why?
`git config --global user.name "Your Name"` and `git config --global user.email "you@example.com"`. They set the identity that Git attaches to every commit you make.
Show the other 30 Foundations flashcards
What is the purpose of an SSH key when connecting to GitHub?
An SSH key pair (private key kept on your machine, public key uploaded to GitHub) lets you authenticate securely without typing a username/password each time you push or pull. The private key must never be shared.
What is Git, in one definition?
Git is a free, open-source distributed version control system: it records snapshots (commits) of a project's history over time, letting you review, revert, and collaborate on changes safely.
What is the difference between Git and GitHub?
Git is the version control software that runs locally on your computer and tracks changes. GitHub is an online hosting service for Git repositories, used to store remote copies and collaborate. You can use Git without GitHub, but not vice versa.
Describe the three 'states' a file change passes through in the basic Git workflow.
1) Modified: changed in the working directory but not tracked yet. 2) Staged: added to the staging area with `git add`, marked for the next commit. 3) Committed: saved as a permanent snapshot in the repository with `git commit`.
What is the difference between `git init` and `git clone`?
`git init` creates a brand-new empty Git repository in the current directory. `git clone <url>` downloads an existing remote repository (e.g., from GitHub) to your machine, including its full history, and automatically sets the remote origin.
What does `git add` do, and what does `git add .` mean?
`git add <file>` places a file's current changes into the staging area so they will be included in the next commit. `git add .` stages all changed files in the current directory and below.
What does `git commit -m "message"` do?
It records a permanent snapshot of everything currently in the staging area into the repository's history, labeled with the given commit message and your configured author identity.
What does `git push origin main` do, and what do 'origin' and 'main' refer to?
It uploads your local commits to the remote repository. 'origin' is the default name for the remote (e.g., your GitHub repo), and 'main' is the branch being pushed.
What is the difference between `git status` and `git log`?
`git status` shows the current state of the working directory and staging area (which files are modified, staged, or untracked). `git log` shows the history of commits already made, with their messages, authors, and dates.
Name and describe the parts of a typical HTML element.
An opening tag (e.g., <p>), the content, and a closing tag (e.g., </p>). Tags are keywords in angle brackets; the closing tag adds a forward slash. Opening tags may also carry attributes (name="value" pairs) that give extra information.
What is a void (self-closing) element in HTML? Give examples.
An element that has no content and therefore no closing tag. Examples: <br> (line break), <img> (image), <input>, <meta>, <link>.
Why must text be wrapped in elements like <p> instead of typed directly into the HTML body?
Browsers collapse sequences of whitespace and newlines in HTML into a single space, so raw text loses its formatting. Wrapping text in <p> elements creates proper paragraphs with spacing, and semantic elements also help accessibility and SEO.
What does the <!DOCTYPE html> declaration do?
Placed on the first line of every HTML document, it tells the browser which version of HTML to use; <!DOCTYPE html> specifies HTML5 and makes the browser render in standards mode.
What are the roles of the <head> and <body> elements in an HTML document?
<head> contains meta-information about the page (charset, title, linked stylesheets) that is not displayed as content. <body> contains all the content actually shown to the user: text, images, links, lists, etc.
What does <meta charset="UTF-8"> do and why is it important?
It sets the document's character encoding to UTF-8, ensuring the browser correctly displays a huge range of characters and symbols from many languages instead of garbled text.
Why should a website's homepage file be named index.html?
Web servers look for index.html by default when a user requests a directory or the site root; naming the homepage index.html means it loads automatically without the filename in the URL.
How many heading levels does HTML provide, and how should they be used?
Six: <h1> (largest/most important) through <h6> (smallest). Use them hierarchically to reflect document structure — typically one <h1> per page for the main title, with lower levels for subsections — not just for text size.
What is the difference between <strong>/<em> and <b>/<i>?
<strong> and <em> are semantic: <strong> marks text as important (usually bold) and <em> adds emphasis (usually italic); both convey meaning to screen readers. <b> and <i> only change appearance (bold/italic) without semantic meaning.
How do you write a comment in HTML, and what is it for?
Between <!-- and -->, e.g., <!-- this is a comment -->. Comments are ignored by the browser and are used to leave notes for yourself or other developers.
Compare <ul>, <ol>, and <li> in HTML.
<ul> creates an unordered (bulleted) list for items where order doesn't matter; <ol> creates an ordered (numbered) list for items where sequence matters; each item in either list is wrapped in an <li> element.
How do you create a hyperlink in HTML?
With the anchor element: <a href="https://example.com">link text</a>. The href attribute holds the destination URL; without href the anchor loses its link behavior.
What is the difference between absolute and relative links, and which should you use to link pages within your own site (e.g., a Recipes project)?
An absolute link is a full URL including protocol and domain (https://site.com/page). A relative link gives a path relative to the current file (e.g., pages/recipe.html or ../index.html). Use relative links between pages of the same site so they keep working when the domain or location changes.
What are the two key attributes of the <img> element, and what two purposes does the alt attribute serve?
src gives the path/URL of the image (required), and alt gives alternative text. alt (1) is read by screen readers for accessibility and (2) is displayed in place of the image if it fails to load.
When opening a link in a new tab with target="_blank", which rel values should you add and why?
rel="noopener noreferrer". noopener prevents the new page from accessing the original page via window.opener (blocking tabnabbing/phishing attacks), and noreferrer additionally hides the referrer information.
What are the conventions for writing a good Git commit message?
A short subject line (about 50 characters or fewer), capitalized, in the imperative mood ('Add search bar', not 'Added'), with no period; then a blank line; then an optional body wrapped at about 72 characters explaining what changed and why, not how.
Name the parts of a CSS rule.
A selector (which elements to target), followed by a declaration block in curly braces containing one or more declarations; each declaration is a property and a value separated by a colon and ended with a semicolon, e.g., p { color: red; }.
What is the difference between a class selector and an ID selector in CSS?
A class (.classname, from class="...") can be reused on many elements, and an element can have several classes. An ID (#idname, from id="...") must be unique — one per element and one element per page — and has higher specificity. Prefer classes; reserve IDs for special cases.
What are the three ways to add CSS to an HTML page, and which is preferred?
1) External: a separate .css file linked with <link rel="stylesheet" href="styles.css"> in the head (preferred: keeps HTML and CSS separate, reusable across pages). 2) Internal: rules inside a <style> element in the head. 3) Inline: a style attribute directly on an element (avoid; no selectors, hard to maintain).
What do the universal selector, type selector, and grouping do in CSS?
The universal selector * targets every element on the page. A type (element) selector targets all elements of a given tag, e.g., div. Grouping lets one rule apply to several selectors separated by commas, e.g., h1, h2 { color: blue; }, avoiding repetition.
In CSS, what is the difference between chaining selectors and the descendant combinator?
Chaining writes selectors together with no space (e.g., .subsection.header) to match elements that have both attributes at once. The descendant combinator uses a space (e.g., .ancestor .child) to match elements that are nested anywhere inside an element matching the first selector.
The Odin Project Foundations FAQ
What is in the The Odin Project Foundations syllabus?
The Odin Project Foundations is split into 6 chapters: Introduction & Prerequisites, Git Basics, HTML Foundations, CSS Foundations, Flexbox and JavaScript Basics. Together they contain 35 topics.
How many chapters are in The Odin Project Foundations?
6 chapters, containing 35 topics. The largest chapter is HTML Foundations, with 8 topics.
Are there flashcards for The Odin Project Foundations?
Yes — a 50-card Foundations deck, printed in full in the flashcards section of this page and available in the Examius app with spaced repetition. The free plan covers one exam of your choice, including its flashcards; Examius Pro, a one-time purchase, unlocks every other exam and deck.