<p>I am trying to make a choice between Electrical and Computer Engineering, and Computer Science. I am doing Computer Science now, but I am at a point where the classes I am taking apply to both still, but that changes starting next term.</p>
<p>I feel like Electrical Engineers have a broader perspective that Computer Scientists do. It seems to me like it is a more mobile position, where EE's move freely with hardware and software and CS's are strictly working with software.</p>
<p>I am looking for the useful skills that can translate well into many applications. I want the ability to control a lot of the process. For that reason EE is very interesting to me, but I am worried that each leaves out too much of the other. EE is more coursework (and I am already going to be in my 7th year when I get a bachelor's degree)</p>
<p>I would also like to earn a Master's degree, but doing CS Bach and an EE Masters may be difficult.</p>
<p>Some back story on me I started college January 2008, earned an Associate of Science in Business from Portland Community College in June 2010. I was at the University of Oregon and changed my major to Computer Science, moving to Oregon State University in April 2011. I have now been doing a lot of work in external projects on campus, and also have an internship lines up with SpaceX for this summer.</p>
<p>So I am on a pretty good roll, but I am wondering what is the best path. I realize that this is a personal choice, but I'd love some conversation about it.</p>
<p>It sounds like every argument you give (whether it’s right/justified/accurate or not) is pointing to EE. What about CS do you find attractive? Are you looking for something? What thoughts do you want?</p>
<p>If you feel better about EE, go with that. People from both majors go on to well-paid, satisfying, etc. careers. You mention a master’s degree… do you have academic interests? Name the specialty and then CS or EE may stand out as more appropriate.</p>
<p>Sounds like you should definitely enroll in one of those flexible Master of Engineering programs. It would allow you to take some CS courses that you like and EE courses that you like (where both sets do not add up to a CompE degree).</p>
<p>Your post makes it sound like you want to do EE, but a lot of the points you make are untrue.</p>
<p>EE and CS have separate curricula. In CS, you are dealing more with coding principles and computer-specific architecture, while in EE, you are learning circuit level design. It’s not a broader position; it’s completely different. The jobs are not interchangeable.</p>
<p>EE cannot move into software jobs as easily as you might think. My university only requires freshman level C++ and assembly for EE majors, so they basically have no prior experience in coding.</p>
<p>Well, kinda.
EE is maybe a bit broader, so it will be possible for you to work in software or hardware after graduating, if you pick the right classes.</p>
<p>But, its not like you’re going to switch back and forth throughout your career, between software and hardware. If you’re doing analog IC design, that’s it for you. Even switching to digital IC design is unheard of, let alone ie. web development.</p>
<p>I can confirm that it is possible to switch back and forth from software to hardware. Besides myself, I know others who have. It depends on which area you want to focus on. Yours seems to be computer engineering whereas an analog or power focus, for example, would be more difficult to make the switch - but not impossible. I believe that once you successfully learn the concepts and earn your degree, it is fairly easy to learn new technology/languages/skills. You are ultimately selling yourself and your experiences. A quick update at a community college for a new skill set can prepare you for a switch. (I did not have to do that, though.)</p>
<p>My son is also struggling with this choice. His father and I chose to get a BS in EE and then a MS in Computer Engineering. We have both switched back and forth. I feel like having a base in EE makes for a more flexible position. I spent most of my years in software but did spend a few years in hardware and it was entirely easy and doable to learn and contribute quickly.</p>
<p>You will likely use a hardware design language (Verilog, VHDL) in your digital courses, and you will gain more programming skills while using them. And depending on your EE curriculum at your college, you may take a lot of programming courses or use them as EE electives (my son is doing that).</p>
<p>But a wise person once told me: if advances in hardware technology ceased today, there would still be demand for software engineers. And I have found job security to be higher in software. Plus another person once pointed out that while it’s easy to develop and sell software in your garage, it is another thing entirely to fabricate chips! </p>
<p>I do advise my children to think beyond one career choice. As life expectancy and retirement moves further out, facing the same job gets to be burdensome - 50+ years of the same stuff! I think having a broad base in their undergraduate education will set them up for more degrees or skills in the future. So in that, I agree with your opinion that EE will give you a broader base. But that’s just me and my experience.</p>
<p>As a EE myself I have to say that there are no problems in getting software positions. For your interest i have switched back and forth between software and hardware jobs ( i think third time by now). However, the reason I could do that is because I have shown employers that I am very proficient in programming (through experiences and demonstrations in interviews). Employers would not doubt that EEs know programming, but that cannot be said with cs in circuit design and power system</p>
<p>Wow! Thank you for all of the great replies!</p>
<p>Allow me to break this down a little further. Ideally I would love to just do EE and CS, but I am looking for a way to have that mixture split between a Bachelor’s degree and a Master’s degree rather than just double majoring for 2 bachelor degrees. (Takes longer, and no masters)</p>
<p>There are a few industries I am interested in and for various reasons. Those are: Commercial Space Industry, Robotics Industry, Biotechnology Industry, and at a lesser degree any multitude of Silicon Valley type start-ups, Google, Apple places such as that. I want to be doing something that is pushing us to the next level in whatever industry I am in. I am not content with writing software to upkeep the backend of a bank transfer system, or something of the like. I’d like to be working on something more exciting and “potentially” groundbreaking if even somewhat indirectly.</p>
<p>Companies could include: SpaceX, Virgin, Google, Apple, IBM, many robotics companies.</p>
<p>When it boils down to it I am leaning towards EE because I feel like with CS, there is something missing. Yeah you have the concepts that allow you to employ some seriously awesome algorithms, but without understanding the hardware side, where does that leave you? Developing web apps? (Nothing wrong with it, but I want something else)
But, conversely, without fully understanding the CS concepts, there is a lot that is left out of your knowledge base.</p>
<p>It is worth saying also, that I am interested in not only the engineering aspects, but also the management and policy aspects, both on a micro (company/corporate level) and a macro (countrywide level). This however is not too much of a concern. I know how to orient myself in those types of positions, it is the technical aspects that are new to me.</p>
<p>
</p>
<p>Not necessarily, but from the little experience I have, I have just noticed EE’s being more helpful in a larger number of areas at once. This could be my own personal experience alone though, that’s partly why I am asking this publicly. I find CS attractive because of the power of coding, with relative little overhead. There are hugely exciting systems that can be employed with knowledge of programing. Some of the most exciting to me deal with big data. What’re your experiences? Perspectives? What has worked for you, what hasn’t? Who do you know that has done these things?</p>
<p>For a Master’s I would love to broaden my knowledge in either/or CS or EE, depending in large part what my undergrad work is all about. At first I thought doing an undergrad in CS and a MS in EE would be good, but I don’t know how possible that is. Possible vise versa?</p>
<p>
</p>
<p>OSU tends to be similar. EEs and CSs both take 2 courses in C/Embedded Programming, and both take Data Structures (AVLs, BSTs, Heaps, Dynamic Arrays, etc, etc), before diverging in large part. Though both also take Digital Logic and such.</p>
<p>
</p>
<p>Really? It isn’t common to be doing both in the same line of work?</p>
<p>
</p>
<p>Oh absolutely! I am not planning on one career choice, or even a set number. But rather a career based around progress rather than just a job. I am looking to influence rather than just receive a paycheck. I am just new to the technical aspects of these things at least on such a deep level.</p>
<p>
</p>
<p>And that’s precisely what I was thinking. Could you think of any situations or occupations where a CS would be the obvious choice over an EE (even if the EE knew programming)? What would the EE need in order to garner this position anyway?</p>
I think this is your first mistake. The point of graduate school isn’t (really supposed to be) to gain breadth and exposure to another field; it’s to specialize and hone skills you have developed as an undergraduate. This is true even at the master’s level. You would be almost universally better off if you were to identify where your passion lies before going to graduate school, and then use graduate school to learn more about this area. In particular, I’m saying something along the lines of this: it would be better to double major, or take extra elective courses, or get a minor, or something as an undergraduate, than to do what you are planning on doing.</p>
<p>
Two observations: it doesn’t seem like you have any particular interest in either CS or EE, you just want to get a cool job; there are plenty of uncool jobs (with widely varying degrees of necessity/importance) in both CS and EE. Frankly, if you want a cool job where you can make an impact and do something you can feel proud of, you need to figure out what it is you are good at, what you like doing, and what inspires you to work hard and innovate.</p>
<p>
There is overlap between most CS and EE degree programs, and at most places, you can tweak the amount of overlap by carefully choosing concentrations and/or electives. Some places have EECS majors, and others have computer engineering majors, which combine CS and EE programs in various ways. No matter what you study (CS, EE, EECS, CmpE, etc.) odds are you will be “missing out” on something they’re teaching in another program. It’s up to you (acting with imperfect information, like the rest of us) to decide which information is more valuable to you, and to go with that. There are certainly things that EEs learn that people who go into CS have no desire to know anything about, and rightly so. Generalists may opt for EECS or CmpE programs to get the most breadth and flexibility, at the cost of learning more advanced topics on either side. Rigor of the program comes into play, too; an EECS major at school X may learn everything being taught in EE and CS programs at school Y (indeed, a CS major at school X may learn everything the CmpE major at school Y is learning, and more!).</p>
<p>
I think you ought to probably chalk this one up to personal experience. When it comes to people being helpful, it’s typically got more to do with the individual than the specialization, especially when you’re comparing technical people. There are plenty of scenarios where a CS major wouldn’t be particularly useful, and plenty where an EE wouldn’t be particularly useful (and plenty where neither would be particularly useful).</p>
<p>
My background is in R&D with distributed systems, some “big data”, and high performance computing, generally speaking. That being said, EEs don’t typically do the kind of work that people with my background (math and CS) do; at least, that’s my experience. If you want to get into working with big data, the useful hardware knowledge you’d gain from an EE degree you can mostly pick up in the course of doing a CS bachelor’s + master’s. Knowing about power systems, device physics, antennas, electric and magnetic fields, etc. would be completely superfluous. In the same way, if you wanted to design revolutionary computer processor technology, it would be helpful to understand some computer science topics; however, you would be better served knowing as much about the EE side (by doing an EE bachelor’s + master’s) and picking up the necessary CS ideas along the way, than spending a great deal of time (during the prime of your life) getting a separate degree.</p>
<p>
Again, I’d recommend you try to figure out what you really want to do, and put everything you’ve got behind it. The sooner you figure out where you’re going, the faster you’ll get there. I would recommend doing a more general program of studies at the undergraduate level (e.g., EECS, CmpE, or CS/EE with a minor in EE/CS) and specializing in grad school. There’s no point in going to grad school if you get through with undergrad and you have no clear academic interests (you don’t need to know your eventual thesis topic, but you should have an idea of what you might want to do beyond what you’ve expressed so far… “big data” is the only candidate you’ve thrown out that could fit this role, and if that’s all you’ve got, you should do CS).</p>
<p>
CS is the clear choice for software roles. If EEs get hired for software roles, it’s because either (a) the CS candidates who applied weren’t of comparable quality or (b) it’s actually an EE job that involves coding. If you know you want to do software, do CS. If you know you want to do hardware, do EE. If you don’t know or know you might want to do some of both, to a mix (EECS, CmpE, double majors, minors, etc., possibly with graduate school) and specialize later. Neither degree is more flexible or comprehensive than the other, and neither is more or less competitive in the workplace than the other (after controlling for school, individual differences, etc.)</p>
<p>I trust you have consulted the Bureau of Labor Statistics Occupational Outlook Handbook for information on these careers and employment/pay/etc. comparisons? Google “BLS OOH”, go to the A-Z index, and look for Computer Software Engineers and Engineers (see Electrical engineers, and Computer engineers). While the employment and pay is interesting, try to focus on descriptions, nature of the work, education and training, etc. The real issue you’re dealing with right now is figuring out what you want to do with your life. It’s a hard question, and we can’t answer it for you.</p>
<p>A few things I’d like to add is you have to work within your school’s program, so try mapping out the different options to see if they are doable with the time/money you have.</p>
<p>And the actual degree, those few years in the classroom, will soon be eclipsed by your growing years of experience. </p>
<p>Have you considered searching for a job after your BS and working on the MS at night? Often it will be completely funded by your employer and you can adjust your goals as you learn more about the field(s) you’re interested in. </p>
<p>My husband and I went into Defense immediately upon graduation with an EE degree (different shops). I initially worked in a pure software area while he went into hardware. There were always different projects beginning or existing ones needing more bodies and it was exciting to be considered for either hardware or software. Gaining experience in either was a great opportunity and strengthened our ability to switch back and forth. We later moved to a large Fortune 500 company and again, were able to switch around. If you work in a small, focused company, they would not be able to give you the same opportunity. So maybe your best bet is to look for a position in a company that has multiple areas of business and welcomes continuous education and opportunities to employees.</p>
<p>I disagree with aegrisomnia here…although “If EEs get hired for software roles, it’s because either (a) the CS candidates who applied weren’t of comparable quality” is a truism (the same could be said of any major…if the competing CS candidates aren’t of comparable quality of course they would hire the quality candidate)</p>
<p>I agree with BEngineer and mathfan123. I think it is definitely possible for EEs to move into software, provided they have the skills. I’m a junior studying EE, but by the time I graduate I’ll have done two internships that were “software” internships (everything from PHP to C and embedded systems).</p>
<p>CS is known for not requiring a formal CS background to succeed. It isn’t uncommon for math, physics, or engineering students to do software jobs. As BEngineer alluded to, it is a lot easier for a EE to pick up programming through a couple classes or self-study and demonstrate that to an employer than for a CS major to pick up analog circuit design and demonstrate it. </p>
<p>In that sense, I feel like EE provides a broader base. That’s the reason I chose EE over CS (and EE over CpE). That doesn’t make it better or more competitive in the marketplace, but it allows me to be flexible in choosing what I want to do, since I have broad interests. I suspect the OP may be in a similar situation.</p>
<p>@gobeavs: I got the same impression of the OP as you did.</p>
<p>Like you, I earned a BSEE degree. I knew at that point that motors weren’t my thing, I didn’t enjoy analog design. I worked at a power company one summer and knew it was not me (they discovered I knew how to program and so I did that all summer instead). Logic, digital design, programming - those I loved. It can be beneficial to take a variety of classes and discover your favorites.</p>
<p>And about interchanging EE/CS, in the hardware areas I’ve worked, I only remember one CS person and he was hired to write verification software. But in all of the pure software areas, you are right that there is a huge mixture of degrees - all kinds of engineering (even chemical, which always surprised me), math, even non-technical degrees. Because those people took classes and became proficient in programming - some on their own and others were sent for training because they proved they could pick up new skills quickly.</p>
<p>Another thing about MS degrees…I kept with the broad theme there too. I took a microwave class and never did a thing with it, signal processing courses (again, never used yet), software (design/code/verify), pattern recognition (algorithms - loved it), logic design - I only used the software and logic courses in my jobs so far but I loved being exposed to everything. I was specializing already on the job and my employer recognized the value in me learning anything I wanted.</p>
<p>I’ve worked in Defense, small companies, very large companies, startups; worked various roles and managed large projects - all on my own terms as opportunities arose except for one failed startup which was still very much worth attempting. It all can be very exciting and each is different. This seems to be what the OP wants as options. I think no matter what degree he chooses, if he continues to be open to learning and trying new things, training on his own and at his job, there’s no reason why he can’t just pick and choose his whole life. </p>
<p>…And maybe someday choose something entirely different. My husband and I are now learning everything we shunned back in college - history, literature, film. Who knows what tomorrow will bring.</p>
<p>In my experience, while it is always possible for a grad in one field to work in another, it is becoming harder to work in CS without a CS degree.</p>
<p>Part of this is simply because it was until very recently a “new” academic field - the industry was growing much faster than universities were churning out graduates, and for a long time an actual CS degree was a genuine rarity! My professors for my first CS courses had degrees in everything from hospital administration to french literature (no, not exagerrating).</p>
<p>But that trend has changed, and while there are and always will be jobs for EE’s who can program, most companies hiring software engineers want a CS degree - it is simply safer, in that the person has been trained to a more consistent standard and has a deeper understanding of what they are doing. My company (a large defense contractor) has tons of software engineers, but I am not aware of more than one or two who (a) are not CS grads and are (b) also under 40.</p>
<p>Can you still do it? Absolutely, it is just getting harder. You have to pick up those skills on your own AND demonstrate a competence greater than the seemingly millions of new CS grads each year. You will probably have to look at niche positions where programming and EE overlap, which probably means Google is out. You can certainly start in a programming-related EE job and gradually climb into more and more involved CS roles… but why? If that is what you really want to do, just get the CS degree!</p>
<p>Also, as a note to the OP: you should expect to work in the field indicated by your masters degree, and you will need to position yourself as an undergrad to get that masters degree. This is not as easy as it seems, presuming you want to go to a decent grad school.</p>
<p>So to summarize, what I am hearing from everyone is a few things:</p>
<p>(1) Position yourself while in Undergrad, for your Master’s degree
(2) Do not do a Master’s to provide a broader scope for your formal study, a Master’s should be used to specialize
(3) ECE’s can do CS, but there may be some high complexity coding that you could have to take some classes to refresh with
(4) CS cannot do an ECE’s job without much more schooling…</p>
<p>So what does everyone think of Minors? Unfortunately OSU (my school) does not offer a minor in ECE, but it does have one in CS.
So two options could potentially be…
(1) Bachelor of Science in Computer Science, with many classes in ECE (Attempting to piece together something resembling an ECE minor)
(2) Bachelor of Science in Electrical and Computer Engineering, with a minor in Computer Science</p>
<p>Just remember that the name of your degree is far less important than the courses you take. </p>
<p>Figure out what you want to do for a career. Based on this, determine what courses you will need. And based on that, find a program that suits your needs. So in a sense, work backwards.</p>
<p>On the summaries, they sound good, except I would argue that the difference between (3) and (4) isn’t as pronounced as it might seem in this thread… and that the real difference probably has more to do with labor economics than formal training (check the BLS OOH for information on employment numbers, and compare to college graduation rates, which seem more elusive).</p>
<p>I think that option (2) is what I’d recommend. Robotics is a classic computer engineering track problem… at the undergraduate level, you’ll learn enough about EE and CS to get a job related to robotics or get into a graduate program for robotics (if memory serves, GaTech has one, and I imagine many others do as well)… or a good EE/CS grad program.</p>
<p>Not sure if i am going to agree with that companies tend to hire CS for software jobs much more than anyone else…</p>
<p>Firsf of all, for software engineers, there are actually people with software engineering degrees instead of cs.</p>
<p>The preference for a cs degree may be less than you think. Oil and Gas/utilities/ military usually prefer ECE over CS due to their Need to have their software interfacing with their hardware (such as SCADA). Robotics is the same thing because (especially at my uni) the professors who teach robotics are EE professors (same reason due to that robotics usually have hardware programming). The industries of which my friends in cs have the upperhand is in iT, web development, software cryptography, database control, finance application analyst, mobile dev and roles in other niche market.</p>
Your experiences, of course, might be different from mine.</p>
<p>
These degrees are still fairly new, and the differences between these degrees and degrees in computer science are not (yet) as marked as they (probably) should be. Instead, it seems like a slight massaging of the computer science degree to legitimize what is essentially a publicity stunt to attract more students to computing. Note that I do not mean to marginalize software engineering as a valid field of practice or study; I feel like, in time, it will separate off from computer science in much the same way that, e.g., electrical engineering separated off from physics and the way physics separated off from natural philosophy. Computer science has only been around for less than a century… give it time.</p>
<p>
Perhaps I should have been more clear when I said that CS was likely preferred for software roles. What I meant to say is that it is likely preferred for real, pure, software roles, as opposed to roles where you are required to write software to interface with hardware. I have already suggested that electrical and computer engineering (which is usually more oriented with EE than CS at most universities I’m familiar with) is probably a better fit for someone who wants to get into robotics (and, similarly, the other roles you allude to). It is not a better fit to get into some of the areas you mention, which are more along the lines of what I had in mind. In fact, I don’t think it’s so far out of line to say that the jobs you’re talking about fall under the “it’s not really a CS job, but an EE job” clause of an earlier post…</p>
<p>Point taken, if it is pure software roles I agree with you. Its just that there are a lot of positions out there that require the knowledge of hardware in which they will prefer to hire EE to do development. My intention is that dont be discourage of getting a EE degree if you are interested in programming because there are alot of those jobs out there that specifically needs EEs or comp enggs to do dev work.</p>