While John Q. Public is starting to understand that Computer Scientists are not
programmers, many people still conclude incorrectly that "Computer Science" and
"Computer Engineering" describe the same field and the terms are interchangeable.
Computer Science is rooted firmly in math, specifically discrete mathematics.
It builds systematically from 1+1=2 and the definition of even
and arrives at algorithms, memory management, and image recognition. Every
component of Computer Science study or development builds on previous
concepts which in turn are based on earlier concepts, and eventually you arrive at
basic integer proofs. A vast majority of the work in Computer Science exists in
a world full of absolutes; everything is binary, digital, logical. All of the
theory is implemented, tested and using the best available tool for working with
discrete numbers: computers.
Computer Scientists use computers to solve problems.
On the other hand, Computer Engineering (predominantly an offspring of Electrical Engineering) deals with things in the "real" world:
circuits, radio waves, and light. Starting with Physics concepts like
electromagnetism, Computer Engineers design integrated circuits, networks,
communication devices, and computer architectures. Almost every Computer
Engineering design has physical ramifications which must be taken into account
-- resistance, capacitance, attenuation, yield. Like Mechanical Engineers,
Computer Engineers design things on paper, build them, then test to see how the
implementations fare compared to the theoretical designs; if the creation is
within acceptable bounds it is kept, otherwise the plan is refined and another
object is fabricated.
For the small amount of time when Computer Engineers are working in the digital world and not the physical one, most of their effort is spent on small computer systems (e.g. embedded controllers). Where C, Java and Perl may be utilized by Computer Scientists to implement their projects, Computer Engineers are accustomed to working in Assembly for a particular platform. They write small amounts of code for the computer that adjusts the thermostat or the fuel/air blend in an automobile engine.
Computer Engineers solve computer problems.
Many projects in both the academic and corporate world require collaboration
between specialists in Computer Engineering and Computer Science -- each
working on their own portion of the project just like Mechanical Engineers and
Civil Engineers working together to design a skyscraper or bridge.
Computer Engineering is not the same as Computer
Science.
Is my inferiority complex showing?