As an EE, and as I owe notfred for helping me with various issues in the past, I am going to post a long-winded opinion of mine. No cliff-notes, just read it.
First of all, the differences between EE and CS vary greatly by the university. At UT Austin, CS is considered part of the natrual sciences school; EE is part of the engineering school. At both UC Boulder and (I believe) Rice, where I have friends at, CS is considered an engineering major. So the cirricula vary greatly based upon how your major is classified.
I took APCS in high school and have several friends that went the CS route. I joined a few CS campus groups (ACM, for a few weeks) freshman year, so I think I know the differences fairly well. The emphasis (at UT) for EE is bottom-up - start with simplified machine code and assembly, go to C, then assembly on embedded systems, then C++. Granted, our simplified ideal computer we studied is not a real computer, but it gives a good understanding of how the computer actually 'works.' At the end of your freshman first semester you are supposed to have a very basic idea of how computers conceptually work., including basic combinational and sequential logic (something that CS majors never touch, at least not to my knowledge).
In CS, the emphasis is not so much on bottom-up, but instead on top-down. Start with Java and don't worry what happens when you hit the 'play' button on the IDE (coming from a CS friend of mine, haha). Then take classes to figure out each step of the underlying process. This is a better approach for CS becuase it works your brain differently - your freshman tests require you to 'visualize' data structures more. I'm at a loss for words to describe it, but while the EE tests are hard, it's a different part of your brain they are testing. Our EE tests require us to analyze material given to us on a test, say, state diagrams or circuits. The material is already on the test and you are using your class knowledge to analyze it. I don't know how else to explain it.
There is class overlap to an extent. But the goals of each of the classes are different. A C class for EE emphasizes different things than a C class in CS. Just becuase the course descriptions sound the same doesn't mean that the material is at all the same. One of my professors told us that our C class taught us from 'an engineering perspective,' while a CS C class taught you how 'to actually write code.'
The questions you are asking don't have set answers. What part of EE do you want to do? If you are doing electromatgnetic engineering and power systems, then everything you learned in CS is going to be wasted. Are you going into microarchitecture? Part of your CS might actually be useful. Are you going into software engineering? There's a lot of carry-over. Everyone's answers are going to be different because everyone has a different idea of what EE and CS are like because everyone goes to different schools.
My opinion? Both EE and CS are difficult fields to be in. You have to find a job that won't be exported. With that in mind, I am choosing to study EM engineering and power systems. IMO, you might be better off going graduate-level with CS because then you have something that can't be exported. If you have 2 degrees you might not be as marketable as having a gradate degree of some kind.
And as for those that think EE == math, you are WRONG. Math majors take a lot more theoretical courses than EEs do. We only have one semester (16 hours) of actual courses from the math school - Calc I, II, III, linear algebra and differential equations. Math majors have a lot of number theory and logic courses too.
Originally posted by: jliechty
Originally posted by: Chaotic42
You'll get all of the insane math and science you want. My college counselor told me that if I got a EE degree, I'd practically have a math degree. I'd only be a few credits short of one.
For me, I love math. The more the better. Pile it on and don't let it stop.
What about a double major in EE + math, if both are similar? Would that have any practical job applications?
math == not easy, but still great.
Edit for clarity and formatting.