Hardware or Software Major?
fa1uzure asks: "Recently, there have been many articles on Slashdot about the lack of people enrolling in IT courses in post-secondary, as well as the need for more people in these areas. Being a Computer Science student, this is great news for me, meaning I may be in demand in the future. But CS at WLU is essentially a software-only course,
as it is in many other universities around the world. In most of these articles, it generally says that the IT industry is loosing the new graduates, but it does not specify which area of IT is most at risk. As I move into my second year, I would like to know, are hardware people going to be far more in demand than the software people, or would software still be a better choice than a hardware-centred degree? I could easily transfer to a hardware oriented program
but would like to know in which direction the future is moving before I make any choices."
Seriouly, do yourself and your career a favor. Double major in another field, such as business, marketing, etc. It will probably pay off more then a degree in CS. I know I wish I would have had someone tell me that before I graduated a few years ago. Unless that is you want to stay in the academic or research field.
I think its important to differentiate between
(which IMO) is something you can easily do without a degree - How many 'PC World' backroom employees do you think have one?
- Saying IT/Hardware and meaning 'electronics/pcb design/embedded systems', which like I've already pointed out is more 'electronics' than CS.
<Before someone states the obviousWindows in 6 Bytes (IA-32) : 90 90 90 90 CD 19
Pick the one you enjoy, and the one for which you have an aptitude. And hedge your bets by not overspecializing.
If you wanted to be an astronaut or a professional athlete or an opera singer, serious calculation of your prospects would be in order, but there will be a demand for both hardware and software for the rest of your lifetime, and no one can tell you which will be a better bet. People who listened to "Get into ___ because of the looming shortage of ___!" always seem to regret it.
What I'm listening to now on Pandora...
Maybe you could instead try going to better school.
Sorry, that did come off as being massively snobbish.
What I mean is that, really, hardware or software is not the question you should be asking.
What you're interested in personally and the calibre of the education you get and of your peers are going to be way more important than the degree to which you follow industry trends.
They [hardware engineers] never get laid off
;-). And when it comes to logic synthesis tools there's not a lot much out there that's open source.
You're obviously not living in the real world.
Lots of hardware engineers were laid off during the current downturn which started in 2001. And many have had a hard time finding work during this period.
The thing to consider with hardware engineering is that if you have been laid off it's much more difficult to keep up your skills up to date than it would be with software design. Hardware design tools tend to be proprietary (especially the ones used in industry) and they cost as much as a home mortgage, so you're not going to be going out and buying some EDA package so you can keep up your skillset. Sure there are some open source HDL simulators like Icarus and GHDL, but most hiring managers in hardware design will probably not have heard of them or they consider them toys (a false perception, of course, but hiring managers don't know this
If you get laid off from a software job you can easily go and start (or work on an existing) open source project to keep your skills up to date since there are lots of highly regarded open source (free) tools and languages out there to use.
In a few years when you are a new grad and in the job market, how you handle problem solving is probably more important than being in a program that concentrate in hardware or software within computer science. You can be a Linux system administrator or application developer with either types of background, but if you cannot handle yourself and to solve problems, it doesn't really matter what your background is... you will just get fired! In other words, doing more math and programming is the best way to go. And to make sure you enjoy doing it! No matter in assembly in CP316, CP460, CP466 or CP468. You got to do good in problem solving as well as in coding!
============
Mathematics will always come back to hunt you down, in so many ways
At CMU, the ECE department is thought to be a bit easier, so many people transfer out if they can't hack CS. That said, most of the ECE people do a lot of programming, and take most of the freshman and sophomore CS courses or their rough equivalents.
:)
Double majoring is _hard_, as I found out, so I ended up majoring in CS and only minoring in ECE. That was a good decision in my case though, because I'm going into patent law now, and it allows me the flexibility to handle electrical applications as well as software-related applications, and the two are often mixed in practice.
Based on my experience, unless you're doing research, games, compilers, or the like (think MS Research or Google), you may end up (as a CS major) doing software engineering that's not that technically demanding in the sense of putting your math to work. Although architecting non-technical large applications is a challenge, it's not generally the challenge that requires proofs and development of new or specialized algorithms.
I would suggest at least minoring in Electrical or Computer Engineering for those reasons. It improves your options in the market, and improves your understanding of applied CS, e.g. in implementing encryption or parallel processing. If you're really a math-head, you can get a master's in CS and move on.
Ok, this is not accurate, at least any more. Please do not perpetuate this myth. I work in this industry and switch between embedded systems design, analog design, and FPGA implementations (VHDL).
Yes, Cadence and it's mega-stupid tools are expensive. This is targeted at projects where you've got lots of resources and people, often looking at a ASIC as the end project - not a FPGA.
It is extremely easy for you to stay on top of your design skills for a VERY limited investment in home tools. You can beg, borrow, and build your own hardware lab capable of working with switching logic up to ~100mhz with under $3000. Spend a little more and you can do a lot more. Ebay is GREAT.
For EDA tools, you need a nice fast FPGA, the FREE tools provided by Xilinx or Altera - alright, not GNU Hippy Free, but free Beer Free. You can spend as little as $200 or as much as $1000 here. That's HARDLY what I would call a major investment in keeping your implementation skills sharp! How much did I invest in my EE degree? One HELL of a lot more. I probably have more than that in books!
Need IP cores to work with? Check out OpenCores.org, and even the big boys like Cadence have been pushing Open Source as in GNU Hippy open for some time.
One of the questions I ask people is what kind of tools they use to keep up their skills when I'm hiring. Those who have a null response are immediately suspect.
YMMV.
..don't panic