As technology evolves and spins off into highly specialized fields, so do the careers and advanced degrees that support it. As these degrees and specialties increasingly narrow their areas of focus, it can be helpful to understand how they play into the larger technology landscape by breaking them down into two core curriculum: computer science and computer engineering. And while there’s common ground between them, knowing where these two fields both overlap and diverge is a good place to start.
So, how are they different, and where does software engineering come in? Whether you’re interested in studying one or the other, or you’re just unsure how the two fields differ, here’s a boiled-down look at computer science vs. computer engineering.
Note: If you’re a student or professional looking to enter one field or the other, there will be a good bit of overlap between the two, with certain concepts and processes playing a role in both. Ultimately, they’re both concerned with enabling computers to read, write and use data properly to accomplish something, so there will be commonalities across the board.
The Theoretical: Computer Science
Computer science is primarily concerned with computational theory, namely the architecture, data, algorithms, and programming languages that comprise the software that’s run on a computer. Computer scientists are focused on things like code, algorithms, artificial intelligence, database design, and software design.
A computer scientist will code the instructions, protocols, and operating systems that run on top of hardware—a very generalized way of describing this incredibly varied field.
The Practical: Computer Engineering
Computer engineering takes that theory and applies to real life. Essentially it’s computer science put into action, married up with the field of electrical engineering. If computer science happens in code, in the abstract, computer engineering often happens in the lab. It involves designing and prototyping the tiny circuits and processing units that bridge the computer’s hardware components with the software it’s running—whether the implementations are embedded systems, microprocessors, networked IoT devices, or “smart” anything.
Computer engineering puts the theories of software design and data processing into action on a granular level. Think semiconductors and printed circuit boards, and the electrical integrations between all of these components.
A computer engineer will concentrate on how the software created by a computer scientist will get mapped out and run on the device. They’ll touch many different components: electrical engineering, hardware design, software design, and how each of these interoperates with the others.
Where Both Ends Meet: Software Engineering
You can’t talk about computer science and computer engineering without touching on software engineering—the bridge between the two that provides the architecture for the instructions the hardware executes.
So where does software engineering come into the mix? While computer scientists focus on the theories and algorithms and computer engineers focus on the hardware implementations, a software engineer bridges both disciplines together, applying computer science theories to software. A software engineer gets even more hands-on with programming by translating those concepts into functional applications that leverage the hardware they run on.
Studying the Disciplines: Computer Science Degrees vs. Computer Engineering Degrees
How is a CompSci degree different from a CompE degree? In the simplest of terms, computer scientists study theory and computer engineers build the things that bring those theories to life. Inside these disciplines, there are bound to be very specialized degrees, but knowing the basic differences will help you get started.
Both degrees will study basic computer operation, mathematics, and programming, but beyond that they’ll go on to emphasize different things. CompSci tends to be more theoretical while CompE is more practical.
A CompE degree will probably include a good amount of computer science coursework, but not vice versa—a CompSci student won’t get into the nuts and bolts of electrical circuits and engineering. If you’re studying computer science, expect to cover everything from operating systems and computer graphics to numerical methods and computational theories. If you’re studying CompE, you’ll likely cover similar areas of math and science, but also more physical studies like electronics, circuits, robotics, sensors, and networking.
Beyond education: A real world example
To get an idea of how these interact, take any “smart” thing as an example. A smartphone, smart car, smart thermostat, or even a smart toothbrush—anything electronic that has an embedded computer system to make it run. Both disciplines have to come together to make this smart object a reality.
In a smart car with touchscreen navigation, for example, a computer engineer will design the computer systems: the internal workings like the chips, microprocessors, and circuit boards, and the components like the screen, buttons, and menus the user interacts with. The software engineer then uses computer science theories to write the car’s operating system, the programs, applications like Pandora or a tire pressure monitoring system, and any network communications (say, how the car’s GPS communicates with nearby towers).
What kind of work do you want to do? A good question to ask is how close to the actual hardware do you want your computing work to be? Professionals working with software that’s closer to the hardware—cell phones, calculators, smart devices, etc.—will have more of that granular engineering experience. But more high-level software design that isn’t as concerned with interfacing with the hardware—because it’s designed to run on an operating system like Windows or Linux—would be more of a computer science degree.
The key is where the two intersect—and how software engineering comes into play—and having a holistic understanding that’s more conducive to building better integrated systems into modern, networked devices.