I'm currently pursuing a degree in Computer Engineering. I decided on this path because I've always been absolutely fascinated by computer hardware, and want to know how it works. If I understand correctly, a Computer Engineering degree will teach me all about the technical aspects of hardware, and how it's designed. This is something that absolutely fascinates me. If I am wrong, what degree would I be looking for?
The only other concern I have, if I am indeed correct about my assumptions as to what a Computer Engineer is, what kind of work is currently available to just out of school Computer Engineers? I have heard conflicted reports about it so I would like to get more information if possible.
Honestly there are just too many aspects of modern chip design to cover in a POST , but I'll try and give you the jist of it. It depends on your universities definition of Computer Engineer (which is usually a bridge between Electrical Engineers and Computer Science Majors) but normally Electrical Engineering focuses on the physical working and design of chips and electronics. Even so, chip design is very complicated and modern chips are designed by several people rather than just one person. Some people specialize in defining the ISA (Instruction Set Architecture) for low level assembly programming. The ISA has a direct effect on the Instruction Decoders, if there are any, FP unit (if there is one) Integer Unit, and so on. Also you have to consider a chips role (ie GPU, CPU, Decoder, DSP, etc.), thermal characteristics, and cost constraints.
That doesn't mean you have to be constrained to hardware design. Understanding the inner workings of a chip is useful for writing better compilers for those chips. It is also useful knowledge (but not actually required) to write more efficient programs for a specific chip. For example if you know the behavior of a particular compiler and know that structuring a loop in model A will compile code that runs 20% faster on a chip than model B you are pretty darn valuable.
The University will want you to be a jack of all trades, and that is useful, but that's not going to get you a job. What will get you a job is to be a master of one. Decide what you want to do and pick up skills that correspond to that. If you want to design then next Intel i7 or AMD FX pick up skills related to CISC CPUs and chip fabrication. If you want to develop GPUs then pick up skills corresponding to how they work and the APIs that work with. If you want to work on compilers, well, I have nothing to say to you except your nuts and I'll say the same if you want to work on the memory management aspect of an OS .
Ah all good info, thank you so much. What kind of entry level jobs should I expect to see then? And how available is the job market for Computer Engineers? Also, I could just be reading too much, but I've been learning a lot about quantum computing. Now, I know quantum computers are still in their infancy and may never actually take off, but it sounds like something I'd like to be a part of.
Because of this I have been considering picking up a double major in Physics as well. Do you think this would be a good idea, or would getting into the research field of quantum computing be something best left to the geniuses of this world ? Either way, thank you so much for your info so far.
Who knows about quantum computing. I had enough fun with 3 dimensional math, so taking it beyond that to me is just a pain . I don't think it would do much for your career to double major in physics unless you really want to specialize in quantum computing. After all alot jobs we use to allocate to electrical engineers with a focus on physics seems to be outsourced to India or China and the like. The demand in quantum computing is going to be for the innovators, the ones that come up with ways to make quantum computing work and those that write compilers and coders to run some kind of useful program on a quantum computer. If you're passionate about it then go for it.
If you just think it's neat and not a lifelong passion I'd say that there are easier things to pursue. The job market for computer engineers would be in things like embedded systems (usually running linux) or in smartphones. Being at least decent at C/C++ is pretty much a requirement there and contributing to the open source community can help you in that area. Some jobs are of course outsourced there too.
Yea looking into it, I would have to spend too much time in school for something I only think sounds pretty cool, not something I really feel passionate about. Do you think it would be a good idea to double major in Electrical Engineering? It would only be a little over a semester of extra work so I am considering it. Thanks again for your info!
I don't know if it would help to double major, but it can't hurt. If anything it's nice to put on a Resume ^_^ and it will give you more time to decide what you want so go for it. What will help you most is contributing to some Open Source Project as having a credit there will do wonders for you. It's also a good way to get some real world experience (and squabbling). You could also check craigs list for local gigs like reprogramming some factory bot and working on some database. Yeah you'll work for cheap but it also gives you some experience, assuming nothing goes horribly wrong ^_^
An EE degree with a focus in embedded systems is like a Computer Engineering degree except with a little more hardware focus than software.
I would have to agree that internships, applying to a lab at your school, or contributing to an Open Source project is probably going to do more for you than a double major in EE. If you get a double major you should really try to diversify a little bit more, as EE/CE will have much overlap.
Hmm, I see. Are there I'll talk to my school's Engineering department and see if there are any internships there I can apply for or if they know of any off campus. Are there any open source projects you guys can recommend? I'm a bit rusty on my programming as I've only just started a class on C and I haven't used C++ in a few years. I have been using Java pretty rigorously for my own projects, so I am fairly decent at that.
Either way if it will help me out in the long run I am more than willing to do some self study to contribute to an open source, I just need to know what you guys would recommend. Thanks again!
I recommend you pick something you are interested in. It's very easy to get lazy with something you aren't too into. As far as languages as long as you know good object oriented programming practices and programming logic that's easily applicable to any language. Since you're currently most familiar with Java though you may want to take the time to get to know Android. Android and just smartphone developers in general are in demand at the moment.