Jump to content

LabVIEW quiz


Recommended Posts

Just for fun I took a short NI LabVIEW quiz - http://ni2.intellisurvey.com/run/celvbasicsquiz

I guess it should be updated since, for example:

1. Can a wire be used to pass data between loops that are intended to run in parallel?

The answer should be yes if you pass a reference like a DVR for example.

2. Which of the following is the best method to update an indicator on the front panel?

Connecting dirrectly to the indicator might lead to low performance if you are inside a loop.

3. What is one disadvantage of using the State Machine VI architecture?

With all the available state machines like a QSM and the lack of parallelism is better suited.

4. The most efficient method for creating an array is?

A variant attribute :)

5. You develop a SubVI that only outputs a value and need to use this SubVI in a (calling) VI. Which of the following is the best way to enforce dataflow to control the execution of the SubVI?

Error and sequence are about the same, however, inside a parallel program without a sync msg mechanism it is hard to control the data flow.

In general, most NI courses, I think, are outdated with no OO, design patterns, HAL, MAL, Actors, advanced TDMS, Gateway Requirments, Testing, G#...

Is there a course somewhere that teaches how to test an OO large scale project that uses Hardware Abstraction Layer, design patterns, UI framework and so on?

I would gladly pay for an online best practices course with examples.

Link to comment

Is there a course somewhere that teaches how to test an OO large scale project that uses Hardware Abstraction Layer, design patterns, UI framework and so on?

What do you mean by "how to test"?

Well, this test is intended for entry level programmers, so I guess it should not change.

I agree. If those questions/answers were in the CLD or CLA, then I'd ask for them to be changed, but this test is for a completely different scope.

Afford me a story: When I was in my first chem class in college (I was a science-physics major), the lecturer asked us to draw a model of a sodium atom. After some time trying to remember how many electrons it has, and the packed orbital limits, most of us came up with the old nucleus surrounded by co-axial rings. He showed a slide that looked just like that ("whew!"), and then said, although it's certainaly a model that was enough to get us through high school, it was time to abandon it for something closer to the truth, as the old model wasn't accurate enough for what we needed to learn now.

So, should the high school ciriculum be changed to teach everyone the latest, greatest and most complex model of the atom? No - because, for the intents and purposes of high shcool, the model that we were taught is just fine. Same goes for tests like this - if you only ask questions that the most savvy architect knows the real answer to, then you're defeating the purpose of the quiz.

That said, if there's something blantantly wrong in one of those quizes, or you disagree with the scope, then feel free to ping NI training about it. We've had success in having quizes updated in the past.

  • Like 1
Link to comment

1. Can a wire be used to pass data between loops that are intended to run in parallel?

The answer should be yes if you pass a reference like a DVR for example.

The answer is still no. A wire cannot pass data between loops. The example you gave is passing a reference to each loop and using the reference to pass data between the loops, much like a notifier would.

2. Which of the following is the best method to update an indicator on the front panel?

Connecting dirrectly to the indicator might lead to low performance if you are inside a loop.

You're overthinking the question. Connecting directly to the indicator is the best way to get data to an indicator. You're thinking about the reason why you don't need to update an indicator every loop interation. Which could be a possible question.

3. What is one disadvantage of using the State Machine VI architecture?

With all the available state machines like a QSM and the lack of parallelism is better suited.

I'm sure each of us could come up with several disadvantages of the SM VI, but for the intended audiance of this quiz, I feel the selection is appropriate.

4. The most efficient method for creating an array is?

A variant attribute :)

Can you please explain your response?

I will admit this question is a bit ambigous. What type of array are we creating? The initialize array would be the most efficient if we want all values the same or don't care about the element values(i.e. initializing a buffer).

5. You develop a SubVI that only outputs a value and need to use this SubVI in a (calling) VI. Which of the following is the best way to enforce dataflow to control the execution of the SubVI?

Error and sequence are about the same, however, inside a parallel program without a sync msg mechanism it is hard to control the data flow.

You changed the scope of the question. The question is refering the VI->SubVI interaction, not syncronizing actions across parrallel loops.

crelf and Roderic are correct the scope of the this exam is directed to entry level programmers, and intended to assess ones compotency in creating VI the perform relatively small scaled actions. The CLD and CLA levels would be better audiences to the sort of questions I think you leaning towards.

Also note, the online quiz is just a sampeling of the possible questions that could be asked. I think I remember reading somewhere that the CLAD exam won't include any new feature released in the last two years. :unsure: But don't qoute me on that.

