Greetings everyone on what has to be the slowest regular work day of the year on the Michigan Tech campus, the Friday before Memorial Day weekend.
In my work with the Computing and Information Sciences Working Group this year I have had plenty of opportunity to ponder the two disciplines of engineering and computing, and the relationship between the two. I see both of them as components of the innate human enterprise of tool-building, that is to say, the development of technology that we use to improve the human condition. Building these tools is what we are all about at a technological university, and engineering and computing can and do play important complementary roles in our teaching and research programs.
Since engineering has been around longer than computing as both a professional activity and an academic discipline, it typically has a bigger piece of the organizational structure in universities. In the majority of universities in the United States, computing (or computer science) is one department among many in a College of Engineering or similar-named unit, right there alongside mechanical engineering, electrical engineering, chemical engineering, and all the rest. Observing what is happening with computing technology, the high-tech industry, and the employment outlook for computing professionals, I am now convinced that computing is not just another engineering sub-discipline, but rather it is its own field that should be considered complementary to engineering. The two should live side-by-side like two sides of the same technology coin. In engineering we exploit our knowledge of physics and the natural world to create things that never existed before, whereas in computing we rely on our understanding of logic, organization, and complexity. Clearly there are many areas of technology development, like in robotics and automation, where both sides play an important role and there is a kind of convergence, but nevertheless I believe the core disciplines are different. Just like the brains and brawn in our own bodies, neither one can exist without the other but yet they are not the same thing.
Having said that, I find it interesting to note how differently engineering and computing are treated at Michigan Tech, and probably at a lot of universities around the country. Engineering is a big piece of what we do, and it is concentrated almost exclusively within the College of Engineering. We have well-organized and highly regarded programs. Corporate recruiters come from far and wide to our highly successful Career Fair and related events to hire our engineering graduates. Even architecturally the campus seems to be organized around the departments in the College. All of this is very gratifying as you might imagine for our engineering departments and the chairs like me.
Computing, on the other hand, does not enjoy this same level of cohesion. Make no mistake: there is a lot of talent in computing at Michigan Tech, and nothing I say is meant to disparage my colleagues or their fine work. My comments here are really about organization and attitude. You see, at Michigan Tech everyone thinks they can do computing. We see computing programs of one sort or another in every single college and school in the university, and in almost every department. As mentioned above, this may be just a consequence of history, where engineering grew up in one century and computing in another, but I think there is something more at play here.
I would assert that, while engineering and computing are both challenging and difficult fields that when done properly require a lot of hard work and preparation over many years, the initial barrier to entry in computing is much lower than it is in engineering. Think about it. To get into engineering there is a long chain of prerequisite topics going back to high school and middle school, in calculus, differential equations, physics, chemistry, not to mention newer courses in engineering design. On the other hand, the only thing one needs to write the first lines of computer code is the ability to think in an organized way about abstract concepts of variables and operations and doing things in sequence. In my own experience as an undergraduate, it took me a couple of years to get to the point where I could design an electronic circuit, but in my freshman year I was taking courses in computer science and by the end of that first year I had written some pretty substantial programs in PL/1 that actually did real things. Let me be clear: I am not saying that the professional practice of computing is any easier than the professional practice of engineering. I am only saying that it is easier to get started.
Let me give a couple of analogies outside the world of STEM. First, in music. It takes year to learn to play an instrument, and the early going is particularly tough for instruments like violin or saxophone (not only for the student but the parents!) You just have to have faith that eventually all that hard work is going to pay off. Vocalists have no such problem getting started. Everyone can sing, right? Little kids get started in choirs in schools and churches, and it doesn’t take much to put on a performance that everyone can enjoy. Of course, fast forward twenty years and you realize that being a good singer is really, really hard, just as challenging as being an instrumentalist, and only the best can pull it off. I find it ironic that in shows like “American Idol” and “The Voice”, which I used to watch more than I do now, the singers get all the glory and the instrumentalists work like dogs, performing amazing feats of musicianship in the background with hardly any recognition. Perhaps there is more to this analogy with computing and engineering than I care to think about.
Consider the two winter sports of hockey and curling, both popular here in the Copper Country. The learning curve for hockey is long and steep, involving hours of ice time for children and the parents that have to shuttle them around. I have a number of friends here who do play hockey, including colleagues in the ECE Department, and they have been doing it a long time. I realized early on that I was not going to be able to join in on the fun, not without a major investment of time and effort that probably would not be wise for a new department chair. [When I was interviewing for this position, someone asked me if I played hockey, and when I said I did not skate very well, they said that’s OK, you can be goalie.] Shortly after I arrived in Houghton, I learned that there was a curling league in Calumet. I took up the sport, joined a team, and right away I was out on the ice one night a week in the winter. It was fun! Now if you have ever watched curling during the Winter Olympics, you can tell that it requires a lot of skill and precision, and that the experts have been working at it their entire lives. But that does not deter amateurs from going out on a weeknight and throwing the stone down the sheet. Again, it is not that curling is easier than hockey, it is just a lot easier to get started. As a coda to that story, after about 7 years of curling I realized that I was really not very good, and furthermore given time commitments to other activities I was not willing to make the investment of time and effort to get better. So I gave it up.
Back to engineering and computing: because of this substantial difference in the barrier to entry between the two fields, it is relatively easy for smart professionals in engineering, science, and other fields to introduce some aspect of computation into their work. In fact, we hear it all the time: computing is everywhere, and everyone needs to learn some level of computer literacy. I actually do believe that to a certain extent, the same way I think a well-educated person should know how to read and write and think both analytically and quantitatively. However, being computer literate does not make one a computing expert. That is the trap I think we have fallen into: we can all write computer programs, but we often do not see the difference between what we do and what the pros do. I used to think I was a pretty good programmer – one project from 20 years ago was an 8000-line MATLAB program for the automated analysis of DNA fingerprinting gels. It was complicated and drew on a lot of engineering analysis, and I was really proud of it. But I also realize now that it was nowhere close to modern standards for software engineering in terms of provable correctness, reliability, and maintainability. This is just one example involving programming, and actually today the field of computing is much bigger than computer programming. Computing visionaries today are considering all sorts of things that will be made possible by essentially unlimited and free storage and bandwidth, and that’s a whole lot more than programming – it’s an entirely new world. Many of us in engineering need to be thinking in these terms.
My concluding messages today are that first, engineering and science professionals need to be aware of the importance of computing and embrace the notion that computing its own thing, something that should be considered parallel to, and complementary to, the discipline of engineering. Second, and this is the main message: just because is it easy to get started writing computer programs, that does not mean it is easy to become a computing professional. Computing is a challenging field with far-reaching influence in today’s society, and there is a level of expertise to be reached that requires every bit as much commitment as that required in other fields. Michigan Tech would do well to take the steps necessary to make that fact obvious. Engineering and computing professionals need to have respect for one another, and that respect should be reflected in our research programs, our academic programs, and even in the organization of the university.
Daniel R. Fuhrmann, Dave House Professor and Chair
Department of Electrical and Computer Engineering
Michigan Technological University