What is the difference between computer engineering and computer science?
You know, this question is actually a really tricky one to answer for anyone who is not a part of that world. And those who are "part of that world" seem to have trouble explaining it in ways that everybody else can understand. I'll give it a shot, though I profess to not totally having a feel for it myself.
Computer Engineering -- This seems to be the more "practical" of the two. People who work in computer engineering seem to focus on the design of computer hardware, circuitry, and software. It deals with developing computer systems that help automate our everyday lives. In this way it is "practical..." interested in the application of computer science into workable products.
Computer Science -- From what I can understand, this is the more theoretical of the two. It focuses on information. Though the word "computer" is in the name, the computer is more of a tool for the greater purpose...in the same way a telescope is a tool for astronomy but is not astronomy itself. From what I can tell, Computer Scientists are less concerned by the practical applications/development side of things and are more concerned with the philosophical/informational side of things.
Of course, the two bleed into each other, and it is possible to be interested in both because one sort of feeds the others. Today's theoretical is tomorrows practical...it just takes someone to develop it and someone to dream it up.
A text book definition of engineering is: application of science to the design, building, and use of machines. For example, electrical engineering deals with electrical machines, and computer engineering deals with computing machines. In the beginning of engineering programs, there is considerable overlap between various branches of engineering. Then you begin to focus in more and deeper into a particular area. One thing to remember about all branches of engineering: you will take many math classes, and you will learn new mathematical techniques in your engineering classes. If you like math, engineering is a good choice.
The programs for the study of computers basically come in two flavors: computer engineering and computer science. The two fields have considerable overlap but the basic difference is that computer engineering has a greater focus on the computer hardware and computer science has a greater focus on computer software. Either way, you would work a lot with computers.
Computer hardware is the physical computers and computing machines. Thus, computer engineering deals with the fundamentals of computer design. You would study the design, construction, and testing of both basic and sophisticated computing machines. You would also learn computer communications and networking, including the Internet. All in all, you would spend considerable time in laboratories to first learn how computer subsystems work and then to test your own designs of computers and computer networks. You would also learn computer software, but not to the extent you would learn if you were pursuing computer science. This is where the overlap with computer science comes in.
Computer software refers to the programs that make the computer hardware function. Windows 98 is an example of a program, called the operating system, which makes your PC behave in a particular way. Microsoft Word, Netscape Navigator, and ICQ are examples of programs, which are also called applications. Applications exploit the behavior of the computer, after the operating system has been installed, to perform certain functions in a particular and desired fashion. Computer programs are written in many languages, such as C++, Visual Basic, Java, etc. A computer science program will teach you algorithms and techniques for creating these applications. You will spend a lot of time on the computer to write and test your programs. You will also learn some of the basics of computer hardware, which is thus an overlap with computer engineering. But your main interaction with computers will be more as a user and code developer than as a builder; that is, you will be trained to be a programmer, not a manufacturer.