<p>Of course CS students tend to be better at programming than other majors, but do any of you know any computer engineering students or electrical students who are awesome programmers, beyond your average CS kids level? (or even any other engineering major)</p>
<p>and as well, can someone with a computer engineering degree get an entry level job in a software company (programming) straight out of college or would be overlooked among the CS grads? basically can a CE compete with a CS in the real world job market for the same jobs?</p>
<p>It depends on the specific courses you take but CE’s can definitely work in the software industry (most work there in fact rather than hardware).</p>
<p>We hire lots of kids with CS/EE and CS degrees. We did hire someone with an EE and he worked out fine. In general, I don’t see CE resumes. I think that the main problem is that hiring people in HR departments filter out by major. Hiring managers tend to look for those with CS degrees. Obviously CS/EE, EE/CS and CS would survive a CS search.</p>
<p>There is one awesome programming (he does research and design too) with a Phd in English. He has patents for his work too. I never asked him how he transitioned from English to software engineering (he’s a consulting engineer). I also know a guy without an undergraduate degree that was the project leader for a product with tens of millions in revenue over its lifetime with some eye-popping names as customers.</p>
<p>In general, though, most of the hotshot programmers that I know have CS or EECS degrees.</p>
<p>Answer to first question: yeah, sure. Programming is a skill like any other, and most people can be trained to be good programmers. It’s more art than science. While CS majors may, on average, edge out other majors, it’s just because the skill is emphasized more in CS than in other disciplines since it is such a useful skill to have.</p>
<p>Answer to the second question: again, sure, why not. It might be easier to get certain jobs with certain degrees, but depending on courses you’ve taken, internships, projects, etc. you can get just about any job (especially with some good LORs). Could a CS major get a job in CE or EE? Probably.</p>
<p>Then again, if you know you want to do software, …</p>
<p>at my school computer engineering degree can be tailored for concentration in software, you can end up taking almost as many CS courses as a CS major…and only 1 circuits class</p>
<p>I was thinking with a CE degree i could possibly have more opportunities (maybe??)</p>
<p>i am at my 2 year mark and i am still on track for EE CE and CS…though my next 2 semesters will have to be tailored to my decision.</p>
<p>I don’t think a CS or CE is better than the other when it comes to general programming. The difference comes down to what they are programming. For example, a CS may write code to create and test new algorithms to solve complexity problems while a CE writes code to create embedded products.</p>
<p>This is why when you compare the differences in classes, you will see that the CS degree requires more theory and algorithm related classes and the CE degree requires more hardware design/architecture related classes.</p>
<p>Have you ever read a device driver? That speaks just about enough for how bad EE/CE people are at programming. </p>
<p>There are good programmers and bad one, both come from both camps. Though to be honest, in practice CS people tend to write better code for the sole reason its their main job. A EE/CE person considers his job done when the hardware is done, the interface is considered a hassle to them.</p>
<p>BirdEye I disagree. You are talking about a very small group of CE people who write very low-level code (interfacing to the phys layer). Most CEs write code in the higher layers that require efficiency ESPECIALLY in embedded environments where MIPs and memory resources aren’t a luxury.</p>
<p>A CE programmer’s job STARTS when the hardware is done not the other way around. CEs are essentially programmers that specialize in applications that control hardware (and are not necessarily device driver programmers… lets not forget that there are 7 layers to the OSI model).</p>
<p>Like BC Eagle pointed out, a CS will probably be more interested in writing new algorithms to maximize database queries or even writing a new compiler that is efficient in optimizing the high-level programming code.</p>
<p>BirdEye, most of the time, its much better to write it in a very-low level language to maximize optimization. It is also VERY common to have assembly code embedded with-in some of the higher level languages to ensure compilation efficiency where its needed the most (like in DSP applications). This is done in cases were the compiler would ordinarily add too much overhead in these segments of code. You can’t blame this on CE programmer and them a “poor developer”.</p>
<p>I think it has more to do with the person than with the degree.</p>
<p>That being said, I do think that the courses one takes in the major definitely help shape the skill set the person will eventually bring to the table.</p>
<p>Since CS and SE majors take more programming-intensive courses and software-engineering courses than CE majors at my Uni., I think that a couple of things are true: the average CS major is better than the average CE major at software, and the best CS majors blow the best CE majors out of the water at software, and the worst CS majors are terrible compared to the worst CE majors at software.</p>
<p>You probably can write device drivers in java, but it would be so bloated with so much compiled overhead that it would make it mostly unusable. Imagine trying to write/implement a software UART in a heavy OO language just to wiggle a gpo line. Talk about over-kill.</p>
<p>Most CS programmers have the luxary of writing their software on systems that essentially have “unlimited” resources (compared to an embedded system anyway).</p>
<p>It is very possible to write bad code, even at a low-level for device drivers and embedded/real-time systems.</p>
<p>Some rules of thumb:
Not everything needs to be optimized in any given system. Readability, maintainability and reliability should never be sacrificed for dubious “optimization” gains.
Where code does need to be optimized, it can, like has already been said, be done by tweaking the assembly code generated from a higher-level specification. There’s no reason to write the whole thing in assembly, especially since compilers do a better job than people most of the time.
Where you do have to write bad code for the sake of optimization, you should document it heavily and apologetically.</p>
<p>I have seen some terrible code that people have tried to justify by saying that it runs faster. Est modus in rebus, people.</p>
<p>I have never used java, so I might be wrong, but I thought the fact that the language is not compiled makes it impossible to program anything but application programs.</p>
<p>I am not a Java person myself but you can compile Java. Java seems to be very popular on Linux systems and are commonly called an “L-J platforms”.</p>
<p>No the created the hardware and now to finish the project to move into testing a device driver is needed. It is one of the tedious last steps.</p>
<p>
</p>
<p>Not true for the vast majority of OS and device programmers. To us C and assembly is about all there is. Ive been a OS programmer for a while, ive seen good code and bad code. Ive seen well written device drives and badly written device drivers. All of it has little to do with how high the programming language is. </p>
<p>I find mips or x86 assembly as well as C, drastically easier to understand compared to higher level stuff. </p>
<p>
</p>
<p>When did I say otherwise. There is no excuse for badly written C or Assembly, no reason why it cant be as nice as some people precieved liking of java and the rest of hll’s.</p>