Computer Science vs. Computer Engineering: What’s the Difference?

A question I have gotten a lot lately has to do with the differences and similarities between Computer Science and Computer Engineering. At the risk of over-simplifying the differences, I have written this guide to explain how Computer Science and Computer Engineering are alike and how they differ.

What Is Computer Engineering? 

Computer Engineering is the marriage of Computer Science and Electrical Engineering. It focuses on computing in all forms, from microprocessors to embedded computing devices to laptop and desktop systems to supercomputers. As such, it concerns the electrical engineering considerations of how microprocessors function, are designed, and are optimized; how data is communicated among electronic components; how integrated systems of electronic components are designed and how they operate to process instructions expressed in software; and how software is written, compiled, and optimized for specific hardware platforms. Therefore, computer engineers are electrical engineers who specialize in software design, hardware design, or systems design that integrates both.

What is Computer Science? 

Computer Science is the study of how data and instructions are processed, stored, communicated by computing devices. A modern descendant of Applied Mathematics and Electrical Engineering, Computer Science deals with algorithms for processing data, the symbolic representation of data and instructions, the design of instruction languages for processing data, techniques for writing software that process data on a variety of computing platforms, protocols for communicating data reliably and securely across networks, the organization of data in databases of various types and scales, the emulation of human intelligence and learning through computer algorithms, statistical modeling of data in large databases to support inference of trends, and techniques for protecting the content and authenticity of data. Therefore, computer scientists are scientists and mathematicians who develop ways to process, interpret, store, communicate, and secure data.

Overlap Between the Areas 

Because both Computer Engineers and Computer Scientists ultimately work with data and attempt ultimately to harness meaning from it, there is significant overlap in coursework that students in the two fields take, as well as in the careers they pursue. This does not minimize the distinctive nature of the two disciplines. It simply acknowledges the fact that these types of computer professionals find context and purpose in similar kinds of projects or in different aspects of the same kinds of projects.

A Potentially Oversimplifying but Useful Distinction

Both Computer Engineers and Computer Scientists advance computing technology and solve problems using computing technology. If we consider computing technology in terms of scale, Computer Engineers operate often at the microscopic and macroscopic ends of the spectrum, whereas Computer Scientists work in the middle parts of the spectrum. More specifically, Computer Engineers deal with the physics of semiconductor electronics so that they may design hardware from the integrated circuit level (small), as well as with the integration of hardware and software optimized to run on it to realize complete, special-purpose computing systems (large). Computer Scientists write the software, design the databases, devise the algorithms, format the communications, and secure the data that are processed by the hardware to make the integrated system function.

compengcompsci

A Concrete Example: An iPhone

Consider an iPhone. Apple employs both Computer Scientists and Computer Engineers to design each new version of the iPhone. Computer Engineers (and Electrical Engineers) designed the chips that house the integrated circuits that make the iPhone’s various components (cell radio, screen, controls, memory, microprocessor) function, and they figured out how to get the various components to work with each other. That involves looking at the device at both the microscopic level and the integrated systems level. Computer Scientists wrote the operating system that manages the memory and concurrently running applications, the apps in the app store that run on top of that operating system, the packing and unpacking of data into packets for network communication and the encrypting of data so that prying eyes can’t see it. The computer scientists provide the glue pieces that bring turn the computer engineers’ beginning product – the component designs – into the computer engineers’ end product – the device on which people text, browse the web, and play Angry Birds.

From this example, it is easy to imagine, with so much dependence on each other’s functions for realizing a finished product, why there is significant overlap in the coursework Computer Engineers and Computer Scientists take, and in the career opportunities they pursue.

A Helpful Perspective on Computer Engineering

I found the website http://www.ohio.edu/eecs/undergraduate/documents/upload/whatCpEsDo-better%20version.pdf provides a particularly helpful description of Computer Engineering that identifies the kinds of jobs Computer Engineers work, the companies that hire them, and the salaries they earn.

That page begins with a helpful list of specialization areas in Computer Engineering. I have copied that list of specializations here, but I have marked with an asterisk (*) those in which Computer Scientists also specialize. In all cases of overlap, Computer Scientists focus more on the software development aspect of the specialization, and Computer Engineers study the hardware design and integration of hardware and software needed to implement that specialization.

  • Microprocessor and microcontroller systems
  • Assembly language (*)
  • Coding, cryptography, and information protection (*)
  • Distributed computing (*)
  • Computer vision and pattern recognition (*)
  • Computer graphics and multimedia applications (*)
  • Internet computing and wireless networks (*)
  • Computer architecture and embedded digital systems design
  • Network security and privacy (*)
  • Real-Time Systems (*)
  • VLSI, VHDL, and ASICS design
  • Computer internetworking and Network Protocols (*)
  • Embedded software for real-time microcontrollers (*)
  • Algorithms, compilers, and operating systems (*)
  • Human-computer interaction (*)

That same website presents a number of other interesting data on Computer Engineering. For example, this table expresses the relationships among Electrical Engineering, Computer Engineering, and Computer Science in terms of the classes each major takes and the percentage of those classes that fall in the categories of hardware and software.

hardwaresoftware

You see the “computer science is software and computer engineering is hardware” theme play out once again in this table. That is the easiest way to distinguish the two fields. And yet, there is enough of an overlap to ensure that both kinds of students will find plenty of opportunity in a wide range of careers in the computer field.

 

Ray Klump

About Ray Klump

Professor and chair of Mathematics and Computer Science Director, Master of Science in Information Security Lewis University http://online.lewisu.edu/ms-information-security.asp, http://online.lewisu.edu/resource/engineering-technology/articles.asp, http://cs.lewisu.edu. You can find him on Google+.

3 thoughts on “Computer Science vs. Computer Engineering: What’s the Difference?

  1. Alina
    November 8, 2014 at 8:43 am

    Thank u, the article as well as the above comment is really helpful.

  2. rajan
    May 14, 2014 at 5:54 am

    Dear sir;
    you given the difference between both degrees in educational matters i would like to about the value of degrees in job opportunities.

    Thank you

  3. Randall Miner
    April 17, 2014 at 2:25 pm

    Greetings everyone,

    I have a BSCE…ie., Computer Engineering vs. Computer Science. The simplest way I can think of to explain the difference between a BSCE and BSCS to those considering these two degrees is the following:

    A BSCE degree will include some of the coursework also required for the BSEE (electrical engineering degree). This will prepare the graduate to work at companies that develop products consisting of software that directly controls hardware. Some examples are Motorola, Nokia or texas instruments.

    A BSCE degree will include very little if any of the hardware or electrical engineering courses required for the BSCE degree. Instead, more computer science coursework such as operating system design, compiler theory or advanced algorithm design will be taken instead. This is the best degree for working at a company such as google, amazon or Citrix.

    Which is “best” depends on your interests and where you want to work. In my experience, many companies need both kinds. While most of the engineers at Citrix never need to interface to hardware, a few do (those who develop windows kernel mode device drivers).

    good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *