When I taught the third year undergraduate course on software engineering at the University of Victoria (UVic), I began by asking students if they could define the topic of study, software engineering. Many of my students were in a formal engineering degree program; others were computer science majors within the Faculty of Engineering. Surprisingly, they struggled to offer a satisfactory definition of what it was they were studying.
So we start with engineering, which I take to be the building of useful tools for humanity. It follows that software engineering is the building of useful software tools for humanity. But isn’t that just programming? How is software engineering different from computer science?
A common public misconception is that computer scientists design and build computers. Designing computer hardware is actually the job of computer engineers. Computer science is about software: the mathematics of computation, the science of abstraction, and the art of programming. The vast majority of computer science graduates end up in careers as software engineers, writing practical software applications for other people to use.
Fred Brooks suggests that the scientist builds things in order to study, whereas the engineer studies in order to build things.[1] In order to build software systems, the engineer must study computer science. Lots of computer science. Thus the reality is that most practicing software engineers are computer science graduates—not formally trained engineers.
This excerpt is from the book Lord of the Files, published by Thought Pilots.
Want more? Buy it today at CreateSpace.
Join the discussion on Facebook.
[1] Frederick P. Brooks, “The Computer Scientist as Toolsmith II,” Communications of the ACM, 39 (3), 1996, pp. 61-68. He further postulates that by any reasonable criterion, computer science is not a science—it is engineering.
0 comments:
Post a Comment