Relationship between computer engineering (CE), software engineering (SE), and computer science (CS)
Scientists focus on discovering something new about the real or virtual (inside a computer) world.
Engineers focus on solving a problem, building a product, and/or helping somebody.
Computer engineers (CEs) combine hardware (electronics, sensors, processors, etc.) and software skills to design the computing component of a wide variety of products such as iPads, video chips, smartphones, and flight control systems. This field is also called embedded systems, recognizing that the computer hardware/software system is embedded in a wide range of products.
Software engineers (SEs) focus on design, development, and evolution of complex software products in response to customer requirements. SEs bring their software expertise to a wide variety of fields, writing software to improve our lives through entertainment, increased efficiency, and attainment of new knowledge. The software may run on a mobile phone, tablet, game console, desktop computer, webserver, or a large cluster of servers.
CE and SE have moderate overlap. While both degrees involve a significant number of software-related courses, they apply them differently. They both build on computer science (CS) knowledge.
The engineer emphasizes product design (an important skill to employers) while the CS degree has additional emphasis on theoretical underpinnings. MSOE does not offer a CS program, but our SE program comes closest. The SE program builds on the theoretical foundation of computer science with classes in data structures, algorithms, two terms of discrete math, and a variety of electives; CEs at MSOE also study data structures and take one term of discrete math.
Incoming freshmen do not need to know programming to pursue one of these majors. While programming experience is an asset and will give you a leg-up in certain freshman classes, it is not required or expected, and many CE and SE freshmen have little or no programming experience.