Code with Kate — FRC Programming Course
Orientation

The FRC Java Programming Hub

Welcome to Code with Kate. This curriculum is designed to take you from a complete beginner to writing structured, production-ready, and competition-hardened Command-Based code for FRC robots.

Welcome to the Lab

I have been programming FRC robots and mentoring teams (like Team 2910, Jack in the Bot) for years. FRC programming is a unique discipline: it combines real-time controls engineering, complex networking, physics, game strategy, and rapid-fire debugging under intense timeline pressures.

This course is exclusively taught in Java—the most widely adopted language in FRC. It is designed around the exact patterns used by the most successful teams in the world. As FRC programmers, we do not reinvent the wheel. Instead, we learn from the best, master standard structures, and then build onwards.

"Elite teams are not elite because they write code that nobody else understands. They are elite because they write robust, standardized, and transparent code that works every single time."

The Three Pillars of This Course

Every lesson in this curriculum is built around three core ideas that will change how you approach coding robots:

📦 The Standard-Pattern Mandate

We use WPILib's modern Command-Based architecture. We don't write monolithic state machines inside a single loop; we decompose the robot into clean subsystems and descriptive commands.

🤝 Standing on Shoulders

This curriculum exists because teams like 2910, 254, and 6328 open-source their code. We analyze their actual repos directly in class to understand true industry-grade practices.

⚙️ Systems-First Logic

A programmer who doesn't understand mechanical gearboxes, electrical bus limits, and sensor physics is a programmer who writes code that burns out motors. We think in systems.

Diagnostic Tool

Find Your Starting Point

Select the option that best matches your programming and FRC background to find where to start your journey:

The Complete Course Roadmap

Click on any unit below to inspect its lesson directory, primary learning objectives, and the open-source team code inspiration.

Unit 0 Setup & Environment

Before you write a single line of code, your development environment must be rock solid. In this unit, we set up your PC/Mac for FRC Java development.

Installing WPILib and VS Code
Installing Vendor Libraries (CTRE Phoenix 6, REVLib)
Cloning a Template Project
Deploying to a roboRIO for the First Time
Where to Find Help (Chief Delphi, WPILib Docs, Team Repos)
References: WPILib Suite Tooling Environment
Unit 1 Welcome & Overview

A quick orientation to frame the mindset of a successful robotics engineer. We lay out study schedules and credit the team code bases that anchor our design parameters.

Welcome & Course Overview
Introduction to Java in FRC
How This Course Is Structured
Acknowledgments: The Teams That Made This Possible
References: Team 2910, 254, 6328 Mindset Credits
Unit 2 Java Basics

A core programming foundations boot camp. We cover basic syntax, variable structures, loops, conditional paths, and simple functional definitions inside standard Java.

Variables & Storage types
Data Types ($int, double, boolean, String$)
Operators (Arithmetic, logical, comparison)
Conditional Statements ($if, else if, else, switch$)
Loops ($for, while$)
Methods, Return parameters & Scope
References: Basic Computer Science Variables Logic
Unit 3 Git & Version Control

An introduction to source control management. Version control is the ultimate insurance policy for your robot's software stability. We learn to commit, branch, push, pull, and review pull requests safely.

Why Version Control Matters in FRC
Basic Git: Clone, Commit, Push, Pull
Branching and Merging in Teams
Pull Requests and Code Reviews
Protecting Main: Team Git Workflows
References: Github Flow Collaboration Git
Unit 4 Object-Oriented Programming (OOP)

Robot code maps cleanly onto real-world objects. In this unit, we connect physical hardware assemblies with their digital abstractions using OOP.

Classes, Objects, and Instances
Constructors and Initialization
Encapsulation (Access Modifiers: $private, public, protected$)
Inheritance (Extending Base Classes)
Polymorphism (Overriding vs Overloading)
Abstract Classes and Interfaces
Enums (Managing Finite States)
References: Classical OOP Architecture Classes
Unit 5 Basic FRC Coding

Taking your first steps into WPILib. We learn how physical motors, human controller inputs, and telemetry signals are represented in a loop cycle running every 20 milliseconds.

Introduction to WPILib & Robot.java structures
Understanding Robot Modes (Disabled, Teleop, Auto, Test)
Vendor Libraries: CTRE Phoenix 6 vs REVLib
Basic Motor Control & Stator Current Limiting
Joystick, Controller Inputs & Deadbands
Introduction to Sensors & Digital Inputs
SmartDashboard, Shuffleboard & State Machines
References: Team 4414, WPILib Documentation WPILib Hardware Sensors
Unit 6 Intermediate FRC Coding — Command-Based

The FRC standard design pattern. Learn to separate your robot into clean, concurrent subsystems and write declarative commands that chain behaviors together dynamically.

