Rookie Mentor to a Rookie Team: Teaching Programming

I teach programming at our High School and have been tapped by the team to lead the mentors (Ok, so there’s two of us) to our first competition next year.

We’re starting early because we’re starting from nothing.

My question is a two-parter:

  1. Is there any way (apart from paying lots of money) to access and practice with LabView before the KOP arrives? There are some great tutorials here and elsewhere (seriously, love it) but I’m nervous that it won’t sink in without some practice.

  2. I teach web design and have the basics of JavaScript down. Is there any point in teaching JS to the kids before access to LabView or would that be a waste of time?

Biggest piece of advice I can give: Don’t use LabView. Use Java. It will be easier to do, you will be more familiar with it, it is more likely that students will have familiarity with it, there will be more code from other teams that you can borrow with it, and it will be far easier to get code help from other teams with it.

Using LabView, unless you have a very good reason to do so (e.g. a head mentor who is very experienced with it), is a bad idea.

I’m on the other side of the fence.
I consider LabVIEW a better choice for this application (FRC robots) than Java.
You can use a LabVIEW evaluation or student copy if there isn’t a team you know that can help you out.
Start here:
That includes where to get the LabVIEW downloads.

LabVIEW is also good for any students interested in a possible future in mechanical/electrical engineering. They will find it used for sensor data monitoring/collection/processing, process control in both college and future employment.

Java is a good choice if you want to take advantage of the support you can get from high school AP computer science programs.

Any of the languages (LV, Java, C++, Python) are good if your intention is to expose students to a broader range of programming languages.
We have programmed our robots in three of the languages just to expose students to the differences.

Java is an infinitely better language for any purpose. Not only does it give your students a feel of “real world programming” but it introduces you to key object oriented concepts that will help your students in the future. You can do far more advanced things with Java (even if you’re a rookie team) and there’s plenty of support for it.

Learning LabVIEW is a pain and is not worth it. No matter what you think now, you will eventually end up switching to Java. Better to start with Java as compared to switching to it later.

Let’s not have this degrade into a language war - there are plenty of threads out there on that already.

