HydroComp Web Log

[efficiency in motion for over 20 years]


 

Programming Classes in Engineering Schools
Miscellaneous Musings from the Technical Director

Monday, 16-OCT-2006 by Donald MacPherson - Technical Director

I just read that my alma mater, Webb Institute, has adopted Visual Basic for Applications (VBA) as the platform for their new computer programming curriculum. For those of you who are not yet 100% indoctrinated in the Microsoft way of doing things, VBA is a variant of their Visual Basic programming language that is embedded into other applications. VBA is most often used from within Excel for technical calculations, but it is also part of Word and Access, for example, and has been licensed for use in many non-Microsoft products.
 
Three cheers to those responsible at Webb for a good decision!
 
Some years back, I suggested this to a few of the administrators and professors at Webb from a perspective as both software developer and teacher, so perhaps I made some small contribution to that decision. My own experience as an Instructor (in the Ocean Engineering Department at the University of New Hampshire) left me with a few clear observations that prompted me to include an introduction to VBA in my own class - and to promote the idea wherever I could find a receptive ear.
 
Many engineering schools, including UNH, teach C-language programming to their engineering students. The computer platform for this class is a distributed system using a log-in account with the classical C-language tools - editor, lint utility (i.e., front-end debugger), compiler, and linker. Some of my UNH engineering interns would periodically do their homework on their lunch break, and I watched as they logged in, wrote a few lines of code, then fought with the cumbersome overhead of the programming tool. Don't get me wrong, C-language is great for what it was intended to do, which is to be a powerful, but very low-level, programming language where the programmer has an intimate relationship with the "guts" of programming. It is ideal and absolutely necessary for the Computer Science student, but in my view, exactly wrong for engineering students.
 
I have long been opposed to certain trends in engineering education, where it seems that the objective is to develop computer skills at the expense of fundamental understanding of processes. For example, I am distraught that instruction in technical sketching has been abandoned for advanced CAD skills. I thought we were training creators and problem-solvers, not CAD operators. In the context of programming, engineers are typically "consumers" of programming tools, not developers of tools. Skill in C-language programming is far less useful to an engineer than something like VBA, which is ubiquitous (you find it in hundreds of applications, not just Microsoft's), it is easy to learn, the programming environment is self-contained requiring nothing more that one's own computer and an inexpensive application (such as Excel), and - more importantly for education - it is useful well beyond college.
 
(As an aside, some high schools also adopt C-language programming for their introduction to programming classes. With the limited time and resources found in most high schools, as well as the need to first "teach the teachers" whatever programming language is adopted, you can make an even more compelling case to avoid C-language programming in favor of VBA.)
 
Now, if we can get beyond the notion that it is necessary to teach engineering students to be expert CAD operators...
 


Michael Porter, Chebeague Marine wrote on 26-OCT-2006:
VBA is certainly a better deal for just getting things done than C, but every time I have tried to use it I have ended up going back to straight VB. VBA just has too many hacks that depend on the program (the A) it is attached to. I think this decision may get modified after a little time.

Donald MacPherson, HydroComp wrote on 27-OCT-2006:
I would agree, Michael, that there are many times that pure VB is the better choice than VBA, such as for developing applications that are to be distributed to others. As I see it, the fundamental difference between the two is the user interface. VB has its own set of forms and controls, but VBA assumes that you will use the application (e.g., the Excel worksheet) as the principal interface. Is creating a VBA interface more cumbersome than VB? It may be for you and me, but that is because we know how to use VB forms and controls. As the purpose in this case is to teach programming techniques, we must assume that the students do not know anything about interfaces, whether that be VB forms and controls, or how to connect an Excel worksheet to VBA code. So, the advantage of VBA over VB for teaching programming to engineering students is in the assumption that there is some knowledge of using the Excel worksheet, and that it is already widely populated among the students so no additional licensing is necessary. You also have an interface format that lends itself to presentation output for submittal to instructors - the worksheet itself.

Susan Giver, SNAME wrote on 02-NOV-2006:
This topic resonates with me as I have recently completed a degree program and year-long research project which included a statistical component as a major part of the research and analysis. The university provided us with a statistical program which we were required to utilize to input and analyze the data. Four out of the five weeks of the module were devoted to learning how to work with the software, and it was cumbersome and confusing. I learned at the eleventh hour that the calculations I needed could be done in Excel... a program I was familiar with, comfortable utilizing, and required no learning curve. All of the class members struggled with the same problem, and were disappointed to learn that there was an easier way that we were not utilizing; especially because all of us were working full time in demanding jobs while going to school, and time was of the essence. If there is a way to utilize software that is already familiar to a student, it would reduce the learning curve and provide the time to truly understand the concepts the educator is attempting to instill.

Donald MacPherson, HydroComp wrote on 03-NOV-2006:
I concur, Susan, and as your example shows, the case must be made for any academic use of software that the tool must not be a barrier to learning - even if it means you give up some features or capabilities. It is probably worthwhile to acknowledge the distinction between using software for the academic purpose of teaching concepts (as was your case in learning statistics) and places where the end result in itself is learning the software to use in business (which was not your case as you were not taking a software course, but a statistics course). The parallel in naval architecture would be the use of software to teach ship design concepts versus teaching commercial software to be prepared to use that software in industry.


Copyright © 2007 HydroComp, Inc. Durham, NH USA. All rights reserved. www.hydrocompinc.com