New MINDSTORMS® EV3 programming software is finally here and is ready to shine!

EV3 Classroom was released gradually, first for MacOS in November 2019, then for Windows 10, Android and Chromebook a year later in 2020.

Now that it’s available for everyone, we decided to test it out.

We are pleased to announce that we have launched a brand-new EV3 app called ‘LEGO® MINDSTORMS® Education EV3 Classroom’. Featuring a coding language based on Scratch and similar to the LEGO® Education SPIKE™ app, EV3 Classroom will replace the current EV3 Lab and EV3 Programming app products. This is in order to provide a consistent experience, features and content across all of the currently supported computer and tablet devices.

– Notice at LEGO® MINDSTORMS® Education EV3 Teacher Edition

This informative notification already tells us several interesting things about what to expect from the new programming app and from LEGO® itself, as far as the strategy for educational products yet to come is concerned. One could speculate there’s also a veiled threat that EV3 Classroom will inevitably become the only programming app for MINDSTORMS® EV3. For now at least, that has not become true.

Before drawing any further conclusions, let’s analyze the real differences between EV3 Lab and EV3 Classroom. We will also try to answer the most important question - is the new app better for programming robots?

Just in case you are now wondering what EV3 Lab is and why you have never heard of it before, let’s clarify. EV3 Lab is the previous, renamed programming software for this kit, until recently known as LEGO® MINDSTORMS® Education EV3 Teacher Edition. Except the name has been changed.

If you are looking for information on the LEGO® MINDSTORMS® EV3 kit, its possibilities and the overview of bricks and the electronics included, read this article first.

Robot Crane by RoboCamp programmed in EV3 apps

Jump straight to the part which interests you the most, or enjoy the whole article from A to Z.


First, let’s see if your computer can run the new EV3 Classroom programming software. New software often means newer requirements, so incompatibility with Windows 7 and 8.1 should not come as a surprise.

Except it comes from LEGO®, a company that proudly claims to provide support for products launched years ago, so this is slightly unexpected.

On a brighter note, what’s really great about EV3 Classroom is that all of its coding features are available on all devices, so it doesn’t matter if you have a PC, laptop, iPad, Android, or Chromebook - all of them will work! This is an important improvement from the previous app (EV3 Lab), which could be used on tablets in theory, but in a version stripped down to such bare minimum that it had no real application. If you would like to try it out, or see what you are missing, check out this article, where we talk in depth about the MINDSTORMS® EV3 kit. Fortunately, with EV3 Classroom, you no longer need to worry about tablets.

Both apps are available in 16 language versions, making robot programming more accessible to kids and adults worldwide. Considering that around 5.7 billions of people are using languages other than English to communicate, that’s an important feature.

Speaking of communication, the way you connect the EV3 Brick to your device has changed. In EV3 Lab, you could (and still can) rely on the USB cable, Bluetooth 2.0 or WiFi to establish a connection between your device and the EV3 Brick. In the new EV3 Classroom app, however, you can only use USB and Bluetooth 4.0 or newer. WiFi connection was withdrawn, which has consequences for coding possibilities.

Without any further ado, we present the list of official requirements for EV3 Classroom and EV3 Lab.

EV3 Classroom Requirements

PC and laptop:

  • 1.5 GHz Intel® Core Duo processor - equivalent or better
  • 4 GB RAM
  • 2 GB available hard disc space
  • Bluetooth 4.0 or higher
  • Operating system:
    • Windows 10 ver. 1803 or newer
    • macOS Mojave 10.14 or newer

Tablets iOS (click to open)

  • Pad Air 2 or iPad Mini 4 or newer
  • iOS 11 or newer

Tablets Android (click to open)

  • Screen resolution 8” minimum
  • 3 GB RAM
  • 3 GB available hard disc space
  • Bluetooth 4.0 or higher
  • Android 7.0 or newer