In general, most NI courses, I think, are outdated with no OO, design patterns, HAL, MAL, Actors, advanced TDMS, Gateway Requirments, Testing, G#...

NI has significatly changed and added many courses over the last few years to cover several of the topics you metioned. Though some of the those topics are advanced or fairly new, and might be some time before courses are created, if ever. I can't comment on any of the new classes as I haven't taken them.

Is there a course somewhere that teaches how to test an OO large scale project that uses Hardware Abstraction Layer, design patterns, UI framework and so on?

I would gladly pay for an online best practices course with examples.

Check out NI Training.

Edited by Ryan Podsim
  • Like 2
Link to comment

In general, most NI courses, I think, are outdated with no OO, design patterns, HAL, MAL, Actors, advanced TDMS, Gateway Requirments, Testing, G#...

Most of the courses don't get more then 2 versions behind and teach the latest techniques (I.e. the brand new OOP course) which means that much of this is a conscious decision.

You are obviously a big fan of OO and in good company here but this is something which is a difficult concept from a newcomer to LabVIEW (who is normally new to programming) so it is never going to be central to your core 1/2/hardware courses where many students maybe only developing simple lab or DAQ applications and don't have an interest in this subject unless it is necessary.

I would say it would be nice to see some in core 3 and this is the level of programmer the OOP course is targeted at however this course does (and needs to) assume zero OO design knowledge, I think this is why it is separate, to do all of this in core 3 would make it an intense course and risks leaving some people disenchanted but I suspect we will see more come in as it becomes more widespread (there is an OOP solution to the course project on the CD).

In terms of requirements and testing this is now covered in managing software engineering in LabVIEW which was introduced a few years ago.

This is probably a good audience to ask how you find the advanced courses as well? My feeling is that some of this at this level also can only be gotten across well with communities and user groups where advanced users can share best practices and show many practical examples.

Link to comment

Hey,

Thanks for all the replies.

I didn't expect such a serious reaction to my light hearted complain.

If I had a real objection for NI I would have posted at NI.

I simply felt frustrated taking such a basic quiz to find out it wasn't so straight forward and easy.

As for the more serious issues:

What do you mean by "how to test"?

I need a course/document that will show me how to create tests for OO code the right way. Especially for LV design patterns and methodologies like HAL, GUI and LVLibP Plugins.

An explanation about how to design test code which will be as OO as the project itself and adapt to it is something I miss in my large scale project know how.

I think that the examples NI gave for HAL should be accompanied by a testing framework that fit the design.

For example, a GUI testing tool that I developed depends on having a well written code using the command design pattern and MVC.

Without DSC or outside tools like Ranorex it is possible to create a general GUI testing tool by implementing AutoIT, for example, inside the code but there are no examples/documentation available.

This is a very basic requirement from every real life code and I find myself inventing the wheel all the time.

Ryan, if you save an array into variant attribute the array is placed inside a red black tree. That means that if you need to search or sort it would be much faster.

JamesMc86, thanks for the managing software eng course reference. I think I'll go and buy the course kit if you say you went over it and it is a good one.

As for LV courses, I would love to see NI take themselves more seriously and develop a course for programmers. Most graduates today know OO/Java and the courses NI offer should give them the analogy between the way things were done in other languages and LV. Instead, the courses go over the help of basic functions and give an over view of ancient producer/consumer and event structures.

It is as if a C course went over 50 MSDN entries and the basic syntax and say this is a comprehensive course.

I went over the OO course and I'm sorry to say but it is far far from what I expected.

Maybe G# has a more relevant course.

I guess most NI old users that finished the university before 2000 have no OO experience but is it that crazy to expect them to go over Cormen+Java and give us a comparative course?

Why should LV give programmers the feeling that it is better integrated for data acquisition and that it is impossible to write anything else with it?

Dror.

Link to comment

Hmm you may be disappointed with the software engineering course if you are looking for specific test code examples. It discusses the types of testing and has some exercise on unit testing using the unit test framework.

I reality I don't know if that many graduates do have OO skills. My course (systems engineering) only had an OO optional module (everyone does C) and even then OO design isn't touched in a massive way. May graduates coming from mechanical engineering, civil, physics, electronics are in the same boat and these are the people we tend to be teaching. The implementation doesn't worry me, any LabVIEW programmer should be able to use a class and most should be able to create one and I think anyone can be taught this. It is the design which is a tough concept to grasp and I personally simply did not get it until I had some practical experience. This is one example that I think we can't teach completely in the classroom.

Link to comment

Yep, as you just said, I feel disappointed from the LV courses I saw till now.

As for the goal and audience of those courses, I disagree.

