|
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.
|