Chromebooks (click to open)

  • 1.40 GHz Intel® Celeron® 2955U Dual-core processor – equivalent or better
  • 4 GB RAM
  • 3 GB available hard disc space
  • Bluetooth 4.0 or higher
  • Android 7.0 or newer
  • Required access to Google Play Store (Android App on Chromebook)
  • Internet connection

EV3 Lab Requirements

PC and laptop:

  • 1.5 GHz processor or faster
  • 2 GB RAM minimum
  • 2 GB available hard disc space
  • USB port or Bluetooth 2.0 or higher
  • Screen resolution 1024 x 600 minimum
  • Operating system:
    • Windows 7, Windows 8 and Windows 10 (except Win RT)
    • Mac OS X 10.6 (Snow Leopard); incompatible with Mac OS 10.15 (Catalina) and higher

Tablets (click to open)

  • EV3 Lab app is available for Chromebooks, iPads, Android and Fire tablets, but in a version that significantly limits programming possibilities (click to learn more about it), so we don’t recommend it for programming robots. However, if you’d still like to try it out, head here to see the official requirements.

You only need one glance to understand that coding with EV3 Classroom requires new, more advanced hardware.

Many schools are lucky enough to have this kind of equipment. Because of the pandemic and mandatory online classes, some might have even received extra funding to overhaul their computer supplies. And since EV3 Classroom gives equal opportunities to all devices, some students can use laptops, while their classmates work with tablets. Such lessons would certainly be challenging to manage for the teacher, but doable. This means that despite higher hardware requirements, EV3 Classroom is still potentially accessible to numerous students.

Unfortunately, not everyone has access to the latest computers. Does this mean you should give up programming robots? Certainly not! You and your students can still learn how to code in visual programming software, just not with the latest app. This might actually be a blessing in disguise, because many bugs and glitches are either already fixed, or solutions can be easily found online (bugs are not characteristic of the older software, both apps have them).

If you have MINDSTORMS® EV3 sets and older hardware, you can use EV3 Lab or Scratch. The first one has more possibilities, but the interface and coding approach takes getting used to. Read on if you want to learn more.

User Interface

First app impressions are made by the welcome screen. In the case of EV3 Lab, first impressions could be condensed into unexpected confusion.

Eager to test your new set, you open the programming app and… don’t really know where to go. The interface seems to suggest that before you reach the editor, you must go through compulsory MINDSTORMS® orientation. If you are perceptive, you will notice “New Project” just below, which fills you with hope again. But you need to make one more important decision: do you want to start a new program, or a new experiment? And what is the difference?

More seasoned users know that the fastest way to start programming in EV3 Lab is to select the shortcut “Add Project” in the top left corner, marked with a small plus. It is there, but it’s not obvious. This is just one example of many confusing interface solutions in EV3 Lab, which means that overall, EV3 Lab requires more effort from the user. Not necessarily when it comes to programming, but if you want to efficiently navigate the app and make use of its additional features, you must read EV3 Help and prepare before.

EV3 Classroom, on the other hand, welcomes new users with a clear choice. You can either get a short introduction to EV3 in three steps, or skip this and go straight to creating a new programming project. Easy and understandable. Even more so, if you are already familiar with LEGO® Education SPIKE app - the welcome screen is almost identical. Easy start in EV3 Classroom is certainly a welcome improvement from the older software.

Next stop - introductory tutorials. Tutorials by LEGO® are always good and worth going through, but EV3 Classroom gets bonus points for a separate Teacher Preparation tutorial. Although the contents are no different than the Prepare section of the EV3 Lab, calling out teachers directly to familiarize themselves with basic information is vital. When working with MINDSTORMS® in school, teacher prep plays a huge role in the learning process of their students. For example, every EV3 Brick should be given a unique name before creating a program, which does not become readily apparent upon purchase. A well-visible recommendation from the producer is a step in the right direction.

Mindstorms EV3 Classroom and EV3 Lab Interface

