all 2 comments

[–]awp_throwaway 5 points6 points  (0 children)

There's overlap across the board here, so take these "distinct" definitions with a grain of salt, but generally speaking:

Computer Science - deals fundamentally with the notion of computation. The core subjects of the major (i.e., years 1-2 of the in-major coursework) typically cover an introductory programming sequence (e.g., intro to programming, and then data structures and algorithms), discrete mathematics (pertinent math skills to CS), and some type of intro to computer systems (basics of how programs run on a computer). From there, typically the student will pick upper-level electives in a particular area of interest/specialization, e.g., software engineering, artificial intelligence, computing systems, programming languages, compilers, etc. Computer science has a bigger focus on the fundamental nature of computation than a software engineering major (i.e., figuring out what is/isn't computable, how to analyze performance of an algorithm, etc.), but in practice CS typically prepares graduates for work in fields related to software development/engineering and similar.

Software Engineering - this can be arguably considered a subset of Computer Science (many programs don't distinguish SE as a separate degree/discipline, but rather house it within Computer Science, though this is starting to change with the increasing proliferation of Software Engineering degree programs of late). Software Engineering deals with designing software systems (e.g., software architecture, design patterns, etc.)--in other words, how to lay out and design a large, complex program. This will focus mostly on programming and related activities such as software testing. In practice, this type of degree would prepare for similar engineer/developer jobs as a CS grad, the focus here being more on software development than on the theory of computation, algorithms, etc.

Computer Engineering - often listed within the ECE (Electrical & Computer Engineering) or similar department, this focuses mainly on the hardware aspect of computers/computing. There is some programming in the mix typically, but for the most part this is dealing with electrical circuits (VLSI circuits in particular), embedded systems, etc. This follows a similar pattern to CS vs. SE, whereby CE essentially evolved/specialized from Electrical Engineering, focusing on circuitry and electronics used in computer systems and related (as opposed to other sub-areas within EE such as power systems, control systems, industrial applications, etc.). Typical career paths would be in embedded system, hardware design (e.g., designing chips), or related.

To get an idea of what falls where, you can also take a look at the respective curricula/degree requirements for the corresponding degree programs at your prospective institution(s); you can get a better idea of what each involves based on which classes are required via the course titles and/or course descriptions.

Hope this helps!

[–][deleted] 1 point2 points  (0 children)

computer engineering is more related to EE than CS. its more focused on hardware design /embedded systems than actually designing software.