Computer engineering as an academic field encompasses the broad areas of computer science and electrical engineering. Computer engineering is defined in this report as follows.
Computer engineering is a discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. Computer engineering has traditionally been viewed as a combination of both computer science (CS) and electrical engineering (EE).
Its quite difficult to make a clear demarcation. However, engineering requires basic knowledge of circuit, system, electromagnetic, communication, embedded system design, Advanced digital systems, FPGA, VLSI, ....
That is hardware with engineering design concepts.
Computer science theme is based upon software concept.
In my case I was an engineer originally (aerospace and mechanical) that wound up working on embedded systems and studying both electrical engineering and computer science, but completing advanced degrees in computer science. Most often computer engineers work on the design of computers or the embedding of computers into products and systems whereas computer science is much more focused on algorithms and computability theory. However, as others have pointed out, there's lots of cross over. To add to confusion, some universities have computer engineering as a focus inside computer science (but mostly when their computer science department is in the school of engineering) and some have it as a focus in electrical engineering. To me, a computer engineer has focus on the computing platform including hardware, firmware and software, whereas computer science often views hardware as an abstraction and focuses more on algorithms and applications (software). Computer science programs outside the school or college of engineering (e.g. in school of natural and applied science) often are considered to be more of an applied mathematics program. The final observation is that the science of computing implies theory of computability, whereas engineering implies the practicalities of building a device to provide computing. That leads to an almost deeper question - is all of engineering really just applied science? I would say no, but I can see making an argument like this.
Computer Science is the study of algorithms to represent and transform the information which includes theory, design, implementation.Computer Engineering is the design and prototype of computing devices and systems.
Computer Science is more related to theorical aspects (algo, programming (high level), numerical computing, ..) while computer engineering is more related to hardware it-self (electrical component, ...)
I've found this link very useful http://www.pratt.duke.edu/undergrad/cs-vs-ce
Computer Engineering is an ill-defined field. Usually it translates to the development of actual computer infrastructure and hardware. Computer Engineers are usually Electrical and Computer Engineers, since they deal mostly with the electrical aspects of working with hardware and developing new platforms for computing.
For computer scientists, on the other hand, the hardware is mostly abstracted away from them. Computer scientists mostly work within abstract problems and merely use computers as their tools to carry out computations. Computer science is also the field dedicated to studying and developing algorithms and abstract ways of organizing data.
Though some people will tell you computer scientists study how to write software, this is not entirely true as these are the people called software engineers. Some argue that software engineering is a subset of computer science, but their line of work is deemed more applications-based, whereas the work that computer scientists do is more theoretical.
In my experience, CE is more technology-oriented than CS, which is instead more focused on theoretical aspects. I'm using "more" intentionally, because it clearly depends on who you talk to. It also has something to do with one's background: C Scientists come from Applied Maths, C Engineers come from Electrical Engineering. They look at the same problems from a different perspective.
Computer engineering as an academic field encompasses the broad areas of computer science and electrical engineering. Computer engineering is defined in this report as follows.
Computer engineering is a discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. Computer engineering has traditionally been viewed as a combination of both computer science (CS) and electrical engineering (EE).
The definition of Computer science offered by CSAB, the organization that accredits Computer Science programs in the United States [CSAB, 1997. "Defining the Computing Sciences Professions", http://www.csab.org/comp_sci_profession.html]:
Computer science is a discipline that involves the understanding and design of computers and computational processes. In its most general form it is concerned with the understanding of information transfer and transformation. Particular interest is placed on making processes efficient and endowing them with some form of intelligence.
In my superfacial understanding, computer engineering is for today's application, whilst computer science is for tomorrow's application or never be usefull. In other words, the former creates money while the latter builds up theory.
Maybe it's worthwhile mentionning that the French for "Computer Science" is "Informatique" and not "Science de l'ordinateur". So a computer scientist would be closer to the INFORMATion aspect (algorithms) whereas a computer engineer would design computers.
Computer science is a part of Computer Engineering which deals with the architecture and technology while computer science focuses on the software programs.
The differences between a science discipline and the corresponding engineering discipline are two-fold.
So, the differences between Chemistry, say, and Chemical Engineering are the same as are the differences between Physics/Electricity and Electrical Engineering. The same is true for Computer Science and Computer Engineering — coming to your question.
First, the difference is technical: Engineers scale up the results from scientists.
Examples: A new, interesting substance in a small test-tube is discovered or invented by a chemist, and an entrepreneur wants one ton of it: the chemist cannot help him, a chemical engineer will need to solve that problem, and many new problems will crop up before he can deliver the goods.
Example: A physicist can demonstrate on the laboratory bench how to generate electricity but only an electrical engineering team will be able to design and build a generator which can supply a city.
Example: A computer scientist can find an algorithm which accomplishes a certain task. A computer engineer, in a team, will be able to design, write, test and verify a programming system that is so large that a single person cannot write it; e.g., programming systems like reservation systems, booking systems, banking systems all have been created by Computer Engineers. Usually, such activity is not the concern of a scientist.
The second difference is not technical at all: Engineers need to be a member of a professional association which requires, by law, that the engineer pledges that he will work with the public always in mind, in particular, such that the public is protected from harm. Generally, a scientist does not have that legal obligation, for him it is a moral/ethical one, but it is at least a responsibility to himself. Many professional associations have formalized this, e.g., the Association for Computing Machinery (an association of computer scientists) has published a Code of Ethics and requests its members to abide by it.
Computer engineering program typically focuses on the practical aspects of development, interfaces and use of computers. Thus the program provides strong background about integrated circuits along with hardware and programming courses.
Computer Science program usually not giving the background of electrical engineering courses like circuit analysis, electrical technology, measurement, communication theory, embedded systems, electromagnetic, control theory and signal processing.