It’s a question that I’ve considered for as long as I’ve been a legal adult: what do the various computer-related degrees actually mean? What is their value, and which degree is best for which kind of person or job. Today, I’m going to attempt to break down my perspective on four common degrees and their various strengths and weaknesses.
Disclaimer: I majored in Computer Engineering. This is my take on these degrees as someone who studied and worked alongside students in each major. I am entirely biased, so don’t take it too terribly seriously.
Let’s start with what I personally consider to be the weakest of these four degrees: computer science. Computer Science degrees are focused on programming almost exclusively and tend to be taught primarily by academics. You can find computer scientists with particular interests in web development, graphical design, artificial intelligence, research, firmware, and much more.
One of the key reasons why I tend to think the degree is weakest is the subject matter. Because it’s so heavily focused on programming itself, the degree tends to lack any courses on the hard sciences and specifics of computer circuitry. For most, the hardest course is Computer Architecture, which requires them to touch the system most directly and design programs at the most fundamental levels. Once they struggle past that, they spend the remainder of their time looking at specific algorithms or programming languages (usually Java). As such, they tend to have only faint connection with the principles that exist behind their work.
Another reason is the type of professors they encounter. Most CS courses are taught by academics with little to no real-world experience or engineering instinct, which tends to encourage a sort of black-box mentality in the students. If it has been shown to work by some mathematician or researcher, then it must work, and there is no reason to pursue the ideas behind the solution.
Finally, I look at the rigor with which high-achieving CS students apply themselves. Most of the CS students I encountered partied every weekend, did the minimum on their homework, and regurgitated the answers they had been provided verbatim. Because they spent so little time focused on the principles and ideas, yet continued to score very well, I can only conclude that the coursework must have been easier (for reference, I slept through most of my CS courses and got As and Bs).
On the other hand, Human Resources departments seem to hold the CS degree in high regard. In my time applying for work and internships, I had to put in much extra work to justify my Computer Engineering degree to the same people who would accept CS without question. Even though I had demonstrated the same skills which the jobs expected, I had a harder time because they weren’t as familiar with my degree. Perhaps, then, the value of the degree for job-searching purposes is higher than my perception of its actual educational and skill-development value.
By contrast, the Computer Engineering degree is of high educational and skill-development value, but somewhat lower job-searching value. Computer Engineering is a blending of Electrical Engineering and Computer Science, with the general focus being on well-rounded skills and a fundamental understanding of the machine. In theory, I often say, I could build you a functional computer out of a pile of sand.
The CE degree takes a handful of the fundamental computer science courses and ignores the rest. We take the programming fundamentals courses, the algorithm and data structures courses, the project management and presentation courses, and the logic courses, but we ignore the specific algorithm and technique-based classes like AI development and graphic design. Instead, we focus heavily on the Architecture and Networking courses, which teach fundamental principles of how the machines actually work and how to exploit it.
At the same time, we spend an appreciable amount of time on the hardware and science side of computer design. We take physics, differential equations, electrical circuit design, and the properties of semiconductors. We spend hours every week in labs, building physical structures and testing them the same basic way they did in the 70’s, albeit with shinier testing toys. This reinforces the true fundamentals of programming as we learn how a computer translates programs through the machine into electrical pulses.
It’s a very rigorous degree. When you take between 16 and 18 hours per semester, some of which are lab work and mandatory supplemental instruction, there’s not a lot of time for anything but engineering. On the other hand, your mind is constantly bombarded with principles and data, which expedites the development of the pattern-matching and puzzle-solving mind that is essential to engineering and programming. If you don’t do all the work, take copious notes, study the book and class materials, and constantly puzzle through the notes you’ve taken, you cannot succeed.
Between all these things, I argue that CE has high practical value. On the other hand, as I’ve already said, people don’t often recognize the degree. You spend a lot of time explaining how your degree applies to the job, and more than a few automated systems hide the best CS-related jobs from you on the basis of your stated major. So, while the practical value is high, the job-seeking value is relatively low. On the other hand, once you HAVE the job, it’s a cakewalk compared to your degree work, and you already have the skills required to pick up new skills and languages quickly.
In my mind, this is the hardest degree I’m covering. I didn’t have that much connection with the EE’s outside of my courses, so I’m going partly on hearsay, but it’s hard science plus hard engineering at its finest.
EE’s spend very little time writing programs. Instead, they learn absolutely everything about how electricity works and how to harness it. The coursework includes electromagnetic wave principles, basic circuit design, VLSI circuit design, the properties of semiconductors, advanced physics and differential equations, and more labs than I’d care to think about. When they do write code, it’s either in C (so they can be close to the machine) or a language like MATLAB (so they can solve particularly difficult mathematic or design problems). Like CE, if you don’t put your all into discovering the patterns and principles, you will not succeed in EE.
If you want to go to work designing microchips, motherboards, phones, screens, or any other hardware, you cannot possibly do better than EE. Electrical Engineers are always in demand, and if you enjoy what I personally consider to be boring work, you’ll do very well.
This actually might be the hidden gem of the computer-related degrees. Software Engineering is a lot like computer science, but there is a great deal of focus on the particulars of development and project management in there.
Software Engineers take all the same computer classes that Computer Engineers do, but they also take on some of the more specific courses that CS majors employ. They don’t usually study machine learning or AI, but they do delve deeper into the specifics of digital logic and algorithmic design. They also take courses in things like compiler design, which I find fascinating but irrelevant to my particular needs. As such, Software Engineers have the broad base of knowledge required to tackle most common programming problems.
Where SE really shines, though, is in the project management coursework. Software Engineers take entire courses on the specifics of development models (waterfall, AGILE, etc.), management, debugging, quality assurance, validation, and requirements engineering. By the end, they have basically all the common knowledge required to participate in a software team in basically any role. It’s pretty powerful, once you think about it.
The SE degree is high in both pracitical and job-seeking value, but there is a catch. Because of the specificity, it’s very hard for software engineers to find work outside of the corporate world (unless they create a startup, which they are situated to do fairly well). Inside the corporate world, of course, SE is a powerful degree which basically guarantees rapid integration into any software development team.
Which Degree Is Right For YOU?
I tend to look down my nose at the CS degree, partly because I’m still jealous of some less-skilled folks who got all the internships I applied for and had the time to take fun classes I never could. However, if you don’t particularly want to work on operating system design, firmware, or other low-level code, there’s nothing wrong with the degree. In fact, if you can parlay CS into successful web or app development, it’s one of the best routes you can take.
Electrical Engineering requires a very specific kind of person. It takes dedication, skilled pattern-recognition, and a love for electronics that I simply cannot match. If that’s you, then jump straight to EE without a second thought.
Personally, I would highly recommend CE or SE, but for two different paths. If you like firmware or enjoy debugging and related puzzle-based tasks, then CE is the way to go. However, if you want a degree that has more corporate value than CS and prepares you for the work world (and has much less physics and circuit design than CE), then you cannot do better than SE.
I hope that helps clarify some of the basic content and values of these degrees. I didn’t mention telecommunications engineering or some of the other focused degrees because they can generally fit into one of the above broader categories. But, if you’re looking to major in computers, use this as a basis for your search and do some comparison shopping between the classes in each degree.
There is no wrong answer; only the wrong answer for you.
Featured Image is Aaron Clarey’s excellent book on college majors, Worthless. It’s available on Amazon and should be required reading for every high school student looking to go to college. Visit his blog at captaincapitalism.blogspot.com