3 ms·
Having done degrees in both electrical engineering and computer science, it seems to me that EE schools on the whole manage the theory vs. practice a bit better
by kwantam 16y ago
Having done degrees in both electrical engineering and computer science, it seems to me that EE schools on the whole manage the theory vs. practice a bit better than CS schools do.
Just as in CS/SE, EE has a wide range of topics, from the very practical ("how do we organize a team to build this") to the very theoretical (quantum mechanics, nonlinear control systems, signal processing). Yet somehow, no one in the EE industry is lobbying for two separate majors (I know; I work in it).
In EE, it is just accepted that you just need a theoretical background to be a top circuit designer. This isn't really open to argument: the best ideas and the best designs are almost always the result of careful analysis and deep understanding of the underlying phenomena. When I interview someone, I'd much rather know how well they understand control theory than how well they can throw together yet another folded cascode. (I'm sure there are exceptions to this rule, but frankly I have yet to meet one.)
Most good EE departments naturally have a few separate tracks that you can follow as an EE. For example, at MIT, the EE headers are circuits (6.012), signal processing (6.011), E&M (6.013/6.014), and bioelectrical (6.021). You had to do some work in each, but everyone generally gravitated towards one or two of them. As a result, people who want to do hard core device physics can take a very different set of classes from those who want to design microprocessors.
At MIT, the same model applies in the CS department. There, the headers are 6.033 (computer systems engineering), 6.034 (AI), and 6.046 (algorithms), and under each there are vastly different topics offered, from compilers to classes basically indistinguishable from pure mathematics :). As a result, I don't feel at all like my CS education was too theoretical: I was able to choose a somewhat more practical path.
Given my experience, I hold with those who favor the ability to diversify in accordance with one's interests. It has served me well, anyhow.
- _delirium 16y agoI like the idea of diversifying, but CS borders a lot of disciplines, some of which it's either gradually annexing or gradually being annexed by (sometimes it's not clear which is which ;-)). I'm not sure it's possible to fit everything into 4 years, at least as all mandatory components, unless someone decides by fiat where the boundaries of CS are. For example, as someone interested in going into AI research, the main things I wanted to add onto a PLs/theory/algorithms CS core when I was an undergrad were statistics and philosophy, plus a bit of (computational) linguistics and cognitive science. A rigorous grounding in advanced statistics, in particular, is becoming indispensable in some areas, especially as portions of the statistics field are actually migrating into CS departments (machine-learning and data-mining type stuff). Within the confines of a 4-year program, I took basically no software engineering, and relatively little low-level systems/compilers/architecture stuff, to free up room for that other stuff. Other people chose differently, but I don't see any reasonable way to fit in all the relevant stuff in 4 years (for example, the people who took all the architecture/OS/systems classes typically didn't take more than one intro statistics course).
- kwantam 16y agoIt's fair to observe that there is a whole lot to learn. I'm not sure the extent to which you're disagreeing with me, but I'll submit that if it's not possible to learn it all in 4 years, adding a SE major won't magically make it possible. I doubt any engineer or scientist with a remotely interesting job is in a position where they knew everything they'd ever need coming out of college. In the end, the most important experience you should get out of college is how to teach yourself more stuff later.
- gamble 16y agoI have degrees in CS and EE as well, and I was actually talking with one of our lab instructors on this topic yesterday. It's obviously going to depend on the school, but my experience was also that EE does a better job of balancing theory and practice. There's a better sense of what constitutes foundational theory in EE than CS. Every EE program is going to have basic sciences, circuit theory, E&M, signals, control, etc. Beyond basic data structures and algorithmics, you can find almost anything in a CS curriculum. On the practical side, CS professors typically have less experience in industry than in EE. The vast majority of professors in the engineering faculty at my university are professional engineers, which requires at least a couple of years of practical engineering work. One point I will give CS, though - CS students typically get far more design experience than engineers. EE has a lot of emphasis on problem sets and lab exercises, whereas CS students are usually designing their own programs from the first day.