Hacker News new | ask | show | jobs
by joelmaat 4865 days ago
Computer Engineers and Computer Scientists take essentially the same software design related courses. The difference is that Computer Engineers don't have to write an Operating System, and instead dig deeper into Electrical Engineering. I had to do Software Engineering, software theory, electrical design, hardware/chip design, embedded systems design, web design, all of it.

Being a Computer Engineer myself, and choosing Computer Engineering over Computer Science, I'd say the degree is tougher to earn, and you learn a lot more random things (there are a lot of quality algorithms and design approaches that Electrical Engineers learn, and it's very convenient to have been exposed to them, to have my mind open to the possibilities, and to have them in mind as I work) that give a slight edge everyday. Also, to generalize, Computer Engineers tend to be more versatile, open-ended, jack-of-all-trades types (fits with the Entrepreneurial thing), versus the specializing Computer Scientist. They also tend to keep up with new developments and look for new and different ways to do things. Of course, a crappy Engineer is a crappy Engineer, and many that make it through the Computer Engineering course end up specializing, because they can't handle it all.

I don't think it's a growing trend, though, and my experience had always been similar to that of a designer's: not enough credit/appreciation. Maybe that's changing, I don't know. Also, all these random things I know, and the difference in my approach to problems has always been continually suppressed, watered down, and stomped on by management, and after a few months/years, I realized the only way to make full of my potential, my approach to things, and what I know was to branch out on my own.

1 comments

I thought a CE degree tends to learn less theory than a CS degree. For example, my favorite CS course was language and automata theory. I looked at the ECE courses for UIUC (http://www.ece.illinois.edu/courses/ ) and they don't offer an automata course, or data structures. For that you need to take a CS course http://cs.illinois.edu/undergraduates/academics?quicktabs_1=...

In my career so far developing software for chemistry I've made heavy use of graph theory, formal language theory, and data structures that I learned while an undergraduate.

I don't have the same assessment as you in the advantage of a CE degree over a CS degree. I suspect there's a bias error, as you did not enter a field where a CS degree would have been more useful. Nor do I think that a CS degree is specializing, given the courses I took in operating systems, programming language theory, computer graphics, databases, etc. Of course, from my perspective "electrical design, hardware/chip design, embedded systems design" are all variations of the same thing, so it's a definite matter of perspective.

In any case, after 5 years or so in a career, the specific advantages of one background over the other get pretty weak.

Yes, I didn't take the Automata Theory course, but I learned essentially the same thing in Discrete Mathematics, Control Systems, and Digital Design (albeit with an eye towards Electrical Engineering applications). I remember looking through the courses, as you did, and the only gap I remember noticing was Operating Systems (and maybe graph theory, now that you mention it). It would have been nice to be introduced to machine learning while in school, but that's fine, I ended up learning it on my own.

There could easily be a bias error, but I said what I said simply because everything covered in the CS curriculum seems to also be present in the CE curriculum, but in the CE curriculum more is added. So I see the CE degree as a CS degree plus the essentials of an Electrical Engineering degree.

The advantages, if there are any, can definitely fade away after a few years of real experience, assuming everyone continues to better their knowledge, and those years aren't spent, as is typically the case, repeatedly re-implementing the same solution.

Now I'm curious - which of those courses covered the pumping lemma or LR(1) grammars? I'm surprised to hear that they are relevant to a Discrete Mathematics, Control Systems, or Digital Design course.

Or was those covered in your compiler course?

We covered graph theory in discrete math - it wasn't an independent topic - so I'm surprised that you didn't cover it in your discrete math courses. As I recall, first semester was more combinatorics and second was more graph theory, but I don't recall at this point.

Also, in reading the ACM curricula guidelines, I came across the comment "As is typical of most programs in engineering, this program has a smaller general education component than Curriculum A described in this appendix, with more hours devoted to computer engineering topics."

That is (and using your earlier terminology), a computer engineering degree is more specialized, while a computer science degree will include more non-CS courses and give a 'more versatile, open-ended' education. :)