← all labs  ·  ← prev lab  ·  next lab →

Orientation Class 2

Every Language Has to Answer These Questions

A small, finite list of problems every programming language has to solve somehow. JavaScript's specific answers are what the rest of this course investigates, one at a time.

What this class produces: no files, no commit — an index, not a lecture. Ten landmarks, one line each. Nothing here is explained in full yet.
This page is a map you'll come back to, not something to memorize now. Every lab from here on opens with one of these ten badges, so you always know which recurring problem that lab's experiment is actually about.

The Recurring Problem

Different languages keep running into the same handful of design problems: how to represent a value, how to name things, how to package computation, how to structure data, how to fail safely, how to wait on things, how source becomes execution. Each language picks its own answers. This course's real subject isn't "JavaScript syntax" — it's "given this recurring problem, what did JavaScript choose, and what follows from that choice?"


The Ten Landmarks

One glyph, one question, one tiny cross-language pointer each. That's the whole page.

◇
1 of 10

VALUES & TYPES

"What kinds of information can this language represent, and how does it tell them apart?"

Python has an answer. C# has an answer. Rust has an answer. JavaScript has an answer — investigated starting next lab.

◎
2 of 10

NAMES & SCOPE

"If I write customer, where does the language look for that name?"

Every language needs rules for name resolution. JavaScript's rules have a few sharp edges Python doesn't.

↪
3 of 10

CONTROL FLOW

"How does the language express a decision, a repeat, or 'do this instead of that'?"

Familiar territory from Python — the differences here are mostly syntax, with a few real exceptions later on.

ƒ
4 of 10

FUNCTIONS & ABSTRACTION

"How do I package up computation, name it, and reuse it — or pass it around like any other value?"

Both languages treat functions as values. JavaScript leans on that harder than most code you'll have written in Python.

▦
5 of 10

DATA, OBJECTS & REUSE

"How do I group related data and behavior together, and how does one 'kind of thing' share behavior with another?"

Python's classes are class-based end to end. JavaScript's object model is built on something else entirely underneath.

⌛
6 of 10

MEMORY & LIFETIME

"How long does a value live, and who's responsible for reclaiming it when it's done?"

C++ hands this to you directly. Rust checks it at compile time. Python, C#, Go, and JavaScript all automate it — but not identically.

!
7 of 10

ERRORS & FAILURE

"When something goes wrong, how does the language represent that, and how does the failure travel?"

Both languages use try/catch-shaped structured exceptions. The details of what gets thrown, and when, differ.

▣
8 of 10

MODULES & ORGANIZATION

"How do I split a large program into separate files that can share specific things, deliberately?"

Python has had this from early on. JavaScript's answer arrived much later in the language's life, on top of an older, less isolated model.

⏱
9 of 10

ASYNCHRONY & CONCURRENCY

"How does the program deal with waiting on something, without freezing everything else?"

Python's asyncio is opt-in. JavaScript's single-threaded, event-loop-driven model is the default for the entire language, everywhere it runs.

▶
10 of 10

EXECUTION

"How does source code actually become running computation, step by step?"

Every language has some version of a call stack and an execution model. JavaScript's specific version is the very next lab.

Why ten, not eleven or six

An earlier draft of this map kept "data/objects" and "reuse/polymorphism" as two separate landmarks. In practice, every lab in this curriculum that deals with one deals with the other at the same time — JavaScript's prototype chain answers both "how do I structure an object" and "how does one object share behavior with another" simultaneously. Merging them produced a cleaner set of landmarks without losing anything the course actually teaches.


How the Badges Work From Here

Every lab from now on opens with a badge like this one:

ƒ
FUNCTIONS & ABSTRACTION 4 of 10

That's the lab's primary landmark — usually just one. Occasionally a lab sits at the intersection of two, like closures:

ƒ
FUNCTIONS & ABSTRACTION 4 of 10
◎
NAMES & SCOPE 2 of 10

"Closures sit at the intersection of functions and lexical scope." One short sentence, then straight into the lab — not a full re-explanation of the map every time.


What This Is Building Toward

By the end of this course, seeing a brand-new language should make you start asking: how does this one handle types? Scope? Functions? Objects? Memory? Failure? Async? Execution? We're teaching JavaScript specifically — but underneath that, we're teaching you to recognize the ten questions every language keeps answering, so JavaScript's answers stop looking arbitrary and start looking like choices.

← All labs  ·  Lab 03 — Values, Types & typeof →