[MajorFilter] Computer Engineering or Computer Science Major? Help me decide please! (3rd sem already) and don't know what to be!
September 22, 2008 4:47 PM   Subscribe

Hey guys, Computer Engineering 2nd year (3rd sem) here at the University of Maryland College Park wondering if i should stay in my major or switch to Computer Science. I am super confused right now and am hoping that some of you can help me think. Bear with me while i ramble on

I do just love working with computers and building things for them so it was no suprise I am going to stay in a computer field. I originally went computer engineering just because it seemed more prestigous (engineering, limited seats, once you leave you cant come back) and the fact that it seemed to be both hardware and software. Now I consider myself a software guy and while i enjoy learning about hardware i dont imagine a job in it. Still Computer Engineering seemed a way to get the Computer Science curriculum and do some extra work and get some extra hardware knowledge that could only help.

Now I am having second doubts.

Now my ideal goal is to work at a place like Microsoft or Google (yes its a lofty goal), and I know to work at places like these you need excellent code fu. I wonder if working for a computer engineering degree where i dont take as many CS classes but instead take more Electrical engineeringish classes is really the best idea (like CE is 80% hardware). Now asking everyone I know these are what various people have given me as advice:

1. Friends/Adults in the Computer Science field:
-Go comp sci if you want a software job and computer engineering if you want a hardware job -Get a Business (really management) focus or minor (not offered at maryland) so you can code for a couple years then try to get a management position. -Get an MBA at a good business school after having a job for a couple of years

2. Head of computer engineering department:
-Recruiters come after computer/electrical engineers a lot its really in demand (this is true we have our own job fair) -CE's get paid more -Knowing hardware lets you optimize your code better and stuff.

3. Faculty member in the Computer Engineering Dept. who used to be in Comp Sci Dept. -CE because in the future hardware will be me more tied to software, such as with parallel processing and this will help -Look at 400 lvl (senior year) classes in CS that you would want to take and take them as CE as well. (problem with this is Im also going to have to take 400 lvl electrical engineering courses which will restrict my time for CS stuff)

4. Parents
-Engineering sounds better

5. Me
-Computer Engineering does seem better sounding than Comp Sci but does that really matter? -Comp E has b.s classes (at least in my opinion) like physics and chem and like technical writing. (maybe not b.s but bleh) -Comp Sci seems easier to do, therefore i can fit more CS classes in and learn more -I am still looking for real world applications though for whatever i learn. I am not going into research or anything. If you guys believe i should really put in a business background and stuff please say so. Being realistic here. Money and Enjoyment if possible to balance.

Btw here is the major reqs for CS: http://undergrad.cs.umd.edu/major-requirements-checklist/

and sample plans (Core is like classes everyone has to take like art, history bleh) http://undergrad.cs.umd.edu/sample-plans/

And for CE: http://www.ece.umd.edu/Academic/Under/advising/CP_degree_reqs.html

Now if you guys are still reading (wow thanks!) i guess to sum it up what do you guys think i should really be? I would like to work at a place like Microsoft (and have been given interviews with them with no luck) and do companies like them really care if you are a computer engineer or scientist? Should i go comp sci and a business focus, or just plain comp e? Ive been going back between these 2 majors for a while now and finally just want to make a decesion. Thanks youll be helping me a lot! :)
posted by Javed_Ahamed to Education (18 answers total) 1 user marked this as a favorite
Are you looking for the major that will give you the best career prospects in the future, or the one that you will enjoy the most?

There's a whole range of programming/engineering jobs that would probably be open to a candidate with either degree. On one side (pure CS or maybe SW eng), you'd be doing software-only stuff where you don't even consider what kind of hardware it's running on. On the other, you'd be paying careful attention to, or maybe even designing the hardware.

What's better for the future? I'm not sure. I'd probably go with computer engineering, but that's because I like assembly. Both fields are prone to outsourcing, with a slight "advantage" to programming jobs, as the cost of entry is a lot lower.
posted by lalas at 5:09 PM on September 22, 2008

Response by poster: I am not really into embedded systems programming but more higher level yeah. The outsourcing thing is something that does not really bother me since both fields are affected, and eh I don't worry about it too much.
posted by Javed_Ahamed at 5:19 PM on September 22, 2008

