Thanks for the feedback!
Allow me to absolutely endorse what @cyclicalobsessive has said about using VS Code for remote development.
I would recommend this, quite highly, for the student that is a bit more advanced as opposed to the raw beginner. (Beginning students can do much with Thonny and get a lot of coding experience in a friendlier IDE-like environment before jumping to “the real thing”.)
The big downside to VS Code, (and why I don’t recommend it for beginners), is its versatility and power. In essence, it’s a two-edged sword that, in the hands of a more advanced class of students, provides a real-world environment that is like what they would see in “the real world” - in some cases exactly like - as many professionals and companies use VS Code.
With a more advanced class, you can also explore the concepts of source-control, Git, GitHub, and the ins-and-outs of versioning - as this is handled in a very seamless way by VS Code - as if the version control were “built-in” - which it is, in a sense.
If I were going to explore robotics with a group of interested students - assuming no prior programming experience - I would do it something like this:
- Introduction to Robotics and Programming:
- Bloxter - a “scratch” like programming language where pieces fit together to make programs.
- Elementary robot functional blocks that allow the students to program robot actions.
- It is important to note that though “simplistic”, Bloxter can be used to make rather sophisticated programs. I often use it as a “sandbox” environment to “try things out” before committing them to “hard-coded Python”
- Intermediate Robotics and Programming in Python.
- Thonny: Introduction to an “IDE-like” programming environment that allows debugging, tracing, variable inspection, and other more advanced techniques in a simple editor.
- Introduction to Python and a finer-grained control over the robot using the EasyGoPiGo libraries.
- Advanced Programming in Python and Advanced Robotics.
- This is where I would introduce the Visual Studio Code editor.
- Advanced programming techniques.
- Advanced program management techniques.
- Remote programming where the “heavy lifting” is done on the local workstation instead of the robot.
- Introduction to versioning and version control. (Git/GitHub)
- Introduction to collaborative projects where groups can work together on the same code base and then merge their commits.
With these tools, you have the foundation for a first-class series of programming and technology courses that will equip the interested student to tackle more advanced topics later on - in college or in “the real world”.
I mention this particularly because we’ve seen a number of college students who have been “thrown to the wolves” with advanced robotics projects that they were ill equipped to handle. Given this kind of background your students will be equipped to handle whatever life, (or a sadistic college professor), decides to throw at them.