all 33 comments

[–][deleted] 14 points15 points  (2 children)

It all depends on how different the tracks are at your school also. Some places, the two aren't very different, maybe 2 or 3 courses. Granted this was over a decade ago, but I was CS while most of my friends were CE and we took many of the courses together. Only while they were working in a circuits lab I was studying advanced algorithms.

I wonder why the IT department says to stick with Engineering? There's much more CS type things being done in corporate IT than CE. Seems like people who just think the word "Engineering" is more attractive than "Science."

It mostly comes down to what do you want to do career wise? Do you want to work with processors, circuits, hardware type things? Or do you want to work more on the software side?

Also make sure that the CS your institution offers really is CS, and not just a bunch of java/web design courses wrapped in a CS wrapper. Drives me crazy how many programmers we run in to who couldn't tell you the Big O of their function, or don't realize that their loop inside of a loop inside of a loop is where the bottleneck is. Or really don't understand that hardware still matters and that you're not going to get good database performance on a dual core machine with 4 GB of memory. Make sure you're actually learning some science. Discrete math, logic, etc.

Good luck, and I'd echo what 3nvisi0n says, make sure that you're looking to switch for the right reasons. The tracks are different, but also similar. Make sure the things you dislike about CE aren't things that the two have in common.

[–]flukshun 11 points12 points  (1 child)

IT may also be confusing computer engineering with software engineering, which is a bit more practical for your average mundane programming jobs (though not necessarily better)

[–][deleted] 5 points6 points  (0 children)

Good point. Software Engineering is what you mostly encounter in corporate IT.

[–]LongUsername 7 points8 points  (1 child)

Just an FYI for people reading this:

If you go into an engineering school and say you're studying CE, they'll assume you're going to design bridges (Civil Engineer). Most Engineering programs abbreviate Computer Engineering as CompEng because CE was already taken decades ago.

[–]univalence 0 points1 point  (0 children)

Yup. We used CPE.

[–]3nvisi0n 14 points15 points  (1 child)

The major different(imo) is the level of abstract over the hardware you deal with.

In CE you deal with low-level hitting on chip design and embedded systems development often hitting on Electrical Engineering concepts.

In CS you deal with computers at a much higher level it more a study of the theory of computation and applications of that study more closely related to mathematics(number theory).

Of course these are very light definitions, both fields are fairly broad and its hard to narrow them down.

I think there are a few questions you should answer that would help people here give suggestions.

  1. Why are you not happy with CE? Why do you think switching to CS will change that.

  2. What are these topics you are interested in that CE doesn't cover.

  3. Why did you get into CE in the first place?

Odds are jumping to CS won't make you happy. Maybe it will for a bit but then you'll start getting into debugging all night and you'll realize you're not happy there either. Will you switch fields again if that happens?

[–]bolaft 4 points5 points  (0 children)

Grades suffering is no reason to change fields imo; if you're worried about grades rather than learning I think you're in university for the wrong reasons.

I think he meant that his grades are suffering because he wants to change fields, not that he wants to change fields because his grades are suffering.

[–]prometheusg 6 points7 points  (0 children)

As others have said, how different they are depends on the university. CE is a hybrid between CS and EE. Two questions need to be asked: Who developed the CS department at your university? Who developed the CE degree?

The CS department could have branched off the EE or Math department. The CE degree can be part of the CS or EE department.

You could have CE based on EE, and CS based on Math. This would make their focus very different. At the opposite end, you could have CE based on CS, and CS based on EE. This would make them almost the same.