Best answer: caveat: I have a CS PhD, so maybe I'm biased.

I think your friends/adults in the CS field are correct. If you're interested in doing hardware, meaning things like designing chips, building embedded devices or robots, and such, the CE is a good field for you. if you're interested in writing software, then go to CS.

In addition to learning to code in a CS program, you'll also learn the other things that an employer such Microsoft or Google will expect you to know about, such as algorithms, big-O, software engineering skills, and so on. MS and Google aren't really in the business of building hardware, so the bulk of their employees do more CS-related things. (An aside - I know people at both MS and Google and, while they expect you to be a good coder, they also really want a strong understanding of CS fundamentals, the ability to work well in a team, and experience with large projects. So either way, take classes that give you the opportunity to do large-scale projects and/or get involved with an open-source project.)

Your CE chair is correct in saying that there will be a niche for people who understand hardware, due to the increasing importance of concurrency, either across machines or within multicore chips. However, there's a question as to the level at which you'll need to understand that hardware. If you want to design multicore chips, then lots of EE and physics will be helpful. If you just want to program them, then you'll want a foundation in architecture and operating systems.

But keep in mind that this is just one career path - if you're writing games for the PS3, you'll be spending a lot of time doing optimizations, but if you're writing a spam filter for Google, I doubt you'll spend much time thinking about optimization at that level.

The business minor is useful if you want to do a startup at some point, or you're thinking about making the transition into management or client relations. Some people love this stuff, others hate it.

Don't get too hung up on which one 'sounds better' or average salaries or number of jobs - there's plenty of jobs for talented people in both areas that pay just fine. It sounds like you need to think about what's right for *you* - it's not that one option is good and the others aren't. They're all potentially interesting areas, it's a matter of where you want to wind up.
posted by chbrooks at 5:28 PM on September 22, 2008

I use plenty of my graduate level hardware/architecture knowledge in my Web 2.x jobs.. I've certainly spent a lot of time in the parallel computing world, but my take on real jobs (as opposed to the rarefied perfect order of academia) is that the smaller the company, the better you know every level of the stack - that is, knowing hardware helps at a startup when you're spec'ing your first gigantic DB server, or picking a network layout.

I say you work on concise writing first, then pick CE, and be sure to read some Emerson in the meantime. If you're not going to be a professor, CE is a more rounded approach to an undergraduate education - at least in my experience.
posted by kcm at 5:38 PM on September 22, 2008

I second kcm on spending some time improving your business and technical writing skills. As a new college graduate recruit, regardless of what major you choose, your resume is simply going to be thrown in the trash if there's any sort of communication problem with it. You will be asked to concisely describe your technical background; be prepared to do so if you want a job.

Full disclaimer: I started with a dual major in Computer Science and Computer Engineering and graduated with a BS in Computer Engineering and a BS in Mathematics.

Companies are hardly interested in your major coming out of school and after five or ten years, will not care at all. My suggestion is to work towards the projects that you want to do after you graduate. Specific engineering experience is the best way to get the job you're interested in. Given that you seem interested in higher level application development, perhaps a CS-oriented research project would be useful for you to pursue. Either you'll love it or you'll hate it. That will give you the direction you need. If you're paying attention to your classes and really understand what's going on, your degree won't be a barrier either way. However, if you don't know what you're interested in, no degree will help you find the job you want.
posted by saeculorum at 6:25 PM on September 22, 2008

Could you double major? Or maybe get a CS minor? That way you would have something to show for your efforts in both topics.
posted by martinX's bellbottoms at 6:37 PM on September 22, 2008

I did Comp Eng undergrad. I had friends who nearly did CS degrees by taking CS courses as electives instead of Comp Eng electives. Your department may not be so forgiving. But you may be able to swing a compilers course instead of fourth year control systems or something. My school also had a CS electrical engineering elective which was a bit like Comp Eng but from the other direction. Again, YMMV.

FWIW I have worked at both of your lofty target companies. So yay me as your dreamy role model.

