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 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 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.