The heart of each app is the Programming Canvas (or the editor), where you select and connect programming blocks into stacks (i.e. scripts) to make full-fledged programs for robots.

This part of the EV3 Classroom will be very familiar to anyone who has ever programmed with Scratch or SPIKE. Editor on the right, blocks palette on the left, block categories similar to those in Scratch… Stage and sprites were the only thing cut out. Before you start missing them, remember you’ve got something better - robots!

This I-can’t-believe-it’s-not-Scratch approach has two important advantages. First, there’s a very good chance that students interested in advanced robotics with MINDSTORMS® will find this programming method more intuitive, because they probably already have some experience with Scratch (or SPIKE). Second, since all blocks are small and color-coded, assembling complex programs and revising them later is really convenient.

However, there’s still room for improvement. As you browse the palette, you will notice that there’s a lot of blocks, which means a lot of possibilities, right? Unfortunately, many blocks in EV3 Classroom are superfluous, perhaps included to facilitate building programs, or provide users with choices on how to craft a solution. In reality, the overabundance of unnecessary blocks creates a mess. To make it worse, you cannot extend the palette menu to see the blocks in their entirety. You have to hover your mouse over each long block to read the end. Not a dealbreaker, but it quickly gets tedious, especially if you’re new to EV3 Classroom.

The editor of EV3 Lab is fundamentally different. Mind you, this is not necessarily bad. It was based on LabVIEW, a software used by real science laboratories, NASA and CERN. Programming blocks are presented with icons (name pops upon selection), each has multiple modes and parameters, and all blocks are nicely sorted into easy-to-browse categories. You connect blocks into horizontal stacks. One might argue that if you have zero experience with programming, creating a simple program with a motor, or a sensor, might actually be easier with EV3 Lab.

Basic programs are easy to create in EV3 Lab. Complex ones are super hard – that’s the main problem. Literally every block has a myriad of modes and parameters, all of which can be used in your program. To illustrate this, let’s consider the inconspicuous Wait block - it has 68 modes to choose from! Moreover, as you expand your program, it will grow longer AND wider, which makes it hard to keep abreast of your new creation. As a consequence, it’s easy for users to become overwhelmed and disinterested.

Despite its flaws in interface design, EV3 Lab has undeniably more programming possibilities. Jump here to find out exactly which functionalities were erased in the newer app.

Programming and Code Blocks

Both EV3 Classroom and EV3 Lab are visual-based programming languages, where you don’t need to worry about syntax. In the first one, shapes of different blocks (hat, stack, C, reporter, boolean, cap) suggest where you can use them. The second coding app skips the syntax issue by equipping every block with a ton of customizable parameters.

One of the most important joys of programming robots is making them move, so let’s take a look at blocks responsible for motor control.

Motors code blocks of EV3 Classroom and EV3 Lab

EV3 Lab is keeping it simple. Two interchangeable blocks for controlling individual motors (Medium and Large), two more for controlling a couple of motors at the same time, plus two blocks in the Advanced category - Unregulated Motor and Invert Motor. Functioning of individual motor blocks can be adjusted in terms of power, duration, stop mode, or steering. In addition, you can stop the motor from regulating the power automatically, or easily invert direction.

EV3 Classroom, on the other hand, has 20 blocks for motor control sorted into two separate categories: Movement and Motors. What’s the difference?

Pro Tip: Speaking of EV3 Classroom nomenclature, pay attention not to confuse “speed” with “power”. Here, “speed” is automatically regulated and delivers a stable rate of movement. When using “power”, you only control the energy level to be used by the motor; the resulting drive does not compensate for any resistance, or the battery charge level (in EV3 Lab known as Unregulated Motor). Use with caution!

Contrary to its name, blocks from the Motors category allow you to control just one motor, while the Movement category contains blocks responsible for controlling two motors simultaneously (i.e. mostly used for robot movement). Out of these 20 blocks, some are just not needed. Functionalities of some overlap others, making it more difficult to find the block you really want. Granted, you can now program exactly the same task in 5 different ways, but what’s the point?

