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
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!
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.
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?
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.
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.
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.
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.
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.
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