Team 3550 presents: FRC Java koans for teaching Java to rookie students

For the next season, we developed an interactive, step by step, course to teach Java to students. It requires no previous experience in programming.

This is a bit of an experiment, and we hope it will streamline onboarding of new students without programming experience.

The goal is not to teach the entirety of the Java language, but rather the fundamentals required to start learning how to program a FRC robot. The idea is: once the students know just enough, we can teach the rest of the Java constructs while programming the robot, more educative material being available at that point.

Features:

  • current topics taught:
    • console
    • variables
    • methods
    • conditions
    • loops
    • classes and packages
    • objects
  • detailed guide to get started
  • localizable: currently available in english and french
  • comes with a tailored Java cheat sheet

You can try it and learn more about it on Github: https://github.com/jletroui/FrcJavaKoans

We are curious: what do you think about it? Would you consider to use it? If not, what do you plan to use in your team to tackle the same onboarding process?

Of course feedback or contributions are very welcome!

Cheers!

24 Likes

If you immediately realize the candle is fire then the meal was cooked long ago.

1 Like

I was looking for a way to teach Java, i do like the approach. Are you planning on more koans?

1 Like

Maybe as a separate “bonus” koan set. The reason is the current set is designed to be a “right compromise” so students can jump programming the robot as soon as possible, and do not stay too long in pure, abstract, programming territories. I would not add koans to this “main” set, so as to no discourage students.

In “bonus” koans, I would add these topics:

  • sugar syntax: for, do-while, ternary operator
  • arrays
  • lambda methods
  • class constants, and immutable value objects

Which all are quite used in WPILib.

By the way, if you feel like it, you are welcome to contribute additional koan sets! The existing assertions should be able to handle most of these topics.

2 Likes

One more thing: I was not planning to add too much for now. We need to test the koans with our new cohort this fall, so as to see what’s working well, and what’s needing adjustments. Once the system is stabilized, and the current koans adjusted, we will see what students would think about it: would they want more? Or are they bored and just want to program the robot? Maybe would they want to come back to additional topics once they rubbed against a real WPILib program?

1 Like

That’s what our students told us so this past year we gave each “team” of 2 students a Romi to program and drive after a very short (minutes, not hours) orientation/introduction to Java/WPILib/VSCode.

It was well received and we plan on repeating that form of lessons.

1 Like

Just wanted to say thank you so much for sharing these koans!
I’ve done some of the koans today and as a student with no previous experience in programming I can say they are simple, clear and easy to understand.

1 Like

These are quite good. I’d definitely add one on free functions/lambda expressions, since those are increasingly a basic language feature that you need to interact with most libraries.

4 Likes

Thank you so much for the feedback! Have you made it to the “Not 7!” game?

Yes I did and i wrote all of it, it was really cool!

I made a great progress through the koans and they were really fun (I have only one left!). However, I ran into a small problem when I moved to aboutClasses.

Every time I run the program after solving/trying to solve a koan, it took my progress bar a few koans back and displayed like there were bugs in koans I already solved. I managed to move on after a changing small things in my earlier koans solutions, but every new koan since then it would happen again.

Thanks for reporting this! Would you mind creating an issue here with a zip of your projet, so I can look at what happens?

Sure!

Edit: i uploaded it.
btw, do you have any suggestions of other courses that I could learn from more java stuff?

Sorry @InbarV just saw your question.

As for other learning ressources, somebody put together this list of FRC programmation ressources: FRC Java Programming Resource Compendium - Google Docs

And there is a new course platform as well: https://www.frcladder.com/.

This is great, thank you for sharing. I’m going to use this as the basis to kick off our software training in 2 weeks. Do you have any estimate on how many hours students took to complete? I’ve been going through it in my spare time, but I haven’t been tracking time spent.

Btw, many of my students only have Chromebooks. So I’m testing out doing this in GitHub CodeSpaces, which is a browser based IDE. If I get that to work, I’ll share the code for others that need browser based.

Thanks for the feedback @madisonDad !

Do you have any estimate on how many hours students took to complete?

Our student who had a bit of Python experience took 4 weekly sessions of 3 hours to complete it by itself. Even if there was distractions during sessions, I would say this would be a bottom. Students with no programming experience needs a lot of additional assistance to make sense of some concepts (methods, loops, and classes). None of them completed yet, but judging their progress, I would bet on 12 weekly sessions of 3 hours to complete. If you manage to have no disctractions during sessions, you might be able to decrease that time.

So I’m testing out doing this in GitHub CodeSpaces, which is a browser based IDE.

Great to hear! I would be happy to receive pull requests to make it compatible :slight_smile: