Curriculum Overview
Welcome to the XBot programming curriculum. You will go from writing your first Java code to making a robot drive itself.
No programming experience? Start here. The curriculum assumes you know nothing about programming and teaches you everything step by step. Java Basics covers the minimum you need to begin, and the Java track below goes deeper when you want it.
Work through the steps in order. Each challenge builds on the one before it.
Setup
Get your accounts, tools, and a copy of the code before writing anything.
| Step | What You Will Do |
|---|---|
| Onboarding | Set up accounts and install the software you need |
| Environment Setup | Fork the practice project and open it in IntelliJ |
| Java Basics | The minimum Java you need to get started |
Programming on the competition robot during the season? In-Season Onboarding covers the extra hardware tools you will need.
Reference
Background you will be pointed at from the challenges, and can come back to any time.
| Page | What It Covers |
|---|---|
| Running the Simulator | Drive your code on a virtual field, and watch it in AdvantageScope |
| Robot Architecture | Subsystems, Commands, the Scheduler, and how they fit together |
| Robot Coordinate Conventions | Which way is positive, for both the robot and the field |
| Mapping Buttons to Commands | Binding commands to gamepad buttons |
| Git Introduction | What source control is, and the terms you will see |
| Clone with GitHub Desktop | Getting a copy of a repository onto your computer |
Java track
Java Basics is deliberately short -- just enough to start driving a robot. These two pages go further, and you can work through them alongside the challenges rather than before them.
| Page | What It Covers |
|---|---|
| Object-Oriented Programming | Encapsulation, inheritance, polymorphism, abstraction |
| Intermediate Java | Generics, lambdas, Optional, collections, streams, enums |
Of the two, get comfortable with classes and objects before the Auto-stopping Collector challenge -- that is the first time you write a class from scratch rather than filling in a method.
Challenges
Hands-on exercises in the XbotEdu practice project. Each one has unit tests, so you can check your own work without a physical robot.
| Step | What You Will Build |
|---|---|
| Basic Robot Principles | Watch the command scheduler run, and see commands conflict |
| Tank Drive | Drive a robot with two joysticks |
| Altering Tank Drive | Precision mode and arcade drive, mapped to buttons |
| Moving to a Target Position | Drive to an exact distance and stop there |
| Making a Pull Request | Submit your work for review |
| Rotating to a Target Orientation | Turn to a heading, including the tricky angle math |
| Command Groups | Combine commands into an autonomous square |
| Providers & Factories | How the team's code creates objects it cannot build directly |
| Dependency Injection | Why your classes are handed what they need, and how |
| Upgrading Using the SeriouslyCommonLib | Replace your own control code with the team's library |
| Running on a Real Robot | Deploy your code to a RoboRIO |
| Auto-stopping Collector | Build a subsystem and commands from scratch |
Once those are done, there is one more, considerably harder:
| Advanced | What You Will Build |
|---|---|
| Advanced Swerve Challenges | Drive a swerve chassis: steer and drive each module independently |
AI Tools
| Module | What You Will Learn |
|---|---|
| AI Tools Setup | Configure and initialize OpenCode |
| Built-in Commands | Slash commands, undo, share, custom commands |
| Workflow Tips | Writing prompts, Plan vs Build mode |
| Responsible AI Use | Ethics, code review, simulation, safety |
What's Next?
After finishing the curriculum, move on to Core Programming to learn the patterns the competition code is built on: maintainers, swerve drive, properties and tuning.
Practice Repo
All exercises use XbotEdu -- a practice robot project with unit tests so you can code without a physical robot.
git clone https://github.com/Team488/XbotEdu.git
cd XbotEdu
./gradlew test