My name is Shawn Hymel, and I graduated from Rose-Hulman with a degree in
computer engineering. When I was an incoming freshman, I didn't know anything
about computer engineering. All I knew is that it had something to do with
computers, and it was a combination of electrical engineering and computer
science. In that sense, I got the best of both worlds.
However, computer engineers shine in a few areas that might be difficult for
either an electrical engineer or a computer scientist.
These areas include embedded systems, computer architecture and digital signal
processing. But what kind of jobs would it prepare you for? Well, you could design
consumer electronics such as smartphones, smartwatches,
eBook readers or maybe the next generation of Intel CPUs. Many new
medical devices and scanners rely on electronics designed by computer
engineers. The Department of Defense and various contractors need computer
engineers to create unmanned aerial vehicle flight controls and crucial
satellite communication systems. In aerospace, you might work on an autopilot
for the next Boeing plane or create the control system for the next Mars rover.
Finally in the world of automation, computer engineers are writing low-level
software for Amazon's warehouse robots that help pick and deliver goods for
packaging. So what kind of classes will you take to become a computer engineer?
First, you'll need a healthy dose of math. Particularly you'll need calculus,
differential equations and some probability theory. From the computer
science side, you will likely learn a couple of programming languages. These
languages allow you to write code to tell computers what to do. You might
start with a low-level programming language like C to teach you the
underlying concepts of how an operating system works. You might practice what you
learn with a project. Such as, writing a device driver for your computer to say
"respond to mouse clicks" or "read from a USB drive." You will also learn a
high-level programming language such as Java or Python. These are application
level languages that teach you higher-level computer science concepts
such as object oriented programming and algorithm design. Projects might include
writing a smartphone app, creating a simple game like flappy bird or
searching through a database for customer information. You will be
introduced to a variety of algorithms, which is just a fancy way of saying "steps
required to solve a problem." Google for example, uses a very complicated
algorithm to crawl through the internet and sort your search results starting
with the most relevant. You will learn how to develop algorithms like this and
analyze them for execution time and efficiency. From the electrical
engineering side, you will usually start with basic circuit design which includes
creating and analyzing simple circuits with passive components like resistors,
inductors and capacitors. Labs might include designing circuits on paper,
building them on a breadboard and then testing their operation with an
oscilloscope. Later classes will introduce semiconductor components like
diodes and transistors. These lay the foundation for courses in digital
circuit design including logic gate operation, boolean algebra and binary.
These classes will lead into computer architecture, where you will learn how a
computer works. Like, really works. Often you will be required to design your own
computer processing unit or CPU by the end of the class. With these foundations,
you can then move into the more specialized areas of computer
engineering, and this is where the fun begins. You will likely take a class in
embedded systems, which are essentially tiny chip sized computers with
processors known as microcontrollers. Knowing the basics of electronics and
low-level programming allow you to work with microcontrollers, which can be found
in smartwatches, drones and modern thermostats. If you have heard of Arduino,
it is a type of embedded system. Finally, you will be required to take at least
one class in signal processing. Which is the analysis of how electrical signals
change over time. Here you will be introduced to
communication systems and filters. Trying to transmit data over long distances, say,
images of Mars from the Curiosity rover requires a lot of engineering and signal
processing is just the beginning of these types of communication systems.
Computer engineering also puts you in a good place to study robotics as most
robots rely on embedded systems for their brains. And these are just some of
the things that computer engineering lets you do. It gives you a taste for
electronics, as well as programming. But it also allows you to specialize in some
fields that develop exciting new technologies that affect our everyday lives.