FRC 3512 Software Team

We are the software subteam of FRC Team 3512 located in Orcutt, California. We teach high school students practical software and controls engineering skills through competitive robotics.

This website is a collection of student and mentor knowledge and a teaching aid.

Our vision

Produce competent software engineers who:

  1. Understand the tradeoff between maintainability and performance.
  2. Can recognize when a given programming language or feature is the right fit for a problem.

What students will learn

The software subteam programs the robot to make it move and automate parts of its functionality. Our goal is to expose you to the software engineering process in a low-risk, collaborative learning environment so that if you eventually move on to computer science in college or in industry, you'll have all the tools you need to succeed.

You will learn the following throughout your tenure as a software subteam member:

  1. The mindset software engineers use to break down and solve problems (how to think like a programmer).
    • What tools programming languages offer, and when/how to apply them solve problems in a manner that is effective, efficient, and promotes the long-term maintainability of the software project.
  2. The tools and methodologies software engineers use to collaborate with each other and manage the complexity of a software project.
  3. Software engineering principles for real-time and embedded systems.
  4. Control theory, which lets us do two things:
    • Model our robots mathematically so we can test our software's correctness before the hardware is completed.
    • Design and test controllers for those models that ensure actions like "move the elevator to this position" will work with minimal trial-and-error on the real hardware.
  5. How to write automated tests that ensure our software continues to work as we add features and perform cleanups.

Administration

Describes the software team's goals, its organization, and how it's run.

Developer bootstrap

Provides the necessary tools to begin programming in C++.

VPN setup

Instructions for connecting to our robot VPN.

Curriculum and instruction

Contains the software team teaching materials.

GitHub

The software team's GitHub organization, which contains mirrors of our Git repositories.

FLL

FLL-related stuff the software team deals with on an annual basis.

Archives

Contains legacy projects and resources from throughout the team's history.