<p>Everyone describes CompE as a cross between EE and CS, and that CompE's are more about hardware while CS majors focus on software.</p>
<p>Can anyone give a more specific comparison of these three related majors? Including salary and employability, if possible.</p>
<p>Thanks!</p>
<p>The CmpE curriculum is dependent on the school; from my experience, in general its slightly diluted EE plus several CS/programming classes. Some schools have one single "Electrical and Computer Eng'g" dept/degrees. Others have no CmpE degree, and have EECS departments.</p>
<p>EE is the closest to physics; includes solid state/nanoelectronics, semicond. device fabrication, electromagnetics. As an extension, I'd also add analog/mixed signal circuit design, communications, DSP.</p>
<p>CmpE usually involves more digitial electronics. Computer architecure/assembly coding. VLSI design. FPGA design. Microcontroller coding. VR/Haptics. Basic exposure to OOP, software engg fundamentals, possibly operating systems.</p>
<p>I am not a CS guy, but obviously they code much more than CmpEs. Theyll certainly do all of the last sentence in CmpE above + basic comp arch. Algorithms. AI. Any CS people want to chime in here?</p>
<p>Its difficult to pigeonhole all these areas, and like I said, it does somewhat depend on the school.</p>
<p>Employability is currently fairly good in all 3 areas, and there has been a recovery since the dot com bust. Avg salaries are comparable for all 3 areas. It can be argued that CmpEs might be slightly more versatile than pure EE/CS because of its hybrid nature - I know of CmpEs who are working for software as well as hardware companies, much more than say, EEs that are coding OSes or CS degree holders designing semicond devices. Of course, these people, like me, have begun their careers; there is no reason, with time and experience, that one can not cross over at least somwhat between these domains.</p>
<p>CS is abstract in nature. Fundamentally, you need to care and know about the basics of the computer's hardware architecture so that you can exploit its capabilities. At the operating system, device driver, and compiler level these things are very important.</p>
<p>Once you cross over into the realm of "general" software, it's all about representation, organization, and efficiency with a limited amount of resources. By representation I mean data structures. By organization, I mean the design of the different application components. By efficiency, I mean algorithms.</p>
<p>I'm oversimplifying, but that's the basic gist.</p>