One EV3 Classroom program made in 5 ways

Next up are the display blocks, responsible for programming the screen of your EV3 Brick. The possibilities of both apps are very similar, although if you want to make your own image, you will have to use the EV3 Lab. Good news is that all the other functionalities (displaying text, graphics from the library, or controlling the LED light) are in EV3 Classroom, too.

Blocks handling the flow of your program are among the most important in the entire palette. Once again, EV3 Lab opts for apparent simplicity: only 5 blocks in total (Start, Wait, Loop, Switch, Loop Interrupt). Unfortunately, when you use them for multithreading, conditional statements, or anything more than basic, this system makes everything needlessly more complicated. You easily end up with a program that is hard to interpret, modify, or improve.

In EV3 Classroom, the flow blocks (the Events and the Control categories) are easier to use and understand, partially because conditions, loops and wait commands are standalone elements. This way, they resemble the classic commands used by the majority of modern text-based programming languages. EV3 Classroom has yet another advantage - broadcast and when I receive blocks, with which you can empower communication between individual scripts.

Events is my favorite category in EV3 Classroom. There was nothing like it in EV3 Lab and I like using events in code. They make everything more legible.
Adrianna at RoboCamp

Sensors are the eyes and ears of every robot. In the original MINDSTORMS EV3 set from LEGO® Education you will find 4 sensors: the color sensor, the gyro sensor, the touch sensor and the ultrasonic sensor (i.e. distance sensor). All of them can be programmed in EV3 Lab and in EV3 Classroom with the same possibilities, which is good. Sensors from the Home edition, i.e. the infrared sensor and beacon, are also covered. Don’t worry if you cannot initially find them, they are just hidden. Click the “All Codeblocks” option to reveal blocks for the sensors included with MINDSTORMS® EV3 Home version set (31313).

At the moment you cannot program any other sensors in EV3 Classroom, unfortunately. If you want to step up your game with unincluded, unofficial, or retired sensors, you will have to do it with EV3 Lab. More about it here.

Sensor blocks in EV3 Classroom are plenty, although not all are necessary. Just like other block categories, the Sensors one includes 2-in-1 and 3-in-1 premade blocks, which you could easily make yourself. Thus, scrolling through this selection takes longer than needed, especially since you must hover the mouse over every longer block to read it (an expandable palette could easily fix this). The good news is they are sorted according to the sensor type.

Next, we reach the math blocks. The Operators category in EV3 Classroom makes a really good first impression. It is clear, understandable, non-threatening and sufficient. What’s more, programming possibilities are very close to those available in EV3 Lab, yet much easier to implement. Still, there are some differences between the two apps. EV3 Classroom introduces two new blocks: length of () and () mod (); while getting rid of several old ones, notably exponent, XOR, and truncate. Recreating most of them from blocks available is doable, but not as convenient (or neat).

Variables and lists are in both apps, too. A useful functionality, that’s certain, but you will discover that in EV3 Classroom, variables are sometimes indispensable. One of the bugs of the current EV3 Classroom version (1.2.2) makes it impossible to correctly send values from several reporter-type blocks to stack and boolean-type, so you have to rely on variables every time.

Also, pay attention to the data you enter into your EV3 Classroom variable or list. There is no automatic distinction between text and numbers, so whatever you enter, goes. All the same, using variables and lists is easier now for the user compared to EV3 Lab.

Last but not least, the elusive My Blocks. Both apps give you the opportunity to create custom blocks and use them later. This might come in handy, for example if you want to use repetitive functions, or introduce some advanced mathematical operations in EV3 Classroom.

Pro Tip: When creating new commands with motors, you can modify the port parameter by using the number assigned to it (e.g. port A = 1, port B = 2 etc.). Some numbers are available in the official user help.

