Computer Engineering and Computer Science - Similarities and Differences
Students considering a career centered on computers and computing often ask for clarification about the difference between computer engineering (CEN) and computer science (CS). There are philosophical as well as practical answers to these questions. Both CEN and CS study the use of the digital computer as a tool that makes possible much of modern technology and the overlap between the two fields is significant. Both disciplines study the inner workings of computers and both study hardware as well as software aspects of computer systems. The differences are those of emphasis. Students in CS, CE, or Electrical Engineering will all study programming and basic computer operation.
Computer Science is traditionally more concerned with the theoretical underpinnings of computation and of programming; thus one typically finds courses in programming, algorithms, numerical analysis (how do you guarantee a number produced by a computer program is accurate), and the theory of computation (what can and cannot in principle be computed) in Computer Science departments. Many CS departments at U.S. universities were offshoots from math departments in the 1970s, and the emphasis on providing a rigorous mathematical foundation for the computing disciplines is still evident in many CS curricula.
Computer engineering programs largely developed in engineering departments strong in electrical engineering. Computer Engineering focuses on the practical aspects of development and use of computers, and so courses in digital logic design and processor interfacing which build on an engineering student's knowledge of electronics and circuits are typically found in CEN programs. Computer Engineering programs also often have strong ties to solid state physics and devices programs where the details of actually manufacturing integrated circuits are studied. At the intersection between CEN and CS are courses in computer architecture (the basic construction and low-level programming of computers) and operating systems, which are as likely to be found in either or both programs.
At UMaine, Computer Science is a department in the College of Arts and Sciences, while Computer Engineering is a program within the College of Engineering. Computer science majors follow the Arts and Sciences curriculum while Computer Engineering majors follow an Engineering curriculum. The difference between these two degrees is the difference between the two colleges: the aim of science is to deepen a basic knowledge of a specific field, while the aim of engineering is to combine innovation and technology.
Computer engineers build hardware while computer scientists generally do not. However, computer scientists certainly know enough about hardware to analyze computer system operations and to interact with hardware engineers. Computer scientists know more about underlying theory of computation, programming languages, and operating systems.
While computer engineers often work as programmers, most system level programs such as programming languages and operating systems are designed by computer scientists. However, computer engineers usually write the programs for computer-based systems.
Since engineering is the application of the principles of basic science to the solving of problems within constraints (that is, building things!), computer engineering is engineering applied to computers and computer-based systems. In other words, computer engineers build computers such as PCs, workstations, and supercomputers. They also build computer-based systems such as those found in cars, planes, appliances, electronics, phones, communication networks, and many, many other products. Computer engineers typically design not only the hardware, but also much of the software in computer-based systems.Thanks to Duke University, Politecnico Di Torino, and the University of Huston for some of the language paraphrased here.