[Help Needed] Transitioning to Object Oriented Programming

I’m currently completing my undergraduate research thesis on assisting students’ transition from visual to object oriented programming. After struggling through this myself, and mentoring lots of students through the transition, it is something I have become quite passionate about.

As part of the project, I created a survey to better understand the problems students are currently facing. It has been approved by my university’s ethics committee.

The survey is voluntary and available here: https://mqedu.qualtrics.com/jfe/form/SV_a99c6tE4IJIqN1j

If you could share the link around, I would greatly appreciate it!


Our team is in the process of transitioning from LabVIEW to Java. We have 12 students with varying degrees of proficiency in LabVIEW. I am currently working on training materials for this summer’s project of educating them and then having them customize the training materials for use again this fall while in boarding our new freshmen.

If it would be useful, I will be happy to ask them to fill out your survey at the end of the summer. I would also be most appreciative of any insight you may have in assisting in the transition (I have taught many people programming, so from scratch, most with at least some experience, but never helped kids who are transitioning from a visual based language to text).

Good luck on your thesis.

It might be worth adding an intermediate step by transitioning to Object-Oriented LabVIEW before advancing to Object-Oriented procedural text programming.

So not to be a stickler for words but “visual programming and object oriented” are two different concepts.

Visual programming would be more drag and drop programming where you don’t type code it, you do everything in a graphical environment. Like Scratch, the graphical part of RobotC and Labview.

Object oriented is where your program deals with objects where objects have data and methods associated with them. You invoke the method and it works on that objects data.

Some languages are procedural, so you do things in steps and have functions that you can call.

RobotC Graphical is a procedural visual language.

Scratch is mostly considered a procedural visual language, except you can treat sprites as objects and tell them (invoke their methods) what to do. (Start the flame war in another thread please)

Dataflow languages act on data streams. They models a program as a directed graph of the data flowing between operations. Labview is a dataflow language as is Microsoft Visual Programming Language (part of their Microsoft Robotics Studio.) My primary dataflow language is Verilog for programming chips. What makes dataflow languages interesting is lots of things happen concurrently, not in steps like a procedural language.

But there is a component of Labview that allows you to create objects and do a method invocation.

That leaves Java which is an Object Oriented text based (non-visual) language.

Hope this helps on some definitions. I tried to stay with “robotics” languages, there are dozens of dataflow languages, over 100 OO languages and lots more procedural languages. And some that try to be all things to all people (and fail)

Good luck with your paper!

Absolutely! My project looks at how to help students transition between these different paradigms. A number of researchers have noted this transition is difficult (as I think many FIRST alumni like myself know first hand) but there is very little information on why this is difficult.

I don’t think you understand. The concepts of “visual programming” and “object oriented” are not choices on the same scale. They are separate and unrelated. There is no such thing as transitioning between them; each can be used, or not, independent of the other.

The “difficult transition” you are positing is probably between procedural and dataflow languages, or perhaps between non-object-oriented and object-oriented ones. Talking about visual programming in this context is only a distraction.

LabVIEW and Object Oriented programming are not separate concepts. You can do object oriented programming in LabVIEW using LabVIEW classes. The classes have common attributes desired in OOP such as abstraction layers, data encapsulation, and inheritance.
I would suggest reading up on how NI implemented OOP in LabVIEW and get familiar with classes to see if it can work for your application.

Here is a white paper on the topic: http://www.ni.com/white-paper/3574/en/

Thanks, that was the point I was trying to make.

LabVIEW is a data flow language that they have bolted some OO programming features onto. So it is becoming more of a hybrid an attempt to be all things to all people.