Since the tender age of four, I have always been in awe with technology, especially computers. They have been an integral part of my life. I am positive I was not alone when I said, “I would like to do something with computers when I grow up.” And through searching and various single-day research expeditions into the internet, I’m sure we’ve all come up with a single, ominous answer: Computer Science. However, me being the sh** disturber that I am, I will attempt to turn your beliefs upside-down. Try to convert the heathens, so to speak, to a little discipline I like to call Computer Engineering.
Computer engineering is defined as the discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. Computer engineering has traditionally been viewed as a combination of both computer science (CS) and electrical engineering (EE). It has evolved over the past three decades as a separate, although intimately related, discipline. Computer engineering is solidly grounded in the theories and principles of computing, mathematics, science, and engineering and it applies these theories and principles to solve technical problems through the design of computing hardware, software, networks, and processes. This makes Computer Engineers particularly versatile upon graduation.
With the ubiquity of computers and computer-based systems in the world today, computer engineers must be versatile in the knowledge drawn from standard topics in computer science and electrical engineering as well as the foundations in mathematics and sciences. Because of the rapid pace of change in the computing field, computer engineers must be life-long learners to maintain their knowledge and skills within their chosen discipline. The education for Computer Engineers can be broken up into:
Just from this information alone, it is quite evident that one would receive quite a well-balanced education in all things computer and technology. Which is the goal of Computer Engineering: to create individuals able to stay in sync with recent technological developments pertaining to their field. Of course, a Computer Engineering degree program is completed at an accredited university. However, these programs vary, and I would suggest checking out your university of choice to get the specifics on the Computer Engineering program besides the core curriculum(above). If you would like to register as a Professional Engineer(P.Eng), you should consult your regional regulations, though being a Professional Engineer is not required to work, and in my opinion, pertains more to the other engineering disciplines.
First off, a Computer Engineering degree is compatible to a Computer Science degree. So, you can get any sort of programming or developer or software engineering job that a Computer Scientist could get. Now, since that’s all cleared up, we’ll move into the jobs that are more exclusive to Computer Engineers. These generally involve hardware or hardware-software integration. This can be from making various components for personal accessories (such as that pretty iPhone) to programming firmware or both together. If you look up to our core-curriculum list above, you’ll see what a Computer Engineer is taught, and most of the objectives pertain to a job. Basically, anything that involves applying computer systems to solve a problem is a job for a Computer Engineer. Whether it be working for Google on that next hit web application or at Intel working on that new microprocessor, Computer Engineers are there.
By now, you have an idea of what Computer Engineering is, hopefully. Since you are viewing this Computer Science blog, I do assume you know what Computer Science is. Without further a due, the comparison between Computer Science and Computer Engineering shall begin.
Computer Science has a pure focus on the theory and application of computation. It is generally focused at the more abstract ideas, and focuses on how computation should work and so on.
Computer Engineering uses aspects of Computer Science and Electrical Engineering to solve problems. This is the more “practical” option. It focuses more on the concrete ideas, such as how things actually work.
Basically, if you are more interested in theory and the application of that theory, Computer Science is your choice. If you are more interested in building things and applying everything you learn into a practical setting, Computer Engineering is your choice.
If you wish to read more on the differences, I recommend this discussion.
It would have been quite impossible to include everything on this subject, even just my own opinions and such, on a blog post. However, I feel that I have covered some basic points to spark interest in some people. But, all of you have the opportunity to read up on Computer Engineering and compare it to Computer Science, if you so desire (see the bottom of the post for the main resources I used).
Time for a bit about myself. My name is Brandon Skinner, and I am from Newfoundland, Canada. I have been programming since the tender age of 10, and I have branched off in ways I never thought possible. Personally, I will go to university for Computer Engineering. However, I am interested in all aspects of Functional Programming, as well as many AI topics. I do feel that Computer Engineers don’t get the respect and admiration they deserve. Their skills allow them to use their understanding of the underlying system and of algorithms and such to create some crazily efficient code. I know this for a fact, as I did work in the Assembly language and low-level C for quite some time, and the things you can do and control are amazing. I can only wonder what a professional could manage.
References made to IEEE Computer Society:
compare Computer Engineering with related fields in 6 Degrees of Computer Science.