Skip to content

FRC-team5449/FRC-2025-Elective-Prototype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FRC Elective Programming Course Syllabus

Instructor: S3C5 Xiao Tan

Time: Thursday, 13:40 - 15:50 (RDFZ ICC Elective Course)

Table of Contents

  1. Java Basics
  2. Classes and Objects
  3. Inheritance and Interface

1 Course Description

The FRC training course for the programming team will teach the basics of FRC programming and circuitry. By the end of this course, students should be able to independently write basic robot programs, debug controller parameters, and troubleshoot program errors. Our course will start with simple programs written in Java, covering everything from language fundamentals to computer vision, encompassing the vast majority of knowledge related to FRC robots.

We hope you will gain a lot from this course, but it will require you to put in a certain amount of effort. If you want to excel in this course and shine in the FIRST robotics competitions, you need to follow these principles:

  1. Talk is cheap, show me the code

    Computer science is a science, but it is also an engineering discipline. We hope you won't always stay in theoretical and hypothetical environments. Instead, you need to focus on the programming as much as possible by yourself, practically implementing the ideas in your mind through code, and testing these potentially buggy programs until they run successfully on the robot. Only then can you declare success! Therefore, in this course, we will also arrange labs (according to the grading system) to help everyone truly master programming.

  2. Code alone, but work together

    FRC has never been a solo endeavor; it relies on cooperation and communication among everyone involved. If you look at the GitHub repositories of all strong teams, you'll find that, without exception, each team's code is completed through collaboration. Therefore, in this course, we expect you to work together with other team members, each fulfilling their role, following the rules, and cooperating to complete our various projects—don't be a free rider! Additionally, when coding, try to focus on working independently; don’t get carried away by the enthusiastic discussions and praise from others. The logic and efficiency of a programmer will be your key to success.

  3. Problems and obstacles? You're on the track to success!

    FRC programming is challenging for most high school students, and trust me, it's the same for both strong and weak teams. In a programming team of 20, only 2-3 people may ultimately contribute to the competition robot's programming. However, we will do our best to help you become an independent programmer by enhancing the course and providing after-class support to help you overcome difficulties. If you sometimes don’t understand the class content, don’t worry; it’s a normal occurrence. Please feel free to consult us in a timely manner. At the same time, you will need more practice and reflection to overcome obstacles. When things aren’t going smoothly, believe that you are on the right path!

2 Grading System

2.1 Programming Levels

To encourage practice, the FRC training course for the programming team divides programming knowledge into four levels. After completing a certain number of instructional hours, you will need to complete the Final Project for that level and receive approval from the programming teaching team to advance. At the end of the semester, the total score will be calculated according to the table corresponding to your current level.

  • Level 1:Java Basics 80 B
  • Level 2:Open-Loop Control 85 points A
  • Level 3:Closed-Loop Control 93 points A+
  • Level 4:Computer Vision 100 points A+

Every Thursday, the training course is structured as Lecture + Lab, which may consist of 1 Lecture + 2 Labs or 2 Lectures + 1 Lab. Lectures focus on explaining key concepts and analyzing past code. Labs will announce project code to be completed through code completion or mini-games. Attendance in Lectures and Labs does not count towards the final grade, but attendance will be recorded for each class. We encourage everyone to participate fully. If you ultimately do not complete the Final Project for advancement, you can use your attendance and completed Lab counts to offset and earn GPA points. The attendance required to offset a specific Final Project is not clearly defined and will be considered in conjunction with classroom engagement and performance, so completing the Final Project remains the best option for achieving a high score.

2.2 Final Project

The Final Project is not a homework assignment (though you can complete it outside of class); it is a task to be finished during Lab time. For the Final Project, you can search for relevant materials online, consult others, or use AI to generate code. However, please do not rely entirely on these tools or materials; instead, after using them, try to fully understand the code. The purpose of the Final Project is not merely for grading but to provide you with more hands-on practice opportunities, enhancing your ability to learn quickly and use tools. Therefore, taking the Final Project seriously will deepen your understanding of program design. The Final Projects for each level are as follows, and the specific formats for all Final Projects will be explained in class along with the technical documentation.

  • Level 1:Java Basics Images
  • Level 2:Open-Loop Control TankDrive Implementation
  • Level 3:Closed-Loop Control Real/Simulated Arm & Elevator Control
  • Level 4:Computer Vision LimeLight/PhotonVision

3 Related Resources

  1. Java Basics
  2. WPILib Official
  3. CTRE Phoenix6
  4. REV ION
  5. Path Planner Auton
  6. Choreo Auton Path Planning
  7. Limelight Best Computer Vision in FRC
  8. Photon Vision Limelight
  9. Advantage Kit Replay and Simulator

About

A revolutionary elective course for new FRC students

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages