<p>Hey! I was wondering what an ECE program is like in comparison to a computer science program.</p>
<p>Here's the deal (bear with the story). I am a high school junior, and I have recently taken AP computer science AB. I did very well in the class, got a 5 on the exam, and generally had a very good time learning interesting stuff. After taking the course, I was fairly sure that I was sold on majoring in CS in college. However, a friend of mine who majored in CS for pretty much the same reasons I am considering it (did well in AP and liked it) is now telling me that majoring in CS was not as great as he thought it would be. He said that he really enjoyed the abstract and theoretical aspects of CS, but that the programming aspect was boring and repetitive. He is now not looking forward to a lifetime as a software engineer because of how boring programming is. I found his opinion particularily disturbing because I noticed in AP that I have similar CS tendancies: I liked the abstract components of CS, like thinking of algorithms, to be much fun, but was often annoyed by the actual implementation of those algorithms through programming. Because of this, I started looking at other majors to possibly major in in college.</p>
<p>And so, after all that backround, I have some questions about ECE in the context of my CS experience</p>
<p>1.) Does doing ECE work feel more like thinking of CS algorithms, or more like programming? That is, is it more abstract thought and clever problem solving, or more like implementing an already solved problem?</p>
<p>2.) How much math and physics are involved in ECE? Do electrical engineers (not ECE students) spend a lot of time doing hardcore, brainbusting math and physics?</p>
<p>3.) How much of the time do electrical engineers spend programming?</p>
<p>Just because you major in CS it doesn’t mean you have to be a software engineer. You can delve into the theory, or do a bit of both, whatever. </p>
<p>Trust me, when it gets to the higher-level software engineering courses, building things becomes much more fun. The programming you do in intro (especially the ‘data structures’ class where you play around with things like trees, arrays, queues) is, admittedly, quite tedious. But it does get more interesting. </p>
<p>1) First off, both ECE and CS are “abstract thought and clever problem solving” in the sense that you are given a problem and you must apply the theory in order to implement a solution. That being said, I’d imagine ECE is more applied, given that it is focused on engineering. As always, you will end up taking both theory and applied—signal processing, as opposed to CPU design, for example. But, expect to see more applied/practical courses in ECE VS more theoretical courses in CS. </p>
<p>By definition engineers are problem-solvers, and the same is true for computer scientists and software engineers (notice the word ‘engineers’ in software engineers). In my CS program, “implementing an already solved problem” is never the case. We always have new problems which need to be abstracted, thought through, and implemented using theory. So, after my long paragraph, I would say that ECE is indeed a lot of problem solving, but CS is no different in that respect. Ultimately it comes down to hardware vs software.</p>
<p>2) I’m not an ECE, but I am inclined to believe that ECE probably has the most rigorous physics requirements within all engineering disciplines. Not too sure about the math, but I do believe most ECE programs require you to take single-variable and multivariable calc, followed by introductory differential equations.</p>
<p>Thanks for the post! However, I feel like I must clarify something. By " implementing an already solved problem" I don’t mean ‘oh, I need to implement soulution xin this software app’ I mean how much of the time is spent implementing an idea/algorithm you have thought of into a product.</p>
<p>I can’t comment on ECE, but as far as my experience goes with software engineering, coding does not take too long if you have your spec documents right. Arriving at the solution can be very time consuming, especially when you need to consider things like application security, stress testing, and reliability.</p>
<p>ECE actually has two majors EE and CompE. I’m a CompE junior at UIUC. As an ECE you’d be expected to do more mathematical stuff like signals processing and e&m, but if you decide to take CompE track it is minimal at the best, plus you can pretty much take any CS class you want except the ones which have ECE equivalents. From what I’ve experienced the CS “weed out” classes tend to be easier than ECE ones (ECE 290 (logic design) for example is no match for its CS equivalent CS 231)… So go for CompE if you are interested in Computer Architecture and Digital Systems you can take any CS class you want without requiring to take heavy theoritical stuff like CS 373 (advanced discrete maths). But go for CS if you are interested in theory of computation more…</p>
<p>I’ve been programming since around my 12th birthday, and will be a CS major at Carnegie-Mellon this fall. I’ve done good-size projects in 8 languages, and paid work in 3.</p>
<p>Is programming repetitive? That depends, both on what you’re doing and in what language.</p>
<p>Imagine if there were no function calls. If you had a program that needed to solve quadratic equations, then, every time it needed to do so, you’d have to retype your code to do the necessary multiplications, square roots, etc. Function calls are a feature of almost all high-level languages that eliminate this potential repetitiveness.</p>
<p>However, there are quite a few other forms of repetitiveness which function calls alone cannot eliminate. Many languages have features which eliminate other broad classes of repetition. Unfortunately, quite a few popular languages such as C++, Java, and Visual Basic are quite lacking in the features that cut down on repetition (and are otherwise extremely verbose), and thus programmers using them often wind up like the OP’s friend. He’d be better off in a “very high level language” such as Ruby.</p>
<p>Jstar1: Software engineering is a subfield of, or rather, applied CS. CS major programs will contain both theoretical computer science and software engineering.</p>
<p>Computer science is sort of a specialized area of applied mathematics. It deals with applying mathematical formalisms to analyze computation.</p>
<p>The CS major will do some of this, and some basic hardware and software engineering stuff. Perhaps an unduly large part of CS undergraduate programs is more technically software engineering (how to write good programs), but that has more to do with the demands of industry than with the nature of the field.</p>