I think Comp Eng is a good choice. I have worked in software my entire life. While some CS things like compilers would have been useful, 80%+ of what I needed to know to be a commercial software developer was stuff that neither CS nor Comp Eng taught me. A lot of the more specialized CS stuff like modern compiler techniques (as opposed to basics) or building a VM or garbage collection systems are more in the realm of graduate programs so you may want to think about that, but having said that going down that route means you have to be pretty serious about hard-core CS.

While I haven't made a lot of use of antennas or circuit design, I feel like it's been easier to pick up programming skills in industry versus trying to learn something like Fourier analysis or control system outside of the classroom. Also, yeah, employers like engineering degrees.

I think it depends on your CS program. The CS program at my school was part of the Math dept and not its own school so CS students still got a lot of basic math courses which I think is important. Where by basic math I mean advanced calculus. As opposed to rings and fields and that othe rmath stuff I don't understand.

Having said that, I know a lot of people who have done just fine with CS degrees - places like MSFT and GOOG are certainly full of them. As far as an MBA goes, I would skip it for now. With the financial sector meltdown there will be a glut of MBAs on the market for the next few years. Just get a job and kick ass and you'll get ahead.
posted by GuyZero at 6:58 PM on September 22, 2008

Response by poster: thanks for the reply so far guys. Btw i cannot get a minor or a double major in CE/CS since they are similar and my school will not allow it. Also GuyZero will the schools like engineering degrees more thing hurt my chances of finding an internship/job anymore or is that still minor. Like if i have the same stuff done in both CS and CE so far, would they mind right now?
posted by Javed_Ahamed at 7:03 PM on September 22, 2008

My experience getting internships is that they look at your marks but that Comp Eng and CS students were generally treated interchangeably. As a 2nd year student you don't know much anyway (sorry) so you'll also be differentiated by whether you know certain specific things, like web development, windows API knowledge, UNIX knowledge, etc.

Back in my day (14 years ago!) you had a lot of CS students who didn't own a PC and had never used Windows - no joke. So knowing Windows helped you get a job at MSFT. These days I think having a solid knowledge of Linux and Python would be a big asset for getting an internship at Google. Those will be far bigger factors, as well as how you do in the interview, over your major.
posted by GuyZero at 7:16 PM on September 22, 2008

I don't think it matters enough if switching majors would delay your graduation. After a couple years, your experience will matter more than the specifics of your degree. As long as you are getting the algorithmic theoretical background in your classes, you should have no problem.
posted by demiurge at 7:19 PM on September 22, 2008

I've a bachelor's in EE and am currently going for a PhD in a way that's sort of in between the EE and CSE departments (of course at some places they put them all in one department as EECS, which seems like the best thing to me though I've never experienced it myself). My advisor is primarily in the CSE dep't but holds joint professorship with the EE dep't., though I forget if that's the correct bureaucratic term. He too came from an EE background. While we're EE I think the experiences apply as your CE is in an ECE department - meaning, and the course listing suggests this to me, that you'd pretty much be doing a computer flavor of EE.

The pro of the ECE: If you take the CE track at an ECE dep't. you are quite likely to be able to pick up any CS stuff later. I can jump in and take most grad-level CS courses and the ones I'd be wary of taking aren't because of anything that was unavailable to me as an EE. If you get a job coming from an ECE dep't they should be able to train you in whatever CS stuff you're lacking.

Vice versa it frankly doesn't work. You're pretty unlikely to be able to jump into the ECE-type stuff from a CS dep't. So there is that limitation, though it may not matter to you.

The cons of the ECE: while you'll have the ability to pick up more of the CS-type stuff, you probably won't have the chance to do as much of it during college. You're likely to come out with somewhat less practical programming experience, for example, and what you have will be most likely lower-level. Most of my programming for school has been a little Assembly, a lot of C, and MATLAB, with a little C++ and Java. While I could pick up your fancy Pythons and so on if necessary I didn't get exposed to any of that in EE, though that's somewhat by choice as I rather prefer the lower-level.

It's also probably going to be more grueling, a plus or a minus depending on you.

I would like to work at a place like Microsoft (and have been given interviews with them with no luck) and do companies like them really care if you are a computer engineer or scientist?