If you have programmed in EV3 Lab before, you may have already noticed that there’s no Advanced blocks category in EV3 Classroom. Long story short, only two were transferred to EV3 Classroom: Unregulated Motor as start motor at 100% power and Stop Program as stop all stacks and exit program. Remaining 8 blocks, like Data Logging, or Invert Motor, are just unavailable in the new app.

One program made in two apps

Although both apps have similar programming potential, they are fundamentally different, which means that not all programs will be easily “translated” from EV3 Lab into EV3 Classroom. Unsurprisingly, they will change in layout, often times in size. Programs recreated in EV3 Classroom will take less space, despite being composed of more blocks. Sometimes you may lack the right codeblock, sometimes new options may provide you with more effective, or more interesting solutions. And let’s not forget about pesky bugs that you will have to bypass.

Generalizations aside, let’s examine how the program for the Forklift robot changes depending on the programming app. Watch the videos below for full programming instructions with the robot testing phase.

Building instructions for the Forklift robot are included in the CityCamp lesson series for MINDSTORMS EV3.

Which software would you choose for a lesson with the Forklift robot?

Both programs explained above make the robot perform the same task autonomously. Yet they appear so different! The colors, graphics, even the direction in which you create the stack varies.

In EV3 Lab, parameters and options for programming statements are often already included in the block. Meanwhile, the blocks of EV3 Classroom are exactly as they seem on the surface, so creating an advanced statement is completely up to you. This is why in the Forklift program, the condition made in EV3 Lab with just one Wait block takes two separate blocks in EV3 Classroom - wait until distance is less than 3 cm and stop moving.

Note that in EV3 Classroom, there is no distinction between Large and Medium motors. In truth, this distinction was only cosmetic in EV3 Lab, so getting rid of it can be seen as an improvement. On the other hand, describing individual motors only with the port they're connected to will be more confusing to younger kids.

Similarities between the two programs are apparent upon a closer look. Code blocks look differently, but the commands they represent are comparable. Not only can you control either one or two motors simultaneously, most of options for programming motors are included in both apps. Interestingly, inverting the direction of motor rotation by adding the minus sign in front of the power works in each app, too! This tells us that although EV3 Classroom looks like Scratch, its backbone was taken straight from EV3 Lab.

Moreover, a quick comparison of the two programs gives an insight into the personality of the target user for each programming app.

EV3 Classroom prefers users that are more independent and remember to include the basics, like separately specifying the port your motor is connected to. On the other hand, EV3 Lab requires from the user more attention to detail ("are you sure you checked this parameter?") and patience for browsing all available options.

Do you see yourself as either one?

Functionalities found only in EV3 Lab

Despite its flawed interface, EV3 Lab is capable of creating highly advanced programs and has sophisticated functionalities to support it. No wonder some of them were cut out, in order to simplify the programming learning process for kids.

Let’s see what we’re missing in EV3 Classroom.

Say goodbye to projects involving several EV3 Bricks at once (i.e. Daisy Chaining). The option to connect EV3 Bricks via WiFi was completely removed, along with all communication possibilities that allowed you to manage more than one Brick in your program.

Recording new sounds (Sound Editor) and designing unique images (Image Editor, Shapes block) to display on the screen of your Brick is no longer an option in EV3 Classroom. They may not seem important from a teacher’s perspective, but these tools allowed artistically inclined students to personalize their project and have some extra fun.

Speaking of projects, keep them short. Many advanced blocks and tools for conducting long-term projects (e.g. Data File Log Manager, or Data Logging and Keep Awake blocks) are not included in the newer software. Not a reason to worry for most schools, but this decision may disrupt ambitious plans of after-school robotics clubs.

Some mathematical operations were cut out, like XOR (exclusive or), exponent, advanced (for trigonometry), truncate and range. If you are creative and like math, chances are you will come up with alternative solutions, albeit not as pretty.

Mindstorms EV3 Lab Sensors blocks

