Originally Posted by EricH
(computer engineering builds the computers that computer science programs and electrical engineering wires together; mechanical folks have to make sure that nothing breaks while it's in operation).
As a computer engineer (and computer scientist) I would like to clarify a little.
Computer Science- Focuses on software and firmware with very little work in hardware. This can range in level anywhere from low level hardware control languages up through high level theory and algorithm design.
Electrical engineers- Focus on hardware design, including computer design. Hardware design can range anywhere from PLCs through Electric power. Electrical engineers traditionally work only in the hardware realm. However you would be hard pressed to find an EE program anywhere that you can make it though without a working knowledge of programming.
Computer engineers- Cover the gray area where software meets hardware. The CompE curriculum usually reflects this, during the first 2 or 3 years time is split almost equally between CS and EE courses. From a career perspective a CompE could work on anything with a software/hardware interface. Designing hardwae or writing software. CompE isn't a brand new discipline but it is relatively young. The interface between software and hardware has become very blurred and their is increased demand for people who have a firm grasp of both sides.
Mechanical Engineers- Break things and blame it on the software/electrical guys (I kid)
Lons story short CompE is a subset of the combined CS/EE curriculum. I know that some companies (mine included) are still trying to work out what CompE's are really capable of. With the exception of me every one in my department is a Programmer or an Electrical engineer, when there is a project that requires hardware and software they are paired together and each do their part. When I was hired I was used almost exclusively as an EE, I slowly started taking over the embedded software parts of my projects, and now when schedule allows I am asked to handle the project completely, from board design through GUI programming.