Certification

cancel
Showing results for 
Search instead for 
Did you mean: 

Good book for CLD exam

Solved!
Go to solution

Please rate my elapsed time VI at this board for my level analysis for CLD.

Message 11 of 27
(6,497 Views)

Hello,

You might find this forthcoming publication very helpful, Effective LabVIEW Programming.

For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/

and "inside the book" on the right side of the page to see,

About the Author

Preface

Full Table of Contents

Introduction

Sample Chapter 4

It's expected to be published by the end of July.

Tom Robbins
     

Message 12 of 27
(6,492 Views)

@atomrob wrote:

Hello,

You might find this forthcoming publication very helpful, Effective LabVIEW Programming.

For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/

and "inside the book" on the right side of the page to see,

About the Author

Preface

Full Table of Contents

Introduction

Sample Chapter 4

It's expected to be published by the end of July.

Tom Robbins
     


I'm less than impressed with chapter 4.  Defining terms as "Well established in the LabVIEW Community" that do not appear anywhere on the forums seams to be a bit of a streach.  building a state machine from scratch rather than the shipping VIT is a rather large waste of time.  Using Error rings and ignoring Structure lables is folly. 


"Should be" isn't "Is" -Jay
Message 13 of 27
(6,481 Views)

@JÞB wrote:

@atomrob wrote:

Hello,

You might find this forthcoming publication very helpful, Effective LabVIEW Programming.

For a preview of the contents take a look at the book's web page, http://www.ntspress.com/publications/effective-labview-programming/

and "inside the book" on the right side of the page to see,

About the Author

Preface

Full Table of Contents

Introduction

Sample Chapter 4

It's expected to be published by the end of July.

Tom Robbins
     


I'm less than impressed with chapter 4.  Defining terms as "Well established in the LabVIEW Community" that do not appear anywhere on the forums seams to be a bit of a streach.  building a state machine from scratch rather than the shipping VIT is a rather large waste of time.  Using Error rings and ignoring Structure lables is folly. 


And did you notice the Rube in Figure 4.14?  Return the max between X and Y.  He could have just used the Max/Min primitive instead of doing the comparion and the select function.  And it also looks like he has a probelm with the event structure, which should be a very fundamental part of learning LabVIEW.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
Message 14 of 27
(6,476 Views)

I got an early copy of Effective LabVIEW Programming. I did not read the whole thing -- it's a pretty hefty book at 700 pages. I did read several portions and skimmed other parts.

 

In any book like this, you're going to find some author idiosyncracies, like one crossrulz mentions in section 4.14. The author had a number of folks read and feedback on the book to try to decrease such things, but it's really hard to catch all of those when you're focusing on the wider points. The goal is to get people to understand how LabVIEW works and how parts fit together. If the book ocassionally forgets a particular primitive, that's somewhat ok. Also, if you look at 14.4 in context, it is trying to show how to use the Select primitive... maybe not the best demo, but it isn't saying "use this when you want Max & Min", just "this is how Select works".

 

Jeff, you mention the waste of time of not using the built in templates. I totally agree -- for any real project, you should definitely use the shipping templates as much as possible. But taking time in a textbook to build one up from scratch gives the reader more insight as to why the structure works and what parts he/she can change without breaking the system. I once had a professor make me implement an Array class, even though pretty much every language has them in its libraries, because it helped to understand why that API had certain aspects, and that then helped me later when designing APIs that weren't ubiquitous. That's what this book does.

 

The event structure is in Chapter 10. Is that too late? Should it have been introduced earlier? It is impossible to put everything in Chapter 1, and you don't want to wait until Chapter 10 before you have students actually write programs for the first time. So, yes, some of the earlier programs include sections that are better done with an event structure. I think the tradeoff is reasonable. Personally, I would have changed the priority of several sections, but I cannot definitively say that the order I would have chosen would be more or less comprehensible to a new user. Ultimately, it comes down to the order in which a teach thinks he/she can explain a complex topic and how well that matches the ordering a student needs to absorb it.

 

Overall, I think this book achieves its goal of laying out the parts of LabVIEW needed for mastery, although the book is quite long -- I know some people will balk at its length. I'd give it to someone who already knows LabVIEW basics and tell them to skim past parts that they already grasp and only delve on topics that are truly foreign. Every student is going to have a different set of holes in their skill set, and I think the book covers them all, eventually. 

 

Message 15 of 27
(6,463 Views)

Hello! I'm Tom Bress, the author of Effective LabVIEW Programming, the upcoming book under discussion here. I'm a CLA and a CPI. Thanks, everyone, for the input. In response, I'd like to give you some background information about the book and the way that it is structured. The purpose of the book is to help beginning-to-intermediate LabVIEW programmers learn to "think in LabVIEW". I wrote the book because I wished that there was something like it back when I was preparing for the CLD exam. There aren't that many LabVIEW books out there. Many of the beginner books focus on the mechanics of how to navigate the graphical interface. There are books that are exhaustive references of all LabVIEW functions. There are books about data acquisition, image processing and other specialized topics. This book is different. This book focuses on how to think in LabVIEW, how to use dataflow, and how to create state machines. The book uses only the core LabVIEW functions that are used in most VIs: loops, case structures, event structures, queues, etc.

 

