Computer Science vs. Computer Engineering

Sat, May 23, 2009

Uncategorized

When I was a high school student the whole notion of college seemed abstract – somewhere way off in the not-so-distant future. I had an idea of where I wanted to be in ten years, but the path that would lead me there was dark. My high school advisor did the best job she could do, but there were numerous technical questions she was unable to answer. For example: What is the difference between computer science and computer engineering? In an effort to decide what I wanted to major in, and thus which schools I would apply to, I googled it. I found a few resources and ultimately decided I would major in computer engineering, even though what computer engineering would entail was still very unclear.

In 2007 I started my freshman year at SUNY Buffalo as a computer engineer. My first and second semesters were mostly filled with general education requirements (English, American pluralism, ect…). However, like most curriculums I took two basic programming classes where I learned Java. I was suppose to learn other more important things like the concept behind object oriented design and other software development methodologies, but for some reason they did not become apparent until much later. My third and fourth semesters were filled with mostly general engineering classes which included calculus, differential equations, physics, and chemistry as well as a few others and one computer science class – algorithms and data structures and one electrical engineering class – [analog] circuit analysis. At the end of my fourth semester I finally made an appointment with my academic advisor. We went over my success path for the remaining four semesters which were mostly filled with electrical engineering classes. I felt like I was in a difficult position. I enjoy programming and I enjoy computer science. However, there were very few computer science classes in my schedule. Moreover, I am not particularly fond of the typical computer-science-type-of-job stereo type. You know… the one where some geek with a pocket protector sits in a small four foot by four foot cubicle office with no window. Yeah… that’s not really my cup of tea. I want something more hands-on. It was at this point where I took some time to evaluate what I really wanted to learn and what really wanted to do after college. The questions I asked myself were the similar to the ones I had in high school. Should I switch to a computer science? Should I switch to electrical engineering? Should I do nothing and remain a computer engineer? After some deep consideration I concluded I had no effing clue. Thus I decided to play it safe double major in computer science and electrical engineering and get the best (and worst) of both worlds.

Computer engineering provided me with some computer science and some electrical engineering, and although on average, a newly graduated computer engineer will make more money than a computer scientist due to their variety of knowledge, a computer scientist with a specialization is likely to make more money than the average computer engineer as with a specialized electrical engineer. A computer engineer is a “jack of all trades,” and thus the curriculum made it difficult to specialize in any particular field.

However, engineering and more particularly electrical engineering is not for everyone. If you suck at math, do not care about hardware, or just want to write code for a living, then computer science is what you should major in, but from experience, programming gets old, quickly. On the other hand if you hate writing code but enjoy working with computer hardware you probably want electrical engineering. If you enjoy programming and hardware or enjoy how the two abstractions interact, you want computer engineering. However, for all you high school students who are reading this, despite what you think you want to major in, I recommend giving computer engineering a shot. It will give you the best of both worlds, and toward the end of your sophomore year, if you realize you do not like hardware you can easily switch to computer science (as the majority of the curriculum overlaps), or if you are like me and enjoy both stick with it or get more for your money and double up.

Tags: , , , ,


11 Responses to “Computer Science vs. Computer Engineering”

  1. BlaineSch Says:

    Double majoring? You might be in school a while! But yea those are both awesome majors!

    Reply

  2. John Says:

    I only have a year and a half left. For a total of 4.5 years.

    Reply

  3. John Wong Says:

    Hey John. Great entry. I enjoyed it from the first letter and till the last period you had. LAMO.
    I remembered I asked the same question some days ago on CodeCall. When you guys told me the difference between Computer Science and Computer Engineering, I found a position of liking and disliking the difference.
    Just like what you learned: there is little computing and programming classes in a general computer engineering curriculum. Nevertheless, it covers both general engineering (especially with electrical engineering) and general requirement of a computer science. Basically we will learn Java and usually C I believe as a computer engineering (I am not sure, but Java is always there).

    I am going to City College CUNY this August and I am preparing to start my ass off as quickly as possible, to be done with basic C++ and Java on my own.

    I agree to give computer engineering a shot. I don’t like sitting on a chair for 8-hours / 5 days. I would rather to move around, have a conference, have a talk, have a discussion, have a hand-on feeling but still able to code software or application on my own.

    I want to deal with products and development. Computer engineering seems like the best choice out of general engineering and computer science.

    As a computer engineering student, a graduate once told me it’s easier to switch to any science major. He is now a particle physic major for master degree.

    I think at this point, by having two basic knowledge in the mind will worth more than specializing one. When spending 4 years in college and learn two fields at the same time, will definitely help fitting into the industry.

    For people like me, when I look into a computer software, I would think how both hardware and software interact. Since technology is getting more complex, for computer engineering graduate, one can see the entire picture (hardware and software) more than a computer science whom has just graduated from a 4-years college.

    But, of course, as one gets more experience, the difference will reduce but there is always one step difference between a computer science and computer engineering graduate, regardless the years of experience in the field – because there is.

    Reply

  4. John Says:

    I’m glad you enjoyed it. Your question prompted me to write this. I think I’ve decided I want to specialize in artificial intelligence. More particularly, interfacing the body with computers.

    Reply

  5. John Wong Says:

    John, actually I am also interested in AI. Why don’t you and your school join the college level robotics competition?
    one would be this
    http://blogs.spectrum.ieee.org/automaton/2008/11/24/wpi_to_put_on_new_universitylevel_robotics_competition.html

    Reply

  6. John Says:

    There is a good chance we are in it. I know we have an IEEE SA and I know all engineering SA’s on campus have a battle bots competition at the end of the year. But I will look into it next semester.

    Reply

  7. Philip Matuskiewicz Says:

    Nice explanation of the difference!

    Reply

  8. MathX Says:

    I just registered at university, CS!

    I really hate working with hardware so I decided to get into CS.

    Great blog John! :)

    Reply

  9. John Says:

    Glad you enjoyed it m8. Anything particular with programming you like? Parallel programming? Algorithms? AI?

    Reply

  10. MathX Says:

    I am relatively new to programming. I have been doing VB6 for a while, now I am doing my best to learn C++.
    I don’t like anything specific with programming YET, couse I only know things in general at the moment.

    But I like writing programs that solve mathematical problems.

    Reply