Computer engineering is a broad field that sits in between the hardware of electrical engineering and the software of computer science. When computer engineers design hardware, they focus on what the hardware is trying to accomplish as opposed to the nitty-gritty details of how to lay out the transistors. They design the processors for systems of all sizes, whether they look like computers or not. The processors go into desktop computers, smartphones, tablet computers, supercomputers, kitchen appliances, automobiles, space vehicles, and more. Specialized processors like GPUs (graphics processing units) or hardware to accelerate AI algorithms are also designed by computer engineers.
A special focus of computer engineers is the connections between devices, whether there is a cord making the connection or if it's a wireless connection. The computer engineer doesn't care so much about the actual voltages or wireless signals, but is more interested in the protocol that is used to send the data.
What's the Difference Between Computer Engineering and Computer Science?
Computer engineering bridges the divide between hardware and software. While computer scientists tend to focus on the theory of computer systems, including software and programming, computer engineers understand computer systems in their entirety.
Unlike most computer scientists, computer engineers are comfortable working with both hardware and software. They focus on how hardware and software interact with one another and have the ability to test design trade-offs between the two. Computer engineers often work on electronic aspects of the system and can design, build, and program complete computer systems from scratch.
What Do Computer Engineers Do?
Many computer engineers work less with computer hardware and spend more time writing code. Rather than the fancy graphical applications that end users interact with directly, computer engineers tend to focus on the "invisible" code that talks with the hardware within a system.
When a smartphone wants to know its location, it asks the GPS chip. A computer engineer writes the code to interface with the GPS chip to gather that data and present it to the application. This kind of invisible interface can be found in home computers, where a user installs a driver written by a computer engineer to support a printer or other connected device. It can also be found in things that don't look like computers at all—like kitchen appliances and cars. In fact, a modern car has anywhere from 10,000,000 to 100,000,000 lines of code running in it.
Many computer engineers work in embedded systems, designing the hardware and software for these computing systems that don't look like computers. This spectrum of knowledge between hardware and software allows the computer engineer to work at both extremes, as well. Some computer engineers will spend their time designing and populating printed circuit boards (PCBs) or other hands-on hardware design. Some will leverage their knowledge of programming to write the applications that consumers use directly on smartphones, desktop computers, and supercomputers. Many computer engineers will slide along this spectrum throughout their careers. Some may do things from the whole spectrum on any given day at work.
Where Do Computer Engineers Work?
There are three main fields in which computer engineers work: hardware development, embedded systems, and software development.
Hardware Development
A computer engineer working in hardware development designs processors and computing systems for a variety of industries. The processors may be implemented on an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA). The processors might be designed for general-purpose use to end up in desktop computers, smartphones, laptops, automobiles, aerospace vehicles, appliances, and tools. Other processors are designed with specific purposes, like audio, video, communications, or artificial intelligence accelerators. More than just the processor, computer engineers may design the rest of the electrical system that surrounds the processor. Common tools used would be the Verilog hardware description language, Intel and AMD FPGAs, electronic design automation software from Cadence and Siemens, and logic analyzers.
Embedded Systems
An informal definition of an "embedded system" is a computing system that doesn't look like a computer. Many of our everyday conveniences fall under this category, such as:
- Smartwatches and fitness trackers
- Home appliances (e.g. refrigerators, ovens, and washing machines)
- Power tools (e.g. drills, saws, and yard tools)
- Automobiles
- Robotics
- Medical devices (e.g. pacemakers, blood pressure cuffs, and hospital beds)
- Entertainment technology (e.g. cameras and home theatre components)
- Telecommunications
Computer engineers write the code that directly interacts with the hardware to sense the current state of the world and then change it. Most of the time, this is low-level programming in assembly language or C. Some Python is also becoming more common. Computer engineers use microcontrollers like Arduinos, Raspberry Pi, products from Texas Instruments, and the Nvidia Jetson to build embedded systems.
Software Development
Computer engineers learn the same programming languages and techniques as computer scientists and software engineers, including Java, C/C++, and Python. They learn how to use common data structures and algorithms to implement software. They use version control software like Git and software engineering techniques like unit testing. This allows them to develop embedded systems and also to work on software directly used by consumers. They can write apps for smartphones, laptops, and even supercomputers.
What Careers Are There in Computer Engineering?
Computer engineers can be found in every industry. They work in companies in sectors such as:
- Automotive
- Consumer electronics
- Computing
- Aerospace
- Fitness
- Healthcare
- Environmental monitoring
- Manufacturing
- Video game platforms
Computer engineers have job titles like:
- Hardware Engineer
- Hardware Test Engineer
- Design Engineer
- ASIC Architect
- Validation Engineer
- Embedded Software Engineer
- Systems Engineer
- Firmware Engineer
Any product that has a processor in it has a computer engineer involved. The conveniences of our modern lives involve many computer engineers, from entertainment to healthcare.
What Skills Do Computer Engineers Need?
Computer engineers need to be able to write code in a variety of programming languages. They need to understand the fundamentals of both electrical devices and computer science. Their math skills need to be fairly strong, but not as robust as some other engineering disciplines. They use calculus and differential equations in some circuits classes, but most practical work uses algebra, statistics, and probability. A stronger emphasis is put on general problem-solving and decomposing a solution into discrete steps. Creativity is highly valuable, as is the ability to communicate in written and oral forms.
How Much Do Computer Engineers Earn?
Computer engineers graduate with a mean starting salary around $70,000 per year. On average they earn in the mid-$100,000 annually with the top 10 percent over $200,000.
Job Title | Mean Entry-Level Salary (Payscale) | Mean Annual Salary (BLS) | Top 10 Percent (BLS) |
---|---|---|---|
Figures from payscale.com, accessed May 2024. Figures from U.S. Bureau of Labor Statistics (BLS), dated May 2023. |
|||
Computer Hardware Engineers | $76,707 | $147,770 | $212,770 |
Software Developers | $70,115 | $138,110 | $208,620 |
See additional engineering salary information.
The Future of Computer Engineering
There are four driving influences in the future of computer engineering: artificial intelligence, ubiquitous embedded computing, supercomputing, and quantum computing.
Artificial intelligence will become a part of every product and product development pathway in computer engineering. Already, power tools are being developed by training machine learning models on a bigger computer and then putting a hard-coded version of the result on a tool. As processing power increases, the training will done on the devices themselves. AI will be used to write code and design hardware with human guidance.
Computing devices will continue to bifurcate into the really big and the really small. Technology will become increasingly ubiquitous until it becomes essentially invisible, requiring both the big computers and the tiny ones. Wearable technology, medical technology, and similar products will become more powerful, more readily available, and cheaper. There will be a strong reliance on big supercomputers for more detailed simulation, machine learning, and general computation. This will also require high-bandwidth, secure communication channels.
Quantum computing is a technology that will change everything about how we design and use computers. It will require new methods of manufacturing computing devices, new algorithms, and new programming methods.