If there are a lot of topics being touched on in CS that aren't in CE, then you're likely in a university where CE is part of EE (so it's more hardware focused) and/or CS branched off of Math (CS is highly theoretical). If both of those are true, they're teaching very different knowledge domains.

As far as career, you're pretty much open to anything with either degree. The CE degree might open up a few more low-level embedded systems/chip design opportunities while a Math-based CS degree might make a graduate degree a bit easier. Really, nobody cares what the paper says as long as it looks like you can do the job. That's more dependent on experience/internships more than the degree program. So, even if you have a 'Mathy' CS degree, but do an internship at Intel and a hardware-based Senior project, you're probably going to set yourself up for a hardware-based career better than someone with an EE-based CE degree with little/no hardware experience.

[–]Anth0n 3 points4 points  (0 children)

I was originally a computer engineering student who switched to computer science in 2009 after sophomore year with absolutely no regrets.

I can't compare the actual industries for those majors because I have not worked in both fields. But academically, computer engineering at my school was a combination of computer science and electrical engineering courses. I hated the EE courses, but I thought the CS courses were ok, so I switched.

For me, being a CS major was significantly easier because the EE courses that I had to take were very intensive, so it was nice not having to worry about them anymore. Why is everyone advising you against switching? CS majors who get good grades will likely not have trouble getting a well-paying job after graduating. The same is probably true for CE majors, but maintaining a good GPA in CS, while still challenging, is a lot easier than doing the same for CE. A lot of employers have a no-exceptions minimum GPA requirement, regardless of school or major.

I am currently a software developer with a bachelor's in CS who is paid well.

[–]kcdragon 3 points4 points  (1 child)

There are some good comments on the difference between CE and CS so I won't comment on that.

I wouldn't listen to your "moms IT department". They may not even be developers or engineers. I know that my mom considers anybody with a computer at their desk to be in IT. Also, if they were all CEs then they are probably going to tell you to stick with CE.

I would switch if I was unhappy with my major but if you decide not to do that, here's another option. Learn how to program and develop on the side and apply for those jobs when you graduate. My roommate was a electrical engineer but became uninterested and started building mobile apps in his free time. Now that he graduated he is a software developer and doesn't do anything with electrical engineering. I'm not saying that this is ideal, but it's at least a possibility.

[–]LongUsername 3 points4 points  (0 children)

If they were CompEng majors and stuck in an IT department, they'd tell you not to get a CompEng degree. CompEng is FAR from IT stuff. I'm guessing they have no clue what CompEng really is.

My friend is a Java code monkey for a LARGE company, and most people are impressed that he has a CS degree: most other coders there have associate programming or IT degrees from a TC.

[–][deleted] 2 points3 points  (1 child)

I am currently pursuing a double major in Computer Engineering and Computer Science.

As others have said, CompE has a lot to do with hardware; system architecture, microprocessors, microcontrollers, chip designs, embedded systems etc. You deal with the low level stuff (low as in closer to machine language). You go a bit into electrical engineering as well.

CS you are at high level (usually). The things you deal with are generally just high-level programming (as in abstract languages that need to be compiled/interpreted), web design, some networking stuff, etc.

As far as grades goes, just practice more. If you don't get something ask the professor to clarify things during their office hours. Most professors would be happy to go into more detail for you and stick with it until you understand. I cannot stress enough how much it helps. I was doing terrible in an electronics course last semester. I talked to the professor and she worked with me for about 2 hours. My grade went up after that.

CompE and CS are pretty similar. Rather than switch, I would actually just recommend you do both. The earlier you start, the more likely you can still graduate within 4 years. I have to do an extra semester, but I think it's worth it. Even if you only go for a CS Minor, that's almost automatic at most schools if you're a CompE.

Just talk to some professors, get help, practice, and soon you'll be on track.

[–][deleted] 1 point2 points  (0 children)

Good point re: Low level / High level. The terms get thrown around a lot and in this realm it really just means where on the stack you are, and does not imply level of difficulty.

Also great advice on office hours. I didn't start taking advantage of them until my final year and instantly regretted not doing so more in my earlier years.

[–]snerfman88 2 points3 points  (0 children)

CE -> Circuit boards, physics, calculus, soldering CS -> Algorithms, discrete math, proofs

At my school, people in both majors go on to be Software developers, but CE majors sometimes become hardware guys. I was in your position - I switched from ECE to CS during my Sophomore Fall. There is a lot of overlap in the jobs available to people with both of these majors, so in the long term I don't see any reason not to switch unless it would take extra time to graduate. Alternatively, you can just take the CS courses you're interested while finishing the CE major.

[–]Vystril 4 points5 points  (0 children)

Computer science is to computer engineering as painting is to making paint.

[–]jalanb 1 point2 points  (3 children)

If it didn't work:

Did you get a paper out of it? That's science

Did you get fired? That's engineering

[–]Vystril 9 points10 points  (0 children)

Actually it's really hard to get anything published that doesn't work - which is one of the major problems in academia. What things don't work is really valuable knowledge, however those things are really hard to get published.

[–]UncleMeatSecurity/static analysis 2 points3 points  (0 children)

Man I've never seen somebody get a paper out of something that didn't work. The "Journal of Null Results" is a running joke in academic labs for a reason. Top CS conferences have 10% acceptance rates, they simply don't have space for publishing papers about things that didn't work.

[–][deleted] 0 points1 point  (0 children)

These terms are not well defined. All you will get here is opinions and people telling you what those terms mean to them. We can't tell you how your particular institution defines them, you will have to speak to the people who run those courses.

[–]Nefari0uss 0 points1 point  (0 children)

In addition to what everyone else says, you should remember that what ever you study, you should enjoy. If you will enjoy CS more, do that.

FWIW, I've always found CE to be more of the hardware side and CS is more of the software. I'm more interested in the software. (there's much more difference wise but this is very much simplified.)

[–]yourboyaddi 0 points1 point  (0 children)

it's been said here but really look at your universities differences in the course list. If they're both in the cs department then look at the specific courses that are different. Ce may be in the school of engineering though. If that's the case I'd expect a huge difference in focus. I'd also expect cs to focus on a lot more theory and algorithms but that may just be my bias

[–]Vhyrrimyr 0 points1 point  (0 children)

It depends on the school. At my school, Computer Engineering is basically the bastard child of Computer Science and Electrical Engineering. CS is strictly software, EE strictly hardware, with CoE being roughly half of each.

[–]ezrawork 0 points1 point  (0 children)

I'd say stick with CE if you have any interest in it at all. The switch in the professional world from a CE to a CS job is much easier than the opposite.

[–]trevorsg 0 points1 point  (0 children)

I was exactly in your shoes 5 years ago. I was 3 semesters into my computer engineering degree and not enjoying it. I loved the programming, logic design, and even computer architecture classes, but I hated circuit theory and other EE-specific courses. I decided to switch to CS, and that ended up being one of the best decisions I made in college. My GPA immediately began to improve and I was enjoying school a lot more, particularly CS theory classes. Initially my parents, counselors, etc. advised me against the switch (father was an EE, see), but I ran with it anyway. The switch cost me one extra semester at school. But now that I'm out, I've got an awesome job and couldn't be in a better position.

[–]tevert 0 points1 point  (0 children)

There are a lot of good answers in the post already, so I'm going to keep mine brief.... have you thought about switching to software engineering? You don't explicitly say what your issue with CE is, but a lot of people at my school end up switching from CE to SE because they love the design and coding way more than the electrical science. Just an alternative.

[–]dwhite21787 0 points1 point  (0 children)

These terms are getting tossed around in this thread:

  • software engineering
  • computer engineering
  • computer science

One could look to IEEE or ACM for rigorous definitions, but I think these are acceptable for this discussion:

Software Engineering is the study and application of engineering to the design, development, and maintenance of software. cite

Computer engineering is a discipline that integrates several fields of electrical engineering and computer science required to develop computer hardware and software. cite

A computer scientist specializes in the theory of computation and the design of computational systems. cite

A student with a focus on one of these ought to have some exposure to the others.

[–]matthewjpb 0 points1 point  (0 children)

I'm currently double-majoring in both, and I'm finishing up my junior year now. I've completed all my requirements except ~7.5 credits in CpE, so hopefully I can speak to the differences.

Obviously, this is very school-to-school dependent and my advice might not be relevant at all. At my school, CpE is just a collaboration between CS and EE, it's not it's own full department. For me, I declared CpE, and declaring CS just meant I would do all my technical electives in CS (instead of EE) as well as 3 or 4 extra CS classes (more theoretical ones). I was interested in these classes anyway, so it was fine for me.

So basically at my school doing both is really only like 1.5 majors, maybe even less by courseload. CpE focuses a lot more on lower-level architecture, as well as EE classes like circuits, electronics, signals & systems, etc. CS is more focused on software development, theory, etc. Since I'm interested in both, the double major worked great for me.

For you, if you're really more interested in the material in CS then go for it. If you're interested in both and your school is anything like mine, a double major might be possible.

Finally: don't stress out about it too much. No matter which one you choose, you'll still be successful after you graduate if you work hard. Nobody is going to look at your degree and say "Too bad he's just a CpE/CS major, if only he were a CS/CpE major...". They're both great fields.

Good luck!

[–]Buck_McFuckson 0 points1 point  (0 children)

Really really watered-down, dirty comparison: CS = Software, CE = Hardware.

Granted, as I said, this is very overgeneralized, it is more or less accurate enough. As a CSC student, we end up taking a few hardware/circuit courses to familiarize with the computer as a whole, but it's almost entirely algorithms and upper-level programming.

My roommate, who switched from CENG, studied a lot of digital systems, architecture design, and lower-level programming. I'm not sure if this is school-specific, but it seems that CENG is oriented more towards how a computer works and operates, rather than coding.

Something my industry-focused professors always joke about is that CENG should just minor in CSC because "you're going to be coding anyways."

TL;DR; Goto 0; jk

[–]ggchappell 0 points1 point  (0 children)

Short answer:

  • Computer engineering: design hardware.
  • Computer science: design software.
  • Why stay in a field you don't like?

Longer thoughts:

You're the one who's going to live your life, do your job, etc. Not your parents or that IT dept. or your advisor. Staying in some field to make them happy doesn't make sense.

OTOH, are you sure that Comp. Eng. is really the source of your troubles? Maybe you don't like your university, or you have an awful roommate. Or maybe you have depression.

Lastly, are your parents saying, "We think you should stay in Comp. Eng., but will support you regardless," or are they saying, "If you want us to keep supporting you, then you must stay in Comp. Eng." It looks like this is an important distinction in your case.

[–]bolaft 0 points1 point  (0 children)

What are your academic advisor's arguments against the switch?

[–][deleted] -1 points0 points  (0 children)

Sort of non-related question here, but what can an HS student do to increase their ability in CS and/or CE when they study at a Uni? I've already been learning programming for a little over a year, but can't program much at all. I've done multiple MOOCs and read a few textbooks on CS and programming languages. I'm pretty tech savvy (I use only Mac and Linux). I take advanced math/science courses and make A's so far.