Why should a .net course designed for noobs take one year covering most of the software engineer practical and academic issues while LV courses are 2 days long and cost almost the same?

I wonder if Goop and G# courses are as shallow.

Take anyone from this forum and let them give a course about a live large scale example and you'll have an exciting course that all would love to take.

LV reputation is that it has a very fast development time but this is true only if you have a very good LV programmer or else you'll get an unstable, slow and un-modular program. If you won't teach high level LV the community will be very small and no project could achieve the LV reputation, thus, giving LV a bad reputation.

Link to comment

Why should a .net course designed for noobs take one year covering most of the software engineer practical and academic issues while LV courses are 2 days long and cost almost the same?

I wonder if Goop and G# courses are as shallow.

What course are you referring to? This is the challenge, to teach the entire OOP ecosystem in 2/3/5 days is simply not possible. People need to go away and work with it over time. The challenge is explaining to a manager that they are going to have to wait a year for that project and spend a lot of your engineers time learning the concepts they need.

Take anyone from this forum and let them give a course about a live large scale example and you'll have an exciting course that all would love to take

I would love to sit that course! and I think this is where user groups and communities really enhance LabVIEW. There is no hiding that CLAs (and engineers at that level) are hugely important to introduce these topics over time to other engineers.

The reality is that you guys on here are the metaphorical 1% (i.e. I don't know an actual figure). The vast majority of LabVIEW users are not creating large applications with LabVIEW, do not have the time to learn the tool in huge depth. LabVIEW is a tool for them, they need to spend 99% of their time doing physics research/engine design/testing parts, this is where the majority of courses are primarily aimed (i.e. for a lot of people this is all their LabVIEW learning time but for a full time developer this is only the start)

I would like to see more advanced training and I believe NI are trying to build the ecosystem for this (as an attendee of the inaugral European CLA summit this year, it went down very well) but as you say I don't think a 2/3 day course taught from rigid "one size fits all" material is the answer.

Link to comment

I'm glad NI is trying to improve the courses. The level you teach is the level you get.

The courses I talked about that take 2-3 days are the majority of NI courses while most serious .net courses are 0.5-1 year long.

The G# and goop courses are something relatively new and I didn't get the chance to see their content yet.

Your explanation for those short courses is strange.

Why is it ok for courses in other languages to be that long and it is forbidden for LV?

Teach 2 days courses and you approach lab rats that don't have money to pay for a course.

Teach half year course with certification at the end and you approach software developers that need to work with HW and write VHDL with only programming background.

Visual studio cost (7000-10000$) more than LV (4000-5000$).

.net/C#/C++/C courses are much longer and cost about 4000$.

It is hard to do what an experienced LV programmer can do in C.

Show me another cross platform, parallel, fast development, HW integrated, fully supported language.

I bet there will be a lot of managers that will go for such a course if they only hear how time wasting it is to develop a large scale app written by the graduates of those 2-3 days courses in comparison to a certified LV programmer.

Since I once was a lab rat (comp eng + app phys + optoelectronics) I had to deal with the low level of understanding I had.

For example, even if I didn't have to write a project, I had no idea why the code I wrote didn't run fast enough.

How come LV examples maid my card ran in 20KHz while my basic code ran in 1KHz.

A new user can read the help by himself. There is a need for a platform that includes the best practices with explanation why we should do it just as described for each scenario.

Besides that, you just gave me an idea that I'll post on the idea exchange: add for each function in the help an efficiency analysis like, for example, O(n) and O(log(n)) and a benchmark.

Link to comment

I am not familiar with the microsoft training and certification schemes but a quick search shows a lot of similar courses at similar prices (3/4/5 day intensive courses for similar prices e.g. http://www.microsoft.com/learning/en/us/course.aspx?id=2559b&locale=en-us) so it is not that different. There are distance learning courses that you do over a year or two but the total effort tends to come out at a few weeks total.

I am not saying that it should not happen with LabVIEW but the reality is that it is not something that is requested (although there are universities who do longer courses). The reason being is that LabVIEW programming is not the primary role for many LabVIEW users and so they are not going to commit 6 solid months to learning the tool inside and out when they should be working on the other 95% of their role. When people do use LabVIEW more then they will take more modules (getting through everything with some time to practice probably would take 6 months of time). So I am not saying that it shouldn't or couldn't with LabVIEW, I'm saying in reality it doesn't. (Trust me, I work on the tech support side and would love everyone to be a CLA ;) )

It is hard to do what an experienced LV programmer can do in C.

Show me another cross platform, parallel, fast development, HW integrated, fully supported language.

Amen!

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.