Skip to content

Programming Resources

Welcome to the programming resources page!

Before we dive in, we want to make one thing clear: the pace and content of this course is more rigorous than any computer science course offered at this school. It's completely normal to encounter obstacles or feel uncertain about certain topics. Our seasoned Programming team members are here to help, so don't hesitate to ask us any questions you may have!

This material can be challenging to understand, the exposure alone opens the doors for more advanced concepts which you may pursue in the future.

Overview

During pre-season, our team goes over all the required programming concepts in a series of workshops. These workshops are designed to be accessible to everyone, regardless of prior programming experience.

Languages and Tools

Kotlin Kotlin is our team's primary programming language. It is a modern, statically typed language developed by Jetbrains that is interoperable with Java libraries by WPILib.

IntelliJ IDEA IntelliJ IDEA is our team's primary Integrated Development Environment. It is a powerful IDE developed by Jetbrains that supports Kotlin and Java.

Content Covered

Programming Fundamentals

Variables, Conditionals, Control Flow, Loops, Functions, Collections

Info

Intro to Computer Science covers up to these concepts. If you have taken ICS, you should be familiar with up to these concepts.

Object-Oriented Programming (OOP)

Classes, Inheritance, Abstraction, Polymorphism, Encapsulation, Interfaces, Access Modifiers, Static vs. Instance, Data Classes and Data Structures

Info

Object-Oriented Programming is typically where AP Computer Science A ends. If you have taken APCS or equivalent, you should be familiar with up to these concepts.

WPI Library

Robot, Subsystems, Commands, Sensors, Motors, Controllers, Event-Based Programming, Command-Based Programming, Phoenix API, CTRE API

Tip

This is section contains knowledge that is specific to FRC. That being said, we expect all members of the programming team attend these workshops, regardless of prior experience.

Version Control

Git, Git Collaboration, GitHub, Development Workflows

Advanced Topics

Proportional-Integral-Derivative (PID) Control, Inverse Kinematics, Motion Profiling, Path Planning, Vision Processing, Testing, Debugging, Logging, Unit Testing, Continuous Integration (CI), Continuous Deployment (CD)

Question

Topics in this section are optional and are not required to be a part of the Programming team. However, they are highly recommended if you are interesting in the theory behind robotics programming as well as leadership positions on the Programming team.

Help, I'm Stuck!

If your stuck, don't worry! We've all been there. Here are some resources that you can use to help you out:

  • Chief Delphi is a forum for all things specific to FRC.
  • Stack Overflow is a forum for all things programming (coding, debugging, etc.). Chances are, if you have a question or meet a weird bug, someone else has asked about it.
  • Google is your friend. If you have a question, chances are someone else has asked it before. If you have an error, chances are someone else has encountered it before. If you have a problem, chances are someone else has solved it before. If you have a question, error, or problem, Google it.
  • ChatGPT or Bard are a LLMs that can answer questions, generate code, and even help debug. It's not perfect, but it's pretty good at answering questions about programming, as well as explaining concepts.

Credits