Why Command-Based? The Scheduler Paradigm
Creating Subsystems (Encapsulating Hardware)
Creating Commands (Choreographing Behaviors)
Command Composition (Sequential & Parallel Groups)
Binding Triggers, Buttons & Joystick Axes
Hardware Abstraction (Real IO vs Simulated IO interfaces)
References: Team 1678 Citrus Circuits, 6328 Command-Based Software Architecture
Unit 7 Drivetrains & Swerve Drive

Swerve drive has revolutionized modern FRC. We dive deep into kinematics, odometry, coordinate systems, and field-oriented steering algorithms.

Swerve Drive Hardware (Modules, CANcoders, Gyros)
Swerve Kinematics (Meters/sec to module angles)
Swerve Odometry & Coordinate Frames
Writing the SwerveModule & SwerveDrivetrain Subsystems
Field-Oriented Controls vs Robot-Oriented Controls
Pose Estimation & Debugging Swerve Kinematics
References: Team 2910 (Jack in the Bot), SDS Lib Swerve Odometry Vector Math
Unit 8 Control Theory

Robots operate in physical environments with gravity, inertia, and friction. In this unit, we use mathematics to control mechanical systems smoothly and accurately.

Why Open-Loop Fails: Feedback & Feedforward Concepts
Physics Feedforward: kS, kV, kA parameters
PID Control Deep Dive ($P, I, D$ terms explained)
Tuning Methodologies & WPILib PIDController
Motion Profiling (TrapezoidProfiles & Motion Magic)
System Identification with SysId
References: Team 254 (Cheesy Poofs), Controls Theory PID Feedforward Math
Unit 9 Autonomous & Path Following

Autonomous matches are won or lost by path tracking precision. We leverage GUI tools to generate complex trajectories that execute automatically when the match starts.

Autonomous Structure in Command-Based
PathPlanner: GUI Trajectory Generation & Integration
Constraint Tuning, Yaw Correction & Path Following
Choreo: Physics-Based Trajectory Planning
Fail-safe Autonomous: Resetting Pose, Handlers & Error Recovery
References: mjansen4857 (PathPlanner) Autonomous Paths
Unit 10 Vision & Localization

Using cameras to verify where the robot is on the field. We integrate coprocessors to recognize AprilTags and mathematically fuse these measurements with our swerve odometry.

Introduction to AprilTags & Field Coordinate Frames
PhotonVision & PhotonPoseEstimator Integration
Odometry Fusion: addVisionMeasurement
Tuning Standard Deviations (Filtering out noisy vision data)
Game Piece Detection with Machine Learning Vision
References: PhotonVision Team, Team 900 Vision AprilTags
Unit 11 Advanced Architecture

How the top 1% of FRC teams design code. We explore complete hardware isolation, deterministic logging (AdvantageKit), simulation, and unit testing.

IO Layer Pattern: Abstracting Motor Interfaces
AdvantageKit: Replay-Driven Logging Architecture
AdvantageScope: Real-Time & Off-Line Log Visualization
High-Fidelity Simulation (DCMotorSim, ArmSim, ElevatorSim)
Unit Testing with JUnit (Verifying code correctness offline)
Superstructures: Complex coordination of multiple subsystems
References: Team 6328 (Mechanical Advantage) Simulation AdvantageKit
Unit 12 Competition Readiness & Debugging

Matches are fast, stressful, and chaotic. We build diagnostic skills so you can identify brownouts, electrical CAN faults, and loop overruns inside a 10-minute pit window.

Pre-Match Verification Checklist
Reading Driver Station & AdvantageScope Log Files
Diagnosing Loop Overruns & Watchdog Warnings
CAN Bus Faults, Device Dropouts & Diagnostics
Preventing Brownouts: Dynamic Current Budgeting in Java
References: FRC Lead Robot Inspectors (LRIs) Debugging Competition
Unit 13 Looking Ahead — 2026 & Beyond

The FRC landscape moves quickly. We review upcoming control system shifts (including NI SystemCore modifications) and discuss how to keep contributing back to our open-source community.

What SystemCore Changes About the Control System
Migrating Legacy Codebases to 2026/2027 Architectures
WPILib Beta Cycles: Staying Ahead of the Game
The FRC Community: Publishing Your Team's Code
References: FIRST Technical Updates Next-Gen SystemCore

The Inspired-By Library

This course references actual code repositories from elite FRC teams. Click any of the links below during your study sessions to look at their architectures on GitHub. They are our real-world textbooks:

🔌 Orientation Check

Before Proceeding to Unit 0

Prepare the following steps so we can begin coding without delay:

  • A dedicated laptop: Ensure you have administrator access on the machine you are using. WPILib installations write environment keys that require elevation.
  • A standard USB cable: USB-A to USB-B or USB-C (depending on your roboRIO model) to run local configurations.
  • A GitHub account: Sign up for a free, public account at github.com to keep track of your progress.
Retake this course?
Retaking this course from the beginning will reset all of your tracked progress.
Retake