All engineers use computers, but do all engineers write computer programs? Could they? Do they really need to be able to?
The essence of modern engineering design is integration and simultaneous optimization of all the elements in the multidisciplinary engineering system. And computer software, whether it is for modeling and analysis or for real-time application, is an essential element. It is often the most costly element in terms of complexity and development time and can also be a major source of system failures. So if engineers only just use programs like Excel, MATLAB or LabVIEW and then rely on software specialists to write customized analysis programs or real-time application programs, aren't they failing in their integration and optimization mission?
At most universities, freshman engineering students take an introductory computer programming course usually taught by a non-engineer using a programming language like C or Java to solve non-engineering-type problems. Students do little, if any, computer programming over the next two years, usually as a last resort. When it comes time for the senior-year capstone design experience, all the computer programming gets handed off to the computer geek on the team. Where is the integration? Why should we then expect something different when our graduates become practicing engineers? Engineering educators are responsible for this situation and immediate changes are needed!
Let's first differentiate between conventional computer programming and real-time computer programming. Real-time software is at the heart of multidisciplinary engineering systems. It differs from conventional software in that its results must not only be numerically and logically correct, they must also be delivered at the correct time. It must embody the concept of duration, which is not part of conventional software. Real-time software used in most physical system control is also safety-critical. Software malfunction can result in serious injury and/or significant property damage. And asynchronous operations, while uncommon in conventional software, are the heart and soul of real-time software. The hardware interrupt, the capability to stop the current execution of a program and service some device or some sensor outside the program, is the nitty-gritty of real-time software.
Dr. Fred Stolfi, a mechatronics' professor at Columbia University and long-time industry practitioner, says working engineers use computer programs like Excel for data analysis. They are also familiar with CAD software for both mechanical design and electronic circuit analysis. However, they fear traditional code - like C and Assembler - which can perform real-time operations. So while they are comfortable doing computer analysis, they turn computer control over to a software expert. In his view, the problem is also generational. Older engineers often do not trust computer analysis and prefer to design by the "seat of their pants." Younger engineers seem to trust computers too much and do not think about what the computer results are saying. In general, control is a lost art and with it real-time programming. The situation is the same at the university. When students are asked to design an original system as part of their capstone design experience, they realize they want a real-time microcomputer or computer to control their system and do not know how to implement it.
In the next article, I will offer some solutions to the problem I have described and suggestions for effective computer programming, both for analysis and for real-time applications.
For more information on designing for mechatronics and mechatronic collaboration tools, visit The Mechatronics Zone.
Fortran IV on punched cards run by the main frame, that was my first language too. Just being able to hit the "delete" key instead of typing a whole card over again was a major innovation in engineering throughput.
In one way I always thought I was born too early- I should have been in WWII instead of a baby boomer.
In other ways I was born too late. When I went through engineering we only had Fortran on IBM punch cards. I am an analog engineer. I love the nuts and bolts of designing analog and digital circuits. I love the challenge of making a new circuit work where there was nothing before.
However, I think I would have been really excited about combining software and hardware- maybe an embedded engineer! But the training for software just wasn't available. About 15 years ago I took a coarse in C++. I really loved it. But I think the time for me learning these new skills is probably over. But I bet it would have been a lot of fun!
I envy the new generation of engineer who learns both!
In the job market you are expected to be able to code on a variety of platforms.
In college today, most EE students do not learn much past a beginner JAVA class.
Luckily for me I had to make it through the full gauntlet of programming courses. From Assembly, C, C++, Matlab, to JAVA, and on a wide array of processors, I knew more than I needed. Later in my career, my programming experience was a vital part of my day to day.
I'd say the "Engineer Programmer" is a correlative, an apt description of the EE today.
When I attended college it had an EE department and a CS but not they are considered the same department. Oddly enough a lot of my EE friends now write software code. I write firmware (VHDL) but not software.
The article didn't really examine the blurry line of the EE. When microcontrollers became cheap enough to use in designs I slowly became what we now call a Firmware Engineer. Frequently we just call the Firmware Engineer a Software Engineer and in some companies the engineer is a CS major rather than a EE. I've hired both CS and EEs over the years, but I do prefer EEs that learned how to write code, rather than a CS major that knows how to solder. It seems that the troubleshooting skills of a EE are much better than the CS major. The code writing EE is a blurry line between the hardware and software world. Another reason to call it Firmware.
My college experience was that you were either a hardware engineer or a software engineer, with some overlap of course. It definitely paid to know as much as possible of the "other world".
I have been a Software Engineer for the past 18 years while my original degree and work was in Mechanical Engineering.
I have enough experience to realize that most Engineers should not be designing large complex software systems. Just becuase you can write a program in Java to solve some engineering calculations does not mean you are qualified to deisgn a complex control system.
It helps to have a good generalized ability and to also know when to get help.
I think you make some excellent points, Bob. On the lighter side, I solved the problem by marrying a handsome M.S.E.E.hardware guy. I am a test engineer with a basic working knowledge in hardware but where I shine is in software. Hubby knows some software but can run circles around me in hardware and circuit design. We make a great team although when anything goes wrong with the project we all know to blame the hardware ;)
This response has a huge danger of becoming way toooo long but I will try to condense my thoughts on this subject. First of all, engineering design and software programming are NOT the same or even that close. Both have unique training and experience needs AND they both require somewhat different types of personal characteristics. Yes, an engineer should be able to program a computer (that also means a uP). But most engineers do NOT make good programmers - the skill set is just too different. And likewise, good programmers do NOT make good engineers for the same reason.
But there are times when each (programmer and design engineer) need to intrude a bit into the other guy's world and certainly each should know enough to be able to do so, i.e. to at least understand a bit of the other guy's mystery world.
Given all of the above, there are obviously folks who can do both jobs superbly well. But for the average person, not so much.
Another thought - certainly an engineer has many tools that do require some level of computer expertise (e.g. using Matlab for simulation, using Labview for testing prototypes, using Excel for data analysis) and certainly the competent engineer should have a fair ability to use all of these.
And sometimes a design engineer has no choice - the project team is too darned small and he or she needs to be a 'jack of all trades'. Kind of fun but I'll bet the certain facets of the project suffer (e.g. the software part for an embedded uP).
Just one last thought (I promise!) - I think that a college education should provide exposure to everything that an engineer will require to be a good and successful engineer when he or she gets out into the REAL world. That does mean exposure to software programming techniques (yes, Virginia, there are both BAD and GOOD software techniques and procedures!)
I think that the colleges should teach and use engineering programming more in the classes. The biggest pet peeve of mine in college is how is what we are using applied to real world situations. I write my own code for the most part until it comes to something that give me a problem. Then I turn it over to the engineer programmer to solve my problem.
With LEDs dropping in price virtually every year, automakers have begun employing them, not only on luxury vehicles, but on entry-level models, as well.
The 3D printing revolution seems to have a knack for quickly moving technology ahead by way of collaborative effort and even a little friendly competition -- all of course in the name of scientific advancement.
Advantech has launched a new series of motion-control I/O modules to meet the increased demands that come with more distributed industrial systems that require control of a growing number of axes and devices.
Using almost 200 light-emitting diodes in the front and back of the new 2014 CTS, Cadillac designers are showing how LEDs can change the character of a vehicle.
From Dell / Intel® New Paradigms in Design Work Scott Hamilton, vertical market strategist for Dell Precision workstations, 5/2/2013 3
Early in my career, I worked as a draftsman and remember the days of drawing on vellum with numbered pencils and Mylar with plastic lead. This was a fun experience in the sense that I ...
I've been using workstations for more than 10 years and love finding ways to get more performance from my system. With demanding professional applications that require more power each ...
A lasting memory from my first job as an engineer in an auto assembly plant is standing on hard concrete at six in the morning, vending-machine coffee clutched in hand, listening to ...
A quick look into the merger of two powerhouse 3D printing OEMs and the new leader in rapid prototyping solutions, Stratasys. The industrial revolution is now led by 3D printing and engineers are given the opportunity to fully maximize their design capabilities, reduce their time-to-market and functionally test prototypes cheaper, faster and easier. Bruce Bradshaw, Director of Marketing in North America, will explore the large product offering and variety of materials that will help CAD designers articulate their product design with actual, physical prototypes. This broadcast will dive deep into technical information including application specific stories from real world customers and their experiences with 3D printing. 3D Printing is
To save this item to your list of favorite Design News content so you can find it later in your Profile page, click the "Save It" button next to the item.
If you found this interesting or useful, please use the links to the services below to share it with other readers. You will need a free account with each service to share an item via that service.