-
Notifications
You must be signed in to change notification settings - Fork 11
Create Educator's Guide #36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
roboteer5291
wants to merge
23
commits into
frcsoftware:main
Choose a base branch
from
roboteer5291:educators-guide
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+202
−4
Open
Changes from all commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
0dfec54
WIP with Aside import error
roboteer5291 3c6f97b
Fix autoimport
roboteer5291 154d191
Educator's Guide landing page
roboteer5291 efa13c0
Start Educator's Guide landing page
Adrianamm 36dd12d
Start remark autoimport
roboteer5291 9bd32ad
Fix autoimport
roboteer5291 8c12770
Educator's Guide landing page
roboteer5291 c42ee5e
Merge remote-tracking branch 'roboteer5291/educators-guide' into educ…
roboteer5291 3219139
Educator's Guide landing page
roboteer5291 a5136c2
Merge remote-tracking branch 'roboteer5291/educators-guide' into educ…
roboteer5291 51d7f3f
Finish Educator's Guide intro, add blank stage pages
roboteer5291 155c71b
Merge branch 'main' into educators-guide
roboteer5291 e5e47e7
Lint/format
roboteer5291 5965ee2
Remove header from stage 0 page
roboteer5291 6bf92b9
Fix homepage build error
roboteer5291 2163d0a
Add reference to Python and C++
roboteer5291 0fb5f45
Fix merge errors
roboteer5291 55a0161
Fix typos
roboteer5291 15d72a9
Add to note about minimal prior knowledge
roboteer5291 ac11df3
Clarify
roboteer5291 effbdd7
Update src/content/docs/educators-guide/introduction/index.mdx
roboteer5291 7650bfc
Update src/content/docs/educators-guide/introduction/preparation.mdx
roboteer5291 a0deb14
Wording change re: sidepaths
roboteer5291 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| --- | ||
| title: Educator's Guide Overview | ||
| description: A guide for educators implementing the FRCSoftware.org Learning Course | ||
| --- | ||
|
|
||
| The FRCSoftware.org Learning Course is a self-paced, comprehensive program that teaches FRC robot programming and Java skills. | ||
| This guide is intended to help educators effectively implement the course while supporting their students throughout the learning process. | ||
| Designed for accessibility, the course requires minimal prior knowledge of programming, physics, or math, making it suitable for students from various backgrounds. | ||
| The emphasis is on building knowledge through consistent practice and review. | ||
|
|
||
| ## Course Usage | ||
|
|
||
| The course is built for self-paced learning, where students can progress at their own speed. | ||
| It utilizes code and robot simulation, a tool standard throughout FRC programming, to enable students to see their work and results quickly and not require a specific robot, or any robot access. | ||
| It can either be used by students to self-teach or used to help teach new students in a more classroom-esque setting. | ||
|
|
||
| <Aside type="note" title="Why Self-Paced?"> | ||
| Different people will have different starting points and different things | ||
| they don't understand or struggle with. Going at a set pace may cause some | ||
| students to be bored and others to struggle and fall behind. | ||
| </Aside> | ||
|
|
||
| The ideal setup is for educators to offload most of the curriculum (concepts, exercises, projects) to the website, freeing them up to give more individualized help and review to each student. | ||
| This is what may be called a “self-paced blended learning” approach, where preferably meeting time or class time is given for students to do the work at their own pace and for educators to review and catch mistakes as students are working through exercises and projects. | ||
|
|
||
| This approach helps increase motivation and engagement, reduces gaps in knowledge, builds confidence, and helps make sure every student gets the support they need to learn. | ||
|
|
||
| ## Course Content | ||
|
|
||
| While the initial Java content is taught via general exercises, the majority of the course is focused on teaching FRC programming skills through FRC-relevant exercises, where new skills and concepts are introduced in each project. | ||
| Each section has a bit of explanation on the concepts or skills being introduced in the exercise, with the exercises gradually decreasing in guidance to help students get more confident with writing software. | ||
|
|
||
| <Aside type="note" title="Why Java?"> | ||
| Java is the most popular language used in FRC by a significant margin | ||
| ([source](https://community.firstinspires.org/more-reefscape-by-the-numbers-new-legal-devices | ||
| "FRC Blog: More REEFSCAPE By The Numbers")). This means that there's an | ||
| abundance of public code to refer to and that it's the easiest language to | ||
| receive help for. Additionally, many students learn Java through AP Computer | ||
| Science in school, giving them exposure to the language already. Many of the | ||
| concepts discussed in this course will be applicable to Python or C++, | ||
| however syntax will differ and there may be some concepts or libraries used | ||
| that are completely unavailable. | ||
| </Aside> | ||
|
|
||
| The progression of the course moves from learning how to write Java to programming robots of increasing complexity, starting with individual mechanisms of robots and moving to full robots. | ||
| Students will then learn how to write a robot program from the ground-up, thinking about code structure and how to best write their code for a balance between speed and maintainability. | ||
|
|
||
| Additionally, there are various reference sections that don't fall on the main Learning Course. | ||
| These cover topics that are relevant to FRC programming, such as swerve or vision, but aren't necessarily the core concepts that need to be taught to allow a student to meaningfully contribute in-season. | ||
| Generally, these topics are something only a core group of students on a programming subteam would need to know, while the Learning Course focuses on the concepts every student will want to know to effectively contribute. | ||
|
|
||
| The purpose of software in FRC is to maximize the robot's capabilities in matches, working hand in hand with the robot's design and the team's strategy. | ||
| As such, this course places a focus on giving students the tools to write code efficiently and to maximize the use of time once the robot is complete. | ||
| This includes heavy utilization of simulation to develop and validate code, structuring code to be both quick to write and easy to make changes and maintain in-season, and giving students the tools to evaluate when certain control strategies may be necessary or whether a simpler, but easier, strategy is appropriate. | ||
|
|
||
| There are infinitely many ways to structure a robot project or control a mechanism, but this course gives what its writers believe to be the best balance of simplicity, maintainability, and capability. | ||
| As such, how your team wrote code in the past isn't necessarily incorrect, it's just not how this course will be teaching. | ||
| The concepts taught in this course should be applicable to most teams' code structure. | ||
27 changes: 27 additions & 0 deletions
27
src/content/docs/educators-guide/introduction/preparation.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| --- | ||
| title: Preparation | ||
| description: A guide for educators to prepare themselves to deliver the Learning Course to students. | ||
| --- | ||
|
|
||
| Before using the FRCSoftware.org Learning Course to teach your students, make sure you have an adequate understanding of the concepts covered. | ||
| The best way to do this is to go through the course yourself; however, the level of involvement with which you do so is dependent on your previous knowledge. | ||
| If you're new to FRC programming or Java, we recommend going pretty deep through the course as much as you can, at least so you're ahead of the students you're helping guide. | ||
| If you're pretty experienced with Java and FRC programming, you might just go through the Educator's Guide to get a complete overview of the course and caught up to date with practice. | ||
|
|
||
| <Aside type="note"> | ||
| While the commands v3 library retains many elements from the v2 library, | ||
| there are many significant changes that impact how it is used and how to | ||
| best structure code. If you have experience with commands v2 but not v3, a | ||
| deeper dive into the v3 library is recommended. | ||
| </Aside> | ||
|
|
||
| In particular, familiarizing yourself with the development environment, tools, and git is going to be particularly helpful to ensure that your students can focus on the code itself. | ||
| Additionally, having such software on your own computer will allow you to demonstrate things for students without impacting their own code. | ||
|
|
||
| ## Final Advice | ||
|
|
||
| 1. Remember that is is ok for students to be at wildly different sections of the course. | ||
| 2. Even if a student just gets through Stage 1, they would have enough knowledge to be somewhat helpful and easy to guide during build season. | ||
| The more sections they complete, the more autonomous they should be as a developer, making them easier to lead to complete a task. | ||
| 3. When helping students, make sure to not handhold them too much. | ||
| If you're in a situation where you can get the student to solve a problem by asking some guiding questions, do that. |
42 changes: 42 additions & 0 deletions
42
src/content/docs/educators-guide/introduction/the-stages.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| --- | ||
| title: The Stages | ||
| description: An explanation FRCSoftware.org Learning Course stages for educators | ||
| --- | ||
|
|
||
| The course progressively builds complexity while reinforcing core concepts of good software development practices, controls fundamentals, and code organization. | ||
| It starts with basic code to control a 2026 kitbot and progresses through more complex robots and mechanisms. | ||
|
|
||
| ## Stage Section Overview | ||
|
|
||
| **Stage 0: Java Fundamentals** | ||
|
|
||
| - Sets up students with the development environment and required tooling | ||
| - Teaches students the Java concepts necessary for FRC software | ||
|
|
||
| **Stage 1a: Basic FRC Programming** | ||
|
|
||
| - Introduces students to many of the development tools which will be used throughout the course and for general FRC development | ||
| - Provides an overview of FRC electronics | ||
| - Introduces students to the 2026 Kitbot, which will be utilized throughout Stage 1 | ||
| - Teaches the basics of FRC motor controller and gamepad interaction | ||
| - Students will have a functional teleoperated kitbot program and a basic auto | ||
|
|
||
| **Stage 1b: Introduction to Command-Based Programming** | ||
|
|
||
| - Introduces command-based programming | ||
| - Introduces logging and telemetry | ||
| - Introduces the concept of code structure and working with multiple files | ||
| - Covers the basics of PID control when applied to simple autonomous driving | ||
| - Students will have a functional teleoperated kitbot program and a more advanced auto | ||
|
|
||
| **Stage 2: 2025 Robot** | ||
|
|
||
| - Introduces feedforward control and mechanism dynamics | ||
| - Provides techniques for additional teleoperated automation | ||
| - Students will write entire `Mechanism`s on their own | ||
| - Introduces commands v3 state machines | ||
| - Discusses various code structure and organization choices that will have to be made in any given robot project | ||
| - Covers one technique to prevent mechanisms from colliding with the rest of the robot | ||
|
|
||
| Additionally, all stages will naturally include a significant amount of debugging experience as students write their code. | ||
| Debugging is a critical skill that all students should know as, inevitably, some code won't work as expected on the first try. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| title: 'Stage 0: Java Fundamentals' | ||
| description: An overview of Stage 0 for educators | ||
| --- | ||
|
|
||
| WIP |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| title: Stage 1 Overview | ||
| description: An overview of Stage 1 for educators | ||
| --- | ||
|
|
||
| WIP |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| title: 'Stage 1A: Basic FRC Programming' | ||
| description: An overview of Stage 1A for educators | ||
| --- | ||
|
|
||
| WIP |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| title: 'Stage 1B: Introduction to Command-Based Programming' | ||
| description: An overview of Stage 1B for educators | ||
| --- | ||
|
|
||
| WIP |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| title: Stage 2 Overview | ||
| description: An overview of Stage 2 for educators | ||
| --- | ||
|
|
||
| WIP |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if it's worth mentioning something like even if you intend to teach your team to structure code differently, FRCSoftware resources can still be leveraged to accomplish that (say starting with our Stage 2 starter code and writing a version of that using a team's custom framework while leveraging the sim we shipped with the starter code).
Happy to treat this more as something to think about than something to include immediately
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that idea, but I'd be hesitant to mention that before we know what the stage 2 code is going to look like and what the guides behind it are going to look like as well. Depending on how things are written, it could be really weird to work around a different structure. For the time being I think it's probably best to hold off, but keep in mind once we have a better picture of what a complete stage 2 is going to look like.