Team 3550 presents: FRC Java Koans v2.0

TLDR;

FRC Java Koans, released last year, is an interactive, step by step, course to teach Java to FRC students. It requires no previous experience in programming.

It brings:

Version 2.0 is adding the following features:

  • Upgrade to WPILib 2024
  • No-install, in browser support through Github Codespaces (thanks to jmcconne10)
  • Many exercise text clarifications and improvements coming from a full year of testing at 3550 and observation of the students various ways of learning and understanding
  • More FRC themed exercices
  • Many improvements in console output: clearer colors, better feedback messages, highlighting of the code snippets, and a title for each exercise to make it easier to navigate (see below)
  • Bonus independent exercise series allowing for a more complete curriculum:
  • Graceful feedback covering infinite loops and hanging methods
  • Focus on stability and reliability: extensive automated tests are now protecting the course from damaging regressions

More details

Philosophy

The goal is not to teach the entirety of the Java language, but rather the minimal fundamentals required to start learning how to program a FRC robot. The idea is: once the students know just enough, we can teach additional Java constructs while programming the robot. And hopefully not bore them too much in the process.

However, since it assumes no programming experience, it does not only teach the Java syntax, but more importantly the programming concepts, and make them practice their use of them.

Since programming concepts can be challenging to grasp, the course tries very hard to introduce as few new elements as possible from one exercise to the next. For example, concepts like variables, type, or methods are decomposed in many small steps.

The initial series of exercises should make the student able to program a simple TimedRobot. The bonus series allows them to learn the Java constructs which will be necessary for command based and swerve programming.

First year of usage: how did it go?

Students have overall been happy with it. They liked to have immediate feedback when something was not working, and not having to wait for a mentor or a veteran student to be available. They also report being engaged in finishing the series.

As a result, they learnt programming faster, and with more mastery than the previous year, despite the Québec school strike removing 5 weeks from our pre-season.

Of course, all students (except one, but he already has programming experience in Python) struggled at one point or another and needed assistance to be able to figure out some exercise or concept. Students struggled in different areas, although one particular exercise has challenged many of them. It was a great opportunity for veteran students to coach their new colleagues. They did their best to never give out the solution, and instead asked questions to guide the rookies to figure out the solution by themselves.

Everything combined meant that I spent more quality mentoring time where it was the most precious. At the same time, rookies got a more engaging and comfortable experience ramping up, with less waiting time. Involvement of veterans with the rookies also had a positive effect on the team spirit and cohesion.

Questions, feedback and contributions are very welcome!

Cheers!

10 Likes

I was literally just about to try and make something like this for a new team with no frc experience, this is a lifesaver

1 Like

As a team who used this for this year and the previous one, I’d like to say a huge thanks!
Every time the topic of teaching Java comes up, I mention this resource. Absolutely amazing.

1 Like

Java Koans 1.0 was amazing! Super excited to check this one out! More outstanding work form 3550 as usual.

2 Likes