I decided to use the published CLD exams as the basis for the book. One of the published exams is about a car wash with two user-selectable sequences, an Economy wash and a Deluxe wash. The car wash states are timed, and the timer pauses when the vehicle moves out of position. The timer picks up where it left off when the vehicle moves back into position. I use this exam throughout the book to illustrate LabVIEW concepts.

 

The chapters alternate in a regular pattern. In one chapter I discuss a new concept, in the next chapter I show how to use that new concept in the car wash VI. Each chapter builds on the chapters that came before it. Each version of the car wash VI presented in the book is an upgrade of the version that came before it. Eleven problem sets with full solutions to every exercise are also included in the book. The problem sets are based on all of the other published past CLD exams (traffic light, boiler, security system, a second car wash exam, sprinkler controller, and ATM controller). Here is how the book is laid out:

 

  • Ch. 1: LabVIEW basics for the complete beginner
  • Ch. 2: Functional specifications and state transition diagrams
  • Ch. 3: Problem Set 1 (basic exercises, sub-VIs, etc.)
  • Ch. 4: The classic state machine (no queues or event structures yet)
  • Ch. 5: Action engines (functional global variables)
  • Ch. 6: Building a timer action engine for the car wash VI
  • Ch. 7: Problem Set 2 (action engine exercises)
  • Ch. 8: Building a classic state machine car wash VI (uses the timer action engine developed in Chapter 6)
  • Ch. 9: Problem Set 3 (classic state machine exercises)
  • Ch. 10: Event structures
  • Ch. 11: Upgrading the car wash VI developed in Chapter 8 by adding an event structure
  • Ch. 12: Problem Set 4 (event structure exercises)
  • Ch. 13: Queues
  • Ch. 14: Upgrading the car wash VI from Chapter 11 by adding a queue
  • Ch. 15: Creating a data acquisition state machine VI (I couldn't ignore this topic completely!)
  • Ch. 16: Problem Set 5 (queue exercises)
  • Ch. 17: Preparing for the CLD exam
  • Ch. 18: Problem Set 6 (guided walkthrough of the sprinkler exam)
  • Ch. 19: Problem Set 7 (guided walkthrough of the ATM exam)
  • Ch. 20: Adding arguments to state machines
  • Ch. 21: Upgrading the car wash VI from Chapter 14 by adding arguments
  • Ch. 22: Problem Set 8 (arguments exercises)
  • Ch. 23: LabVIEW classes and data encapsulation (replaces the action engine timer of the car wash controller from Chapter 21 with a timer class)
  • Ch. 24: Problem Set 9 (LabVIEW classes exercises)
  • Ch: 25: Inheritance and Composition (adds car wash cycle classes to the car wash controller from Chapter 23)
  • Ch. 26: Problem Set 10 (inheritance and composition exercises)
  • Ch. 27: Producer-Consumer state machines (builds producer-consumer car wash VI based on the car wash VI developed in Chapter 25)
  • Ch. 28: Combatting race conditions (fixes a race condition in the car wash VI using semaphores, etc.)
  • Ch. 29: Extending the language (fixing the race condition in the producer-consumer car wash by creating a custom class for handling the queue)
  • Ch. 30: Problem Set 11 (more exercises with classes)
  • Ch. 31: Wrapping it up (review)

There are also a lot of appendices containing the functional specifications for all the CLD exams and complete solutions for every exercise in the book. All of the codes developed in the book will be downloadable from the publisher's website.

 

Hopefully this addresses some of the concerns raised in the previous posts. I didn't use templates because the whole point of the book is to learn how to internalize dataflow and learn to build VIs from scratch. The LV Core classes take the same approach. Event structures are indeed covered in Chapter 10, but really it is covered right after action engines and state machines, again just like in LV Core 1.

 

The book is long, but it is not as long as it looks. About a third of the book is dedicated to the problem sets, problem set solutions, CLD functional specifications, etc. The book is in full color and is loaded with figures (mostly screenshots of the VIs). There are so many figures that I half-jokingly refer to it as a "LabVIEW coffee table book". The first chapter on LabVIEW basics is pretty long since I wanted the book to be accessible to beginners and there is a lot of material to cover, but you can skip that and jump in wherever you want based on your LabVIEW background. The book is tightly focused, but it covers a large range of topics from LabVIEW basics and state machines to more advanced topics like LabVIEW classes and parallel loops.

 

Finally, as AristosQueue mentioned, any LabVIEW book that shows actual working VIs is going to be subject to the personal style quirks and idiosyncrasies of the author. That was my biggest concern while writing this book. I wanted to include a lot of code, a lot of meat, because so many LabVIEW programmers are lone wolves that work in isolation. They don't have the luxury of studying other people's code to improve their own coding skills. I wanted the book to be full of examples of working code of decent-sized projects done in good style. Of course, others will disagree with my style choices. But at least there will be something out there for the lone wolves to study. In my defense, I have had a number of people both inside and outside of NI review the book and critique my codes. My codes follow the general guidelines laid out in Blume's LabVIEW Style Book (an excellent choice for preparing for CLD exam).

 

I'm sure that there will be criticisms of my codes and I'm sure that I will learn much from them, but I have tried my best to ensure that my readers will not be steered off a cliff by studying the codes presented in the book. I'm sure that I will get many good suggestions from the LabVIEW community for improving the book, hopefully I will get the chance to incorporate them someday in a second edition.  In the meantime, I sincerely believe that this book will help anyone preparing for the CLD exam, anyone trying to make the leap from spaghetti code to state machines, or anyone interested in learning more about using LabVIEW classes and/or parallel loop architectures.

Message 16 of 27
(6,437 Views)

Thank you for chiming in Dr. Bress.  I probably owe you an appology for the brevity of my initial comments.  I will also attempt to be brief in my remarks here but most likely will fail.

 

Please bear in mind my reaction was limited to a first pass through of chapter 4 within the context of "Preparation for Certification."

 

I agree the chapter presented the ideas and concepts of a classic simple state machine well.  A novice LabVIEW programmer would gain a thourogh understanding of what a simple state machine is.  If that was the goal of the chapter you delivered it perfectly with the exception that you indroduced terminology (clear in intent) that is unfamilliar to me.  I am unaware of the source for those terms. 

 

If the chapter's goal was to teach a LabVIEW Developer to create and use a simple state machine effectively you missed the mark by not including the simple state machine template available from File>>New... Frameworks. Or showing how to add your simple state machine to this folder.  Perhaps you cover that in another chapter.

 

I will stand behind my remarks on developing in 2012 (Error ring is a new feature) and the comments about using free lables in each case vice integrated structure lables (another new feature in 2012.)  ISLs are just too effective of an aid to developers!  Perhaps you cover this elsewhere.  I have expected very rapid adoption of the feature.  It was well promoted.  

 

Fig 4.14.  Surprisingly I object less to the lack of Min/Max and more to the logical flaw of indroducing the tautology by using "Greater Than or Equal" vice the resolved simpler argument "Greater Than."  That's pretty picky on my part and I can overlook it.

 


I do not object to the use of polling vice events.  The intent of the chaper was clearly about the basic state machine.  Again the simple state machine concepts were presented in a clear manner.

 

For what its worth, I will have a copy of this work in my reference library as an aid to developers and myself.  I hope the margins are wide enough for notes.

 

Thank you for assembling this work!


"Should be" isn't "Is" -Jay
Message 17 of 27
(6,428 Views)

I also reviewed a couple of chapters in Effective LabVIEW Programming. I hope I would have had the time to review more of it, but what I did see was very well outlined and always with the beginner in mind. 

 

As a CPI, I always recommend LabVIEW for Everyone by Jeffrey Travis and Jim Kring. Unfortunately that book is becoming outdated (love the final line on the object oriented programming section saying something along the lines of there is something exciting coming, but we can not tell you what. Clearly before LVOOP was out). Effective LabVIEW Programming is going to be another book I recommend to beginners and to LabVIEW developers who want to prepare for the CLD exam. I will also recommend it to people who like to learn by reading a book and doing exercises knowing the solutions are available. 

 

A lot of us have learned from the forums, both the NI Communities and LAVA. But there are people out there that do not learn that way and a book is the best way for them. I think this book will help them. If there are certain idiosyncrasies that they learn from the author that are not widely accepted, they will learn that with time. At least this book points them on the right direction.

 

Finally, I hope this book will help to transform and hopefully convert the LabVIEW Spaghetti coders out there

 

 

For an opportunity to learn from experienced developers / entrepeneurs (Steve, Joerg, and Brian amongst them):
Check out DSH Pragmatic Software Development Workshop!

DQMH Lead Architect * DQMH Trusted Advisor * Certified LabVIEW Architect * Certified LabVIEW Embedded Developer * Certified Professional Instructor * LabVIEW Champion * Code Janitor

Have you been nice to future you?
Message 18 of 27
(6,410 Views)

It is awsome to see all the useful comments in this topic. Thank you for sharing your favourite books with me, I have got a copy of The Labview Style Book of Blume, and now I plan to get another book, the Effective LabVIEW Programming by Dr. Bress. The summary of the book is very clear to me, and seem like it covers a lot of practical problems which I believe are very helpful for the CLD exam. The book also has color figures, and up-to-date, therefore I think I will love this book more than The Labview Style Book.

 

I think Effective LabVIEW Programming is not published yet, and that's why I couldn't find out anywhere to buy the book yet. Wish I could have it just now. Dr Bress, do you know any sources that I can buy the book as soon as it is published?

 

Thank you and love to you all.

Hoa Huynh
huynh213@umn.edu
0 Kudos
Message 19 of 27
(6,402 Views)

When will the book be available on Amazon?

0 Kudos
Message 20 of 27
(6,185 Views)