Whats the difference between Computer Engineering and Computer Science? (in terms of majors for college - specifically Carnegie Mellon University)
So according to the first answer, computer programming mainly resides in computer science?
Whats the difference between Computer Engineering and Computer Science? (in terms of majors for college - specifically Carnegie Mellon University)
So according to the first answer, computer programming mainly resides in computer science?
I'm not sure about Carnegie Mellon but the difference when i was deciding was that engineering focused more on hardware and science was more on software. Engineers are practical and physical while scientists are theoretical and virtual.
Computer Engineering may refer to computer hardware engineering (electronics towards computer design) or more commonly to Software Engineering, the discipline that tries to apply the scientific method in the arena of the entire software cycle (analysis, development, testing, manteinance, etc). Computer Science refers generally to the theory underlying the aspects of "computing" understood as the process of executing algorithms in general (by humans, computers or finite automata), so C.S is made of basic disciplines such as linear algebra, algorithm analysis, computation theory, numerical methods, program verification, etc.
While CS will likely involve a lot more programming than CE, it is really important to remember that:
CS != programming
That said, UB Engineering has a pretty good writeup on Computer Science vs. Computer Engineering.
A computer engineering course typically focuses on computer hardware and why it works. Computer science focuses on the brains behind the hardware, and what makes it work. In a computer science course you will look into machine code, assembly, high level languages, and all that fun stuff.
The just of it:
Computer engineering: More hardware based
Computer Science: More Programming based
Both will have a lot of similar topics covered, but computer science is not solely programming there is a lot of theory involved as well. Hardware will be covered in CS but not as in depth as an engineering course.
Are you asking about undergraduate or PhD?
These are two different schools at CMU, with computer engineering being part of electrical engineering. As an undergraduate, this means you will focus on a lot of EE background, and then focus on things like systems and networks rather than algorithms and software engineering.
For a PhD, these are again two very different programs. ECE is closer to EE and you would have quals, and the research areas are more systems-oriented. For CS there are actually multiple PhD programs, and the research areas and faculty are different. Contact me directly if you want some more info; I'm finishing my PhD at SCS.
Throughout my undergraduate CE education, the focus had mostly been on hardware engineering, with sidelong attention given to software engineering. All the basic CS courses plus some of the CS core courses where also part of the CE curriculum. However, the end goal, as I felt it, was to learn a couple of programming languages, data structures, algorithms and discreet maths lightly, and apply that knowledge exclusively to aiding in whatever was done in the hardware domain. Having said that, I do wish I had opted for CS instead.
The answer is that one may actually be more intellectually stimulating, but the other may be more marketable in this weak economy. One may require an advanced degree (beyond BS) to make a decent living, but the other may only require a BS to get you in the door.
Look at the job descriptions for the companies you want to work for, and see which they prefer.
If you like the more theoretical aspects of computers, such as compiler theory and data structures, choose computer science. If you like hardware, such as robotics and embedded controllers, choose computer engineering. They both have significant overlap.
Please choose carefully.
Computer engineering is the study of what is going to be needed to run a particular type of program, e.g. how many Sun 5240's will it take to host the BBC head end servers to handle iPlayer traffic.
Computer science is the study of various aspects of programming providing new techniques that can be used by program builders or providing comparative information on algorithms so that the program builders can make the best choice for a given set of circumstances, think bubble sort versus shell sort, or red black binary trees versus simple binary trees. Don Knuth's gift to programming "The Art of Programming" is a good example of CS at its finest.
Think of the analogy with building. Building science is looking at such things as concrete mixes and building materials, engineering is looking at how those bits and pieces can be combined safely into the large structures needed to create the design as envisaged by the architect.
Edit: That article link in dancavallaro's answer is really good. IMHO Natch. (-:
Then of course we have the software architect whose role is to envisage the client's idea of what they want and create the high level design for the system. S/He is an advocate for the client while overseeing the building of the system.
And lastly, but not leastly, we have the software builders who actually perform the creation of the system. The final lower level elements of the design are their own choices, i.e. their choice of whether or not to use a shell sort or a bubble sort; or to use a map versus a set container, is of no real concern to the client or the architect. Just so long as the system is sufficiently performant and meets the client's requirements.
In this, the software builders rely on the research information provided by the CS guys.
The CE guys are providing guidance on what sort of a platform they are going to need to deploy the system.
HTH.
cheers,
Rob
if you graduate from computer engineering, you will be titled engineer, that is:
if you graduate from computer science, you will be titled scientist, that is:
But today in the market CS is more considered as software-dependent and CE is more hardware-dependent.
cheers