FIRST Robotics Competition Blog

Skill Building Update: Intro to Programming Module

Oct 28, 2021 Written by Libby Simpson, FIRST Director of Education




In my last guest entry for the FIRST® Robotics Competition blog, I explored the need for building transferable and portable skills for life after high school. FIRST® alumni have a host of marketable skills and the first step is building the skill. The FIRST Education team has been collaborating with FIRST Robotics Competition program staff, FIRST mentors, industry partners, WPI, and educators to create a learning module to learn the basics of Java programming. This fun module uses the Romi robot platform by Pololu in combination with a Raspberry Pi to teach programming fundamentals using WPILib. With this module students can immediately apply what they’ve learned to running code on the Romi. Because it uses WPILib, these skills can be directly transferred directly to programming the team’s competition robot. Learning in this authentic environment will allow FIRST Robotics Competition teams to learn, apply, and practice before the full-scale team robot is finished. Now the team programming tasks can happen right alongside the robot build!

This module is designed for individual participants to learn about programming at their own pace. The modules contain videos, knowledge checks, and end of lesson projects that make the learning come to life by using the Romi to practice what was learned.

Course Summary

In this self-paced 5 to 9-week course, students will learn a fundamental understanding of Java programming within WPILib and obtain applicable object-oriented programming skills. Students will learn and apply programming concepts in Java while programming a robot to complete challenges presented in each module. Students can collaborate and share knowledge and information with other team members, alumni, and even other teams to help transfer the programming skills learned to their FIRST Robotics Competition team.

Photo credit: Pololu

The modules are designed around project scenarios that connect learning with real-world examples. The overall course project scenario is that students work as software engineering interns in a transportation and logistics company. They are charged with programming a robot that can deliver objects in the warehouse. You can control the robot in some locations, but you do not have the visibility to control it in others. The robot must deliver with precision while providing feedback along the way on the robot's location, speed, and status.

Needed Materials

  • A computer with wireless access (WPILib is not compatible with Chromebooks)
  • A FIRST Romi robot from Pololu 
  • A Raspberry Pi (Model 3B+ or 4)
  • An SD card reader/writer
  • A supply of AA batteries (preferably rechargeable ones as they will save time and money)

Scope and Sequence

The second series of lessons in module 2 will be released in November 2021.

This FIRST Robotics Competition course that includes the Intro to Programing learning module is accessible to Lead Mentors 1 and 2 through Thinkscape on the FIRST Dashboard. Mentors will be able to add students to the course using these instructions. We are very excited to be able to provide this amazing resource to teams throughout the FIRST community!



Back to Blog


What is the invitation code for this course?  I don't see it when I'm in Thinkscape and I am the Lead Mentor.



We are sorry you are experiencing issues accessing the course. We have heard from a few teams where the lead mentor is unable to access the Thinkscape Button. We are working on identifying the issue but hope to have it resolved soon. If you can access Thinkscape, make sure you are in the right institution as noted in these instructions.

Per instruction:  Choose the My Teams tab. Then click on the Access Thinkscape button.  This button is not visible on "FIRST Dashboard" yet.  When will this option be available? 


We are sorry you are experiencing issues accessing the course. We have heard from a few teams where the lead mentor is unable to access the Thinkscape Button. We are working on identifying the issue but hope to have it resolved soon. We will post on social media and in the team blast once the issue is resolved. 

The instructions indicate that "these steps are only for lead mentor 1 or 2." That doesn't seem to include me, the programming mentor for our team. While our faculty advisor was able to send a Thinkscape invite to me, I have no access to the FIRST programming course, nor do I have a link from my


I am super excited about this project and eager to test it out.

Thanks so much for letting us know. Please contact with the error you're seeing and your account information (team number and user name). Thank you! 

Long time FIRST mentor and primary author of the current WPILib command-based framework here.  Why aren't these materials hosted in a free public place (such as on the official wpilib docs)?  A cursory glance suggests that almost no one can access them in their current location.  Additionally, when they're behind barriers like this, no one can easily suggest improvements or maintain them to reflect changes in library code or control hardware.

Thank you for your comments and contributions to community-created content. These modules are designed for learners to build their skills independently or with guidance from their coaches. They have been created with an instructional design that needed to be developed using software to fit that learning environment. At FIRST, we host this type of educational content on our learning management system, Thinkscape, which allows the content to be presented in the best possible way for the learners. We have had some issues with accessing the modules and are making those technical corrections so that it is accessible to all FRC teams via access from the dashboard. The FIRST team worked collaboratively on creating this content with members of the FIRST community, including WPI staff. We welcome contributors and would love to have you involved in future projects. Please email to discuss this further.

Hi. I am the Programming Mentor for our team and would like to manage access for our students. Are there any instructions for how a Lead Mentor can promote another team mentor to be a course administrator?

Hello, We provided access to mentors 1 and 2 only. To see the content you can be added as a student but would not be able to see the student process, only mentor 1 or 2 could check that. As a work around you could have students provide you with screen shots of their progress as a way to monitor. 


I'm the programming mentor for my team and would like to manage the class for the students on my team.  The lead mentors have enough on their plate already and it would really work better for me to be able to review the materials myself so that I can better help the students.  Please open this up to other mentors as it will significantly improve the experience for the students.

Hello, I am curious to know when Module 2 will be published? I have a handful of students who are ready to finish learning and test some of their skills prior to the FRC kickoff! Thank you. 

Good morning! My students found the first module very helpful and are looking forward to completing the second one before kickoff in January. Do we have an estimated date when it will be posted? Thank you!

Hello, Module Two is in final review and will be published this week; it should be Tuesday or Wednesday this week. 

In module 1 lesson 4 there is the following code that is supposed to turn on a light if 1 button is pressed but off if both are: if (button_b.get()) { yellow_led.set(false); } else if (button_a.get()) { yellow_led.set(true); } else { yellow_led.set(false); } This code turns on the light while A is pressed, off if A is released, and off while both A and B are pressed. The simplest code I can think of involves nesting an if statement. If buttonA { If buttonB { light.set(false) } Else { light.set(true) } } Else if buttonB { light.set(true) } My apologies if formatting doesn't work.

Hi there,

The code written does what is intended, but I understand how the text "turn on a robot light when pressing a single button but turn off the light when two buttons are pressed together." could be ambiguous. The intention is that the light turns on when button A is pressed alone, but off if it is pressed together with button B. It is not expected that the code lights the LED when button B is pressed alone. This is matched in the explainer text below where it says "In this case, button B is pressed, and the LED is turned off. Button A is never checked because the second conditional statement is ignored."

I get an HTTP 403 Forbidden error when I click the "Access Thinkscape" button.
I see a button labeled "Login" but there's no mention of that in the instructions here:

Should I use my credentials?
Please advise. Thanks!

We are currently experiencing API issues with new users trying to access Thinkscape materials. We are working to solve this issue soon. Please email your Team Number and email  and I will see if I can resolve the issue on the Thinkscape side until the issues with the API are resolved.

I've been hoping to access the Thinkscape materials but our head coach has had problems seeing the programming modules on Thinkscape. Has anyone updated the website to solve the errors that have been referenced in the past? I'd really like to use these materials but I'm an assistant coach so I don't have clearance without approval from our head coach. I wish FIRST would open up the access to all mentors.

Add new comment