I have straight-up EE friends at Microsoft - also, Microsoft and Google do research so don't disregard that as a path. To a great extent your college career gives you a background that lets you learn how to do the job; it doesn't teach you how to do the job. This is where the ability to pick up CS from an ECE background is a plus - to some extent they care more that you can learn it than that you know it already.

To some extent reading your post I feel you would like CS better - but one thing to keep in mind is that whatever your major is you get to shape your curriculum somewhat and could probably manage to be in-between the CS and ECE dep'ts from either end.
posted by TheOnlyCoolTim at 7:22 PM on September 22, 2008

Btw i cannot get a minor or a double major in CE/CS since they are similar and my school will not allow it.

Don't worry about having an official minor status. If you can take the classes and learn the stuff, you can just put it as skills on your resume and talk at interviews about how while you weren't allowed to claim a minor you possess skills from both sides.
posted by TheOnlyCoolTim at 7:25 PM on September 22, 2008

Response by poster: Thanks guys! Yeah I might be leaning more towards CS now i guess one of the things really that was stopping me was the fact that it seemed kind of a "less or easier" major than CE which it really is and that recruiters would wonder. I guess for the places im shooting for they care more about your coding experience instead of your major anyway.
posted by Javed_Ahamed at 7:26 PM on September 22, 2008

I agree with TheOnlyCoolTim. I did EE and came out of college doing development... Perl/ java/ webapp development and project management. I didn't learn much java in college, but I learned how to learn with an EE degree. Seems like it's a bit more prestigious degree and people will hire people with the degree to do things that they may not know. My manager is, however, a CS major. He and I share a lot of the same knowledge, so they're probably pretty interchangeable. I liked EE more than I would have liked CS, but you're probably very different than I.
posted by ets960 at 8:07 PM on September 22, 2008

Comp E has b.s classes (at least in my opinion) like physics and chem and like technical writing. (maybe not b.s but bleh)

You don't need a huge amount chem to write code, but there's a fair bit of physics in game design. Not as much as you'd need for chip design, but still.

But please, please, please do your best to extract as much skill as you can out of the technical writing classes. Until you've worked in programming, you have no idea of the sheer amount of time and effort pissed up against the wall due to misunderstandings caused by poorly written technical documents.

The ability to write a good, clear spec is absolutely saleable, and the orderly thought processes required to make that possible will absolutely make you a better coder and especially a better software designer.
posted by flabdablet at 10:37 PM on September 22, 2008

I got a BS in CS from UMCP and employers (for programming jobs) seemed quite impressed with that. Maryland's got a great reputation in CS, at least locally. I'd say do CE if you want to do hardware, but otherwise stick to CS. I think the CS degree is impressive enough that you won't have trouble finding a good job. One thing you might consider is cozying up to some of the professors, who often work closely with private companies and sometimes even work at private companies themselves.
posted by callmejay at 9:24 AM on September 23, 2008

Response by poster: ah cool callmejay. Much better knowing from UMCP 2!
posted by Javed_Ahamed at 2:06 PM on September 23, 2008

You sound a bit like me (:

I'm a high school senior right now, entering a university next year, and I've been trying to decide this for a while now. My parents also pushed engineering down my throat because being "an engineer" seems so prestigious to them. I've known for a long time that I'm a CS guy at heart, though ;)

I plan on pursuing majors in computer science and mathematics and a minor in computer engineering in college. I should graduate with two degrees (B.S. in Computer Science with minors in Computer Engineering and Mathematics, and a B.S. in Mathematics with minors in Computer Science and Computer Engineering).

But that's only because I just really love math. The CS/CE split is very much so I can have more experience with every level of the computer. I don't plan on working in hardware, but knowing enough hardware to understand programming and efficiency and such is a valuable thing. I just want a foundation to build off of in my CS work. Even if your school doesn't allow minors like mine does, take enough CE to know your way around the hardware, then major straight CS. It seems the best way to go about getting the job you want at MS/Google/whatever.
posted by Precision at 1:53 PM on September 29, 2008

« Older Trombone masters?   |   How can I force myself to write? Newer »
This thread is closed to new comments.