I have been thinking about my potential career choices over the past few months with regards to the computing industry and I am tied between computer science and computer engineering. My question ultimately is: which is more flexible and more rich in opportunity in the long run? By flexibility I mean the diversity of the discipline/field. I know it is my personal preference at the end of the day, though I am just interested.
I am leaning more towards the computer engineering side at the moment since I am interested in the electrical engineering side of computer hardware (I have been studying the architecture and organisation of the intel 8085, memory and I/O port interfacing, and manuals of controllers and other peripheral devices lately), as well as the low level assembly language programming, and how they are used to implement prominent data structures in higher level languages (arrays, lists, classes ect). I like how computer engineering can be seen as a computer science/elecrical engineering hybrid though I think more potential/job opportunities will be present if I just take full-on computer science degree. What are everyones thoughts on this?
A lot of Universities have hybrid CS/CE majors. My major is one of those types. It's basically a CS degree with the addition of some electrical engineering and hardware related courses, and all of the other engineering requirements. I have to do more math and physics as well as chemistry.
I am kind of regretting it in some ways / considering switching to pure CS only because you have more room in a pure CS degree to take your choices of upper division CS electives. In CSE, there is less freedom in that regard.
I am eager to learn about hardware and everything, but for me I am finding that the EE related courses like circuits for example, are not nearly as fun and interesting to me as theoretical CS courses. They are very demanding courses as well. The EE courses I have to spend a ton of time on.
The plus though is that I think it will open doors to some interesting low level jobs working at the level where hardware and software directly interact. I am interested in finding jobs working for companies like AMD, Intel, NVIDIA, APPLE, etc, GPU, GPGPU, as well as jobs working on drivers for devices.
Anyways, I think that CS/CE or EE hybrids are a little more ridged and demanding, and leave less creative and intellectual freedom than just CS, but it may be worth it. It's too early for me to say much more about it.
But you seam to have a very strong interest in low level CS and hardware, so I don't think CE would be a mistake for you. You will still learn some programming and have the opportunity to get a job as a software engineer. Ultimately, I think that the degree, CS, CE, CSE, whichever, will open the door to being offered the opportunity to prove yourself, and then it comes down to proving yourself by explaining/showing your personal projects, interests, research and skills.
@htlrwin Thanks for the detailed reply, I agree with you that CE might leave less creative and intellectual freedom than the full CS, which was what I also thought and why I ultimately made this thread. However, like you mentioned there are still very interesting jobs dependent on that particular degree that you could do, and I don't have to isolate myself to just low level CS/hardware with a CE degree. I think I will go with CE for now, though there is still lots of time. I have heard that the first few courses of CS and CE in many universities are similar, do you know if that's true?
@Mats I agree and see what you mean, though I was referring to CS and CE specifically, in terms of the future demand and potential between the two.
Yes, at my University, CE majors still take Discrete Math for CS, Intro prgramming, Obj. Oriented programming, Assembly, Data Structures, Analysis of Algorithms (upper division), and Operating Systems (upper division).
But CE majors don't have to take programming languages, Analysis of Algorithms 2, or Theory of Computation.
Both CS and CE and CSE have to take Computer Architecture.
Yes. Where I am at, CS majors don't even need to get to vector calculus, or differential equations, but they do need linear algebra. So CSE, or EE, or CE, you have to take an additional calculus course and differential equations. The CE and EE majors also need to take Modern physics, which is relativity, quantum mechanics, particle physics etc.
For the EE courses, you really need to know your calculus and differential equations.