As far as getting started, the WPI documentation ( and team 358’s ( websites are both really good for starters.

As far as getting a copy, go ahead and download last year’s software and start the trial version. You can reach out to National Instruments for a License Key

If that doesn’t work, PM me and I can get you setup with a seat from my current team’s license.

Also, please feel free to reach out (PM or email) for any control system questions.

For the second part to your question:

Personally, I view LabVIEW as a great first language because it allows you to start teaching programming principles (The robot does exactly what you tell it to do, not what you want it to do . . . Sequence, Choice, and Repetition . . .) without having to deal with a lot of syntax.

I know teams that started in c++ or Java because that’s what the mentor knew and have switched to LabVIEW because of the level of fellow team support (and support from National Instruments). As a professional developer, I recognize that any language used will have a learning curve because you are using a very specific library/framework for FRC (which is somewhat consistent across all the languages). Having served as a recruiter, a candidate having proficiency in a couple of langues (especially drastically different ones like c++ vs python vs LabVIEW - we don’t use Java), tells me that the candidate should have a good understanding of programming practices apart from language gimmicks.

So is it worth while start with javascript?
Up to you. Because FRC is largely a hardware and sensors (I view joysticks as a type sensor) programming situation, if I don’t have the resources to start a group off with LabVIEW and the FRC control system, I try for Arduino (get the concept of sensor input => determines => motor output going).

I can guarantee you that you will have a much higher level of fellow team support with Java than with LabView, unless your team is located in an area where LabView is unusually ubiquitous. On the whole, approximately twice as many FRC teams use Java as use LabView. Additionally, it is far easier to share and provide useful commentary on Java code than LabView code.

PM me I have some good info on both Labview and Java. I would suggest Java because that is what you are more accustom to.

If you decide to teach LabVIEW, you can also PM me. I’ll give you my email so you can contact me directly if you have questions. I’m a huge LabVIEW fan - of course I also work on the FRC software at National Instruments. If your goal is to get students programming a robot, LabVIEW has built in tutorials. They can also program a simulated robot and then drive it in a simulated physics engine. All you need is a decent computer (for the graphics) and a joystick.

That said, all the languages work great, and FIRST does a pretty good job of keeping parity between them as far as features are concerned.

Our team has been using Labview to code since 2015 (I believe 2014 as well). If you would like, PM me and I could help to get in contact with some of our coding students.

From my experience, not as a coding student, it was a good program, although complicated (at least for me looking at it from outside).

As posted earlier, NI should provide a license to FRC teams.


You will have success with either language. I would say that if you have a nearby team, look them up and find out what they use. Code help in your rookie year is invaluable.

Here is a helpful primer on LabView for FRC. I wish they would update it a bit.

I dunno, our team started with LabVIEW (even in the absence of a mentor with lots of experience with it), and we’ve been doing well figuring things out and it’s worked really well for us.

My honest opinion is talk to potential programmers, get an idea of what they want to do and then use that. If you decide to use LabVIEW, see if there are nearby teams that’d be willing to share their key (if I can dig ours out from somewhere, I’d be willing to share it as well, PM me).

If you already feel comfortable in text-based languages, Java is a good place to start. Basic concepts from javascript like if/else, variable types, assignment & comparison, etc. will transfer better.

Doing real-time controls well with a text-based language can be tricky.

Model-based languages like labview make doing it well a bit easier.

Truth be told, given what you described, it is probably a toss-up. The key to success, I think, is simply picking one, fiddling with it over the summer, and then sticking with the choice throughout the build season. Teams have great success with both so any issue you have will not be rooted in your choice of language - it’ll simply be in the application of it.

Even as build season rolls around, don’t be afraid to ask around here for help too! The main programming forum does get more traffic than the language-specific ones. As long as you keep your basic goals simple for this first round (ie, do just a simple drivetrain and simple manipulators - no PID :D), I’m sure we can all help you have success!

  1. Others have posted the suggestion to reach out to NI. I’d strongly encourage the same. has a link to a support number you can call and explain what you’re doing. I’d recommend this over the option to grab the SN from one of the other teams. I’d also agree that without practice, it won’t sink in.

  2. I haven’t spent a great deal of time with JS. Some of the general ideas align, as is typically true with programming languages. But, I’m not sure how much of this would really help with learning how to program a robot or how to use any of the API. I’d probably focus your efforts on getting the kids comfortable with whichever language you end up deciding to use.

I won’t try to push you towards any specific language. Really, that should be a team choice made based on what you want to get out of the tool you use. I will point out the strongest opinions against it in this thread aren’t based in reality. Rather, they’re founded on fundamental misunderstandings. Each language has strengths and weaknesses, even in the FRC community. You’ll want to understand your team’s capabilities, current knowledge, and the knowledge of teams/resources you intend to reach out to when you get stuck to ensure the best position to succeed.

From an industry professional (large computer manufacturer) point of view, we don’t want any more Java programmers. We need more C/C++ and python programmers. Unfortunately Java is all the high schools and colleges seem to want to teach.

PIC’s, and other micro’s of all sizes are abundant in industrial equipment and especially in enterprise computing equipment; they can’t be programmed in Java. Some of the newer Arm based micros are now using Micro-Python.

Java is a great platform to learn and use and has it’s place, but if that’s all you know, you are limiting yourself in what you can do.

LabVIEW, we use it extensively! Everyday, it’s everywhere in industrial test, measurement and control.

Pick what you like, learn it and implement it. Summer is the best time to get ahead on the learning curve.

Ironically, Lockheed Martin is currently looking to hire programmers, C++ :smiley:

C++ and /or ADA . . . :ahh: gasp! Shades of Pascal!

I wanted to follow up on this. Are y’all ready for kickoff?