I was listening to the most recent episode of TWiT’s Security Now, Episode 225, Same OriginTroubles. For the first seven or so minutes of the show, they found themselves on a bit of a sidetrack, they were talking about what is engineering, and what is required to be an engineer. As such, I thought this would be an interesting discussion to have, especially when debating the difference between Computer Science, and Computer Engineering.
The standard repository for all of human knowledge (wikipedia), has this to say on Engineers:
Engineers work to develop economical and safe solutions to practical problems, by applying mathematics and scientific knowledge while considering technical constraints.[1] [2] The term is derived from the Latin root “ingenium,” meaning “cleverness”.[3] The industrial revolution and continuing technological developments of the last few centuries have changed the connotation of the term slightly, resulting in the perception of engineers as applied scientists. The work of engineers is the link between perceived needs of society and commercial applications
That seams like a valid enough place to start. Engineering is the useful application of science. So, while scientists are always trying to break things down, and get everything to the smallest possible level, engineers are taking these discoveries, and building them up, in order to make a richer, more powerful world. Seams simple enough. Most people in engineering degrees are going to be screaming at me right now, saying I should talk about black box abstraction, but to them I say that will be a topic for another day. (For those of you who are interested though, black box abstraction is a process in which you take the gritty details of a machine, and simply remove them. In it’s place, you put a spot for inputs, outputs, and enough documentation to let your users, whether they be end users or more developers, know how to run the apparatus, you can find more information by watching this video from MIT). Also, those who are particularly cranky about the pseudo debate over evolution and ID (intelligent design) will be begging me to talk about how this either proves that evolution or ID existed and the other could not have possibly happened. Alas, to them, I also say no, this is another topic for another time. If you would like to discuss this, there is a comments section below.
So, this line breaks down d
ramatically when we discuss computers. In particular, where does computer engineering end, and computer science begin. Or, should we go along with the philosophy of “Hackers and Painters” and state that there is on such thing as computer science, but only hacking, and systems administration. It seams as if academically, the dividing line between computer science and computer engineering is software and hardware. If you are working more with hardware, you are doing computer engineering, and if you are thinking about software, it’s computer science. I would like to state that that is completely and utterly untrue, at least based on this definition of engineering, it is false.
Before I go any further in discussing the matter, I must state that like everything else in this world, I am incredibly biased. I am currently majoring in Computer Engineering, however, I am debating about double majoring in mathematics as well. If I don’t double major in math, I will certainly minor in it. As such, I tend to think that that Computer Engineering is something that you can get a degree in, where as computer science is something that can only be learned as a pseudo hobby. Not something you do in your spare time, but something that can only be learned by doing it. Analogous to getting a degree in entrepreneurship, why would anyone ever want to do that? If you want to be good at start ups, you need to play the game, not get a degree in it. Likewise, if you want to be a good computer scientist, or ‘hacker’, you need to practice, not simply sit and pontificate on some algorithm. This way of thinking has me so biased in fact, that I would rather hire someone who has got a degree in mathematics, and has dome series computer hobby projects, than hier someone who has got a degree in computer science, at least, depending on the job I wanted done. If I wanted a computer designed, I would rather higher computer and electrical engineers.
Well, based on the previous paragraph, you can see where I draw the line. I think that computer engineers, whether they be software or hardware engineers, make things. They are the people that designed the computer as we know it. They tend to have a low level knowledge on how the system runs, but can also operate on a higher level. On the other hand, computer scientists think of the computer as a black box. Yes, while engineers also think of stuff on as a black box, after all, if any one engineer were to suddenly be able to hold the entire workings of a computer down to an atomic level, or even something like a desktop computer being thought of on the capacitor level, would simply loose their mind. Believe me, I’m trying to do it, and I have lost my mind already, does that stop me from trying though? No, not really. Still, computer scientists look at a computer and see a machine that is capable of calculations. They are then handed a toolset or an SDK, at which point they mathematically figure out what they want to do. Oddly enough, this sounds like engineering too me. So what else separates compute science? Well, system maintenance, and other IT based stuff. Computer Scientists work to try to make a computer system, such as Unix or NT, stick together, so that it will be sustainable in the future. However, that still sounds like trying to build something that will last, based on engineering principles. Thus, we have only broken down computer science into two parts, comptuer engineering, and system administration, in which a person has little experience on designing computers, and only has used them to such a great depth, that he knows how they work.
Thus, from the great words of the people who made the Wizards’ Book, computer science isn’t really about science, nor is it about computers. End of story. I suppose this is where I am supposed to rap things up and make a nice conclusion. But I won’t, I’ll just end it like that. Do you think I’m off my rocker?