<p>a bit of background info: I have hard times making desicions and have no exposure in either disciplines. I have just finished my freshman fall semester of college and should be averaging a GPA of about 3.6 . I have come up with pros and cons yet I cannot decide which one will be better for me.</p>
<p>I have no experience in programming either as the curriculum- all engineers take same 1st year classes. I chose engineering originally because i like math, want a job without needing graduate school, and don't mind science here are some pros and cons I have decided( feel free to correct me if I am wrong)</p>
<p>Computer E Pros:
- finished 1 semester so I won't be behind
- job at hardware or software( more choices of what I will be doing in job field?)
- sounds more prestigious as a degree
-getting a good GPA in a "difficult field"
- college of engineering is more presitigious at my school/ bigger/ more faculty
- minor in CS with just 3 extra classes(not sure if this really is of use)</p>
<p>Cons:
- probably harder as far as classes go
- more involvement in hardware specifically at my school
- less software
-I hear the jobs are mainly in the software sector
- because you are tackling both EE and CS, you are not as proficient in one specifically
- needs a full year of physics</p>
<p>Comp Sci Pros:
- seems like a more relaxed curriculum and I'll be able to take fun electives
- No physics - I have AP BIO credit and which will cover my 1 year science requirement
- software is fastest growing career wise</p>
<p>Cons:
- requires more classes overall
- not as prestigious sounding as degree in compE
- feel as if I am simply taking an easier way out
- will a 3.0 be seen as acceptable as it is with compE?
- job consists of sitting in front of computer all day everyday( if I learn I don't like it after I graduate with the degree , I am stuck with it)</p>
<p>Please help. Overall I want a garanteed job with stability. Are there certain classes that are STAPLE to getting a job in software. My school CompE next semester will have a class to learn C++ and MAtlab,then Algorithms and Data Structures sophomore year; as oppose to if I switch to CS I will start from square 1 learning fundamentals, discrete structures and may be a while till I learn C++. But CS goes into HTM,unix, etc.</p>
<p>I think either path is fine career-wise. Don’t get hung up on prestige. It all depends on what YOU like to do! Are you interested in hardware and the science behind that? Do you like working with your hands to design/build physical things rather than just virtual things?</p>
<p>One advantage that CE majors have is that they have the option to go into EE for grad school (provided the program included enough EE coursework). I know a handful of guys who did this. The vast majority of CE majors I know, however, ended up in software, competing for the exact same jobs as pure CS majors.</p>
<p>I’ll also agree with BeanTownGirl’s suggestion about not getting hung up about “prestige”. I’m guessing that any perceived prestige factor of an engineering degree only stems from the fact that it’s a more popular (and therefore selective) major, and just because a major is more selective doesn’t mean that it’s any more rigorous than a math or science major. If I knew then what I know now, I would have chosen applied math (with a computer science emphasis) for my undergrad degree.</p>
<p>I’ve been working as a software engineer for over 6 years now, so I think I have some perspective on which computer science classes are the most useful for future software developers. IMO, operating systems, compilers, algorithms, and architecture are the four essential courses you need to take.</p>
<p>Mokonon: Why do you think compilers is so important? The reason I ask is that I’m giving it up next quarter in favor of interning at [insert cool well-known company]. If I need to, I’ll take it it online at Coursera.</p>
<p>In the wider world, I don’t think there’s much of a prestige difference. CS and CE really just cover different areas of the hardware/software spectrum (with a fair amount of overlap, of course). The benefit of CS is that if you know you’re going to get a pure software job, then you can take more classes relevant to your interests/future work. And beware, some of the higher-level CS classes will be just as hard as higher-level CE classes.</p>
<p>One more thing - nowadays, everyone in engineering will be spending hours and hours in front of a computer. I don’t think there’s anywhere that you can really avoid it.</p>
<p>Thank you guys. I feel like more of my plan is to do software. Also, can any of you tell me what specifically you do in the your software engineering job. </p>
<p>I know different companies do different things but I would love some insight on a day in the job so I can see if that is something I would like to pursue. Because if not I better consider a different major now before it gets too late.</p>
<p>Yeah, please don’t allow “prestige” considerations to influence your decision. Clearly if you’re interested in circuits/hardware along with software, CE is the way to go. If you’re primarily interested in software, go with CS. I work closely with EEs on a daily basis, and one resounding theme I’ve discerned from the majority of them is that their CS coursework was hard, and certainly not a GPA-padding situation. Algorithm study seems to be a prominent “okay yeah that SUCKED” topic.</p>
<p>Fallacies of anecdotal evidence aside, CS seems to be a hit or miss topic for a lot of people.</p>
<p>I interned at Amazon over the summer; here is one of my typical days:</p>
<p>-Come to work around 10ish
-Scrum meeting with team for 15 min (basically everyone goes over what they did the previous day, what they plan to do today, and other people will give feedback)
-Work on my project for a couple hours
-Get lunch with teammates or other friends
-Track down and meet with people I have questions for
-Work some more
-Leave around 6ish</p>
<p>Depending on the day, of course, there would be other meetings, talks, and random social events.</p>
<p>My team probably wasn’t the most entertaining team to be on, but there was interesting work to be done. In the winter I’ll be interning at a place that has a more “fun” culture, so we’ll see how that differs.</p>
<p>Hey sumzup. I recommend taking a compiler construction course, not because you’ll ever need to write a compiler in your career, but because it helps you understand programming languages and programs on a deeper level, along the lines of an assembly language course or an architecture course. This will help you write better, more efficient code, and also help you identify bugs or build issues when they crop up. </p>
<p>You’ll be surprised by the knowledge gaps I often find in even some very experienced programmers. The other day, a much more senior programmer I work with was befuddled when a simple pointer cast operation was causing his code to crash. The problem was immediately obvious to me – he was casting a memory address as a pointer to a 32 bit integer, but the memory address was not necessarily 4-byte aligned (a no-no in the architecture we’re using). </p>
<p>Not too long ago, I spent hours debugging an application that was crashing randomly due to memory corruption. It turned out a programmer (with almost 30 years of experience) had written a pragma pack statement in his library header file without bothering to save and restore the original packing. I fixed the bug, but I’m not really sure if he ever really understood why that was causing memory corruption.</p>
<p>I’m not saying that a compiler course will turn you into an elite hacker, but I do think it gets you closer.</p>
<p>Thanks for the detailed response. I started the compilers class on Coursera earlier today; hopefully I can get through a substantial chunk over winter break.</p>
<p>I advise you to ONLY DO CE IF YOU LIKE HARDWARE. If you’re a guy like me who would rather program the hardware instead of learn the very low level details of how it works (stuff you won’t need to know for a Software Engineering job), then choose CS.</p>
<p>If your career goal is software, it would be very silly in my opinion to do CE because you’d be taking many irrelevant and uninteresting EE classes that will probably bring down your GPA. If your career goal is software, choose CS.</p>
<p>You’ll still learn the low level (circuit level) details of how a computer works (Computer Architecture) with a CS degree, but you probably won’t go so deep into how signals processing works for example.</p>