How This Course Is Structured
Every lesson in this course follows the same format — not out of habit, but because each section does a specific job. Once you know what to expect and why, you'll get more out of every lesson you read.
By the end of this lesson, you will:
- Identify every recurring section in a lesson and explain what it's for
- Distinguish between the three callout box types and know when each appears
- Know which sections are mandatory to engage with and which are reference material
- Understand the course's philosophy on mistakes, pacing, and skipping ahead
- Know how to use the Knowledge Check diagnostically rather than as a grade
The Format Exists for a Reason
A course that teaches you to program a physical robot has different demands than a course about abstract computing concepts. You might be reading this on a laptop in your school library, but eventually the goal is to have code running on a robot that weighs 120 pounds and can move at 15 feet per second. That context shapes how lessons are built.
Every section in every lesson has a job. Some sections give you knowledge. Some check whether you have it. Some connect what you just learned to the physical hardware it affects. Understanding that structure means you can use this course more intentionally — and when you need to go back and find something, you'll know exactly where to look.
The Anatomy of a Lesson
Click any section in the lesson template on the left to learn what it does and how to get the most from it.
The Three Callout Types
Three distinct callout boxes appear throughout this course. Each one has a different voice and a different job. Learning to read them differently will save you time — and in some cases, save your robot. Click each one below to see what it means and when to pay the closest attention.
When it appears: When a concept has a direct, documented failure mode at competition — things seen in pits, on the field, or during practice matches. These are hard-won observations, not theory.
How to read it: Don't skip these. They describe failure patterns that repeat across events and teams. Every Event Observation reflects something that has actually happened — often at the worst possible moment.
When it appears: When there's a "why" worth explaining that the main text doesn't have room for — an analogy, a design rationale, or a common misconception to head off before it forms.
How to read it: Tips are optional but high-value. If the main content makes sense without it, feel free to keep moving. If something in the main text felt arbitrary or confusing, the tip is often the explanation that makes it land.
When it appears: Near the end of every lesson, before the Knowledge Check. Lists the hardware and electrical prerequisites your code actually needs to function — things that are easy to assume are fine but frequently aren't.
How to read it: Run through this before touching a physical robot. These checks exist because "it doesn't work" is almost always diagnosable before the code is even open, if you know what to look for. The System Check tells you where to look first.
The Knowledge Check Is a Diagnostic, Not a Grade
Every lesson ends with three multiple-choice questions. Getting one wrong doesn't mean you failed — it means you found a gap. The feedback after each answer is as important as the answer itself: it explains why the correct answer is correct, in enough detail to actually close the gap.
There are a few specific things the quiz is not for:
- Not for speed. Read each question carefully. Several are phrased to catch common misconceptions — the wrong answers are wrong in specific, instructive ways.
- Not to confirm what you already know. If a question feels easy, that's fine — keep moving. The value is in the questions that make you pause.
- Not a prerequisite. You don't have to get all three right before moving to the next lesson. If you miss one, read the feedback, make a note, and revisit the relevant section of the lesson. Then move on.
If you already have some FRC experience, try answering the questions before reading the lesson. What you get wrong is exactly the content worth slowing down for. What you get right, you can skim in the main text. This inverts the typical reading order and makes the course significantly faster to work through.
The Practice Prompt Is Not Optional
Reading is passive. Building something — even something that doesn't fully work yet — is where retention actually happens. Every Practice Prompt is designed to take 30–60 minutes and produce a concrete, observable result: a file you created, a deploy that succeeded or failed in a specific way, an answer you wrote down.
The prompts are sequential. Lesson 3's prompt often uses something created in Lesson 2's. If you skip a prompt, you're not just skipping an exercise — you're often missing a prerequisite for something three lessons ahead.
At competition, the gap between teams who read about concepts and teams who built things is obvious and brutal. You cannot debug a system you've never built. You cannot diagnose a failure mode you've never triggered. The Practice Prompts are how you accumulate the hands-on experience that makes competition week survivable. Every prompt you skip is a problem you'll encounter for the first time in the pit, under a match clock.
Common Questions About Pacing and Skipping
Click any question to see the honest answer.
Mostly yes — with two caveats.
Skim rather than skip entirely. Units 2–4 contain FRC-specific context you won't find in a general Java course — things like why final fields matter for motor configuration objects, or how Java's type system interacts with WPILib's builder patterns. If you read the Learning Objectives for each lesson and they all feel like review, move quickly. If any objective gives you pause, slow down for that lesson.
- Don't skip the System Check sections — even if the Java is familiar, the hardware context is new.
- Don't skip Unit 3 (Git). Even experienced programmers often have gaps in team Git workflow — branching strategy, protected branches, and PR review conventions.
You can still complete most of the course — but Units 5, 7, and 8 will be limited without hardware.
Units 1–4 are entirely laptop-based. Unit 5 onwards requires a robot for the hardware-interaction prompts, but the conceptual content and code structure can be learned without one. Unit 11 introduces WPILib simulation, which lets you test motor and sensor behaviour on your laptop — that's the long-term answer to hardware access constraints.
If your team has a practice robot from a previous season, that's ideal. If not, even a roboRIO on a bench with a few motor controllers wired up is enough for most prompts through Unit 8.
Reading: 20–40 minutes. Practice Prompt: 30–60 minutes. Total: roughly one hour per lesson.
That said, this varies enormously by background and lesson complexity. A lesson covering PID tuning (Unit 8) will take longer than a lesson on Git commit syntax (Unit 3). Use the Learning Objectives as a pre-check: if you can honestly say you already know all five objectives before reading, you can safely halve the reading time.
Don't try to do more than two or three lessons in a single sitting. Retention from passive reading drops sharply after 90 minutes. Do a lesson, do its Practice Prompt, then stop. Come back the next day with the Practice Prompt's output still fresh.
That's diagnostic information, not failure.
If you get stuck on a Practice Prompt, it means one of three things: you need to re-read a specific section of the lesson, you need to look something up in the resources from Unit 0 Lesson 5, or you need to ask someone. All three of those are normal and expected.
What you should not do is skip the prompt entirely. A prompt you partially completed and got stuck on is infinitely more valuable than one you didn't attempt. Write down exactly where you got stuck and why — that note is the starting point for a well-formed help request (Unit 0, Lesson 5).
Not just okay — expected.
This course is designed to be used as a reference, not just read linearly once. When you hit a concept in Unit 7 that references something from Unit 4, go back to Unit 4. When a System Check mentions something from Unit 0, go back to Unit 0. The lessons are cross-referenced deliberately to support this.
Experienced programmers return to early lessons regularly — not because they forgot, but because concepts read differently once you have more context. The section on extends in Unit 4 will mean something different after you've written a subsystem in Unit 6. That's not a course design flaw — it's how layered learning works.
How Units Connect to Each Other
The course is not a flat list of topics — it's a dependency graph. Each unit assumes fluency with the units that precede it. Here's the clearest way to see those dependencies:
- Units 2–4 build the Java and engineering vocabulary that every subsequent unit uses. A student who skips OOP (Unit 4) will find Command-Based (Unit 6) incomprehensible, because Command-Based is OOP applied to robots.
- Unit 5 is the first time software meets hardware. It's the translation layer between Java you learned in Units 2–4 and the robot you'll program in Units 6–10.
- Unit 6 is the architectural upgrade. TimedRobot (Unit 5) works for simple robots. Command-Based (Unit 6) is required for anything with more than two mechanisms. Everything from Unit 7 onward assumes you're writing Command-Based code.
- Units 7–10 are the advanced technical systems. Swerve (7), control theory (8), autonomous (9), and vision (10) are independent enough that you could study them in a different order — but they all depend heavily on Unit 6.
- Unit 11 teaches you to verify that everything in Units 5–10 is actually correct, not just apparently working. It's where the engineering gets rigorous.
- Unit 12 is what you do with all of it at competition. Everything from Units 0–11 converges here.
The shortcut I see most often at competition is students who jumped from Unit 0 directly to Unit 5 — got motors spinning — and then discovered in Week 3 of build season that they couldn't add a second mechanism without rewriting everything. The investment in Units 2–4 isn't a delay. It's the reason you can move fast later when it matters.
🔌 System Check
This lesson required no hardware and produced no code. But before Unit 2 begins, take five minutes to confirm the following:
- Your Unit 0 project builds cleanly. Open it in WPILib VS Code and run Build Robot Code. A
BUILD SUCCESSFULmessage means your environment is intact and ready for the exercises ahead. - You completed Unit 1, Lesson 2's Practice Prompt step 4. If you added
System.out.println()torobotInit()and saw it appear in the Driver Station, you have confirmed the full pipeline: write → compile → deploy → execute → observe. That loop is the foundation of everything in Units 2–12. - You have a study plan. From Unit 1, Lesson 1's Practice Prompt: you wrote down where you're starting from, what you want to build, and which units you're most curious and most nervous about. If you didn't do that, do it now. It takes ten minutes and changes how you approach every subsequent lesson.
Knowledge Check
Click an answer to check your understanding.
Audit Your Setup and Study Plan
This prompt is a checkpoint before Unit 2 begins. Short, but do all of it.
- Open every lesson in Unit 0 and Unit 1 that you've completed. For each one, check whether you did the Practice Prompt. Mark the ones you skipped. Now go back and do at least one you skipped — specifically, the one most relevant to your current learning goals.
- Go back to Unit 1, Lesson 1's course roadmap. Click the three units you said you were most nervous about. Re-read the descriptions now that you've had more context from Lessons 2 and 3. Did your answer change? Write down one specific thing you now understand about why that unit appears where it does in the sequence.
- Find the Event Observation callout in Unit 0, Lesson 4 (the one about calling out before you enable). Write, in your own words, one sentence explaining why that particular habit matters — not what it is, but why. This is the kind of thinking these callouts are designed to prompt.
- Optional but recommended: Share this lesson's link with one other programmer on your team — a mentor, a peer, or someone just joining the programming subteam. Walk them through the anatomy mockup together. Explaining the structure of the course to someone else is the fastest way to solidify your own understanding of it.