While EV3 Classroom is a rule-following formalist when it comes to sensors outside of the official kit, EV3 Lab is a real rebel. In the older programming app, you can use sensors from EV3, NXT, or even electronics produced by other companies! This freedom of choice is a powerful tool, which can transform your robot into almost any device you could imagine and assemble. The Block Import tool made the whole process even easier. Too bad the era of anarchy in the EV3 is behind us.

Fortunately, EV3 Lab is still available. To use these amazing tools, you just need to download EV3 Lab for free and install it on your computer.

Have fun!

Exercises for EV3 Classroom by RoboCamp

Conclusions, or which app is better

EV3 Lab and EV3 Classroom are fundamentally different programming languages, clearly designed with disparate objectives in mind.

The idea for the older app was inspired by LabVIEW. In consequence, EV3 Lab presents programming in the context of working with machines, like automatons, or equipment used in research labs. Focus on tangible devices is further encouraged by a wider array of electronics you can purchase separately and program, or additional options, such as connecting and utilizing several EV3 Bricks in your project.

The new EV3 Classroom, on the other hand, is a close cousin of Scratch, originally created to prepare kids for programming in text-based programming languages. In EV3 Classroom, you stack individual commands together to create a logical stream of events and actions, which incidentally teaches users the basic concept of syntax and the differences between several types of programming commands.

Knowing the origins of the right coding software already tells you a lot, but to choose the right one for you and your students, you must also stop and think about what you want to achieve through programming EV3 robots. Even if you are not sure whether your students plan to work in a research lab, or develop an app in the future, you can certainly predict what you want to accomplish during your lessons together.

In short, if you want to simply introduce kids to the basics of programming with the help of robots, go for EV3 Classroom. It’s easier to grasp, to work with and equips your students with core skills that they can develop in numerous directions. However, if you want to realize long-term projects exceeding one lesson unit, teach science with robots, or conduct experiments with additional sensors, you may be better off with EV3 Lab.

Seems straightforward, but before you make a final decision, give some thought to the weaknesses of each software. For example, EV3 Lab makes complex programs look bulky and hard to read. Really unfortunate, especially since this app has tools that are useful only when applied in extensive programs. The interface is less intuitive and looks a bit outdated. Then again, it has no issues with connecting to the EV3 Brick, unlike EV3 Classroom. The new app is more user friendly, but also overburdened with superfluous code blocks, while some of the actually useful blocks were removed.

Moreover, you will have to deal with and work around bugs in EV3 Classroom. We have already started working on another article to help you with this issue, so don’t worry - help is on the way! In the meantime, make sure to follow our step-by-step programming instructions to avoid any problems.

As you can see, there is a lot to ponder about.

Although frankly, in some cases, you may not have a choice. If you have older computers that just do not meet the requirements of EV3 Classroom, you will have to stick to EV3 Lab. Then again, if you are programming with tablets, the only option that makes sense is EV3 Classroom, because the tablet version of the other app was so trimmed down that hardly any code blocks remain.

Ultimately, whether you choose EV3 Classroom or EV3 Lab depends on your hardware and personal preferences.

We have worked with both apps at RoboCamp and honestly, there is no clear winner. None of them is perfect. Nevertheless, when I asked my colleagues off the record which programming app for MINDSTORMS® they prefer, most of them chose EV3 Classroom.

About the authors
Dominika Skrzypek
International Education Specialist
Dominika is a lover of languages, learning, and all things robot-related. She holds a BA in Education and an MA in English and French Translation. At RoboCamp HQ, Dominika’s role is to oversee content and prepare educators for their first robotics lesson. Away from the bustling office, she specializes in translating children’s books, films and educational materials.
Ola Syrocka
Curriculum Developer
Ola holds an MSc of Physics and had been teaching robotics to children for over 8 years. She plays a key role in creating internal curricula, combining STEAM with lesson plans, and co-authoring RoboCamp lesson series. Whenever available, she trains teachers and helps them deliver robotics-based lessons.