Relax. It’s just a very popular course at Stanford. It has broad appeal for students who plan to work in a variety of different fields. Nearly all kinds of work you do now has ties to the computer. Half the students that take it are Humanities majors.
It’s also the course that is generating an abnormally large number of honor code violation referrals as students begin to learn what the definition of “original” work is.
You can’t deny that the two recent tech booms have attracted a fair number of people in search of the money that the big names of tech have managed to make. Most will quickly leave the field after they realize that either they aren’t cut out for it, or the money isn’t worth the tedium (of which there is a lot of in CS) for them.
That said, I think that 1-2 courses in CS should be a general requirement, like algebra/calculus, history, or English. It’s an ever-present aspect of life that helps you see the world in a very methodical and strictly ordered way. Not everyone needs to code, of course, but knowing a bit about how the increasingly automated world is constructed seems compatible with the “breadth” goal of a university education.
We build a product with significant hardware components (PCBs, merchant silicon switch chips, and FPGAs) and have a more significant software investment. For the last 12 months, almost all of our staff growth is in software while hardware hiring has been moribund. Put more simply, we have approximately 50 jobs open for software engineers while our hardware group has one position open…for a software engineer.
If you want to be an electrical engineer, do so but make sure to take a data structures, algorithms, and systems class.
I have several thoughts relevant to the discussion here:
H1Bs aren't that hard to get if you have a Masters degree. That said, many (most?) are used for low-end work by bottom-feeders like Tata, Infosys or Wipro. This is how you get a weird dichotomy--"H1Bs are uniformly terrible, get paid garbage and are effectively indentured servants" vs "H1Bs are as good as any other employees and we pay and treatment them the same as anyone else." The former is true for the bottom-feeders and the latter is true for places like Google, Microsoft, or Amazon.
Will we have too many people with CS degrees? I doubt it as the demand is still growing like crazy and I don't see it dropping off anytime soon. What I do worry about is people like my likable but a bit dim nephew wanting to major in CS; this is why I believe systems' programming needs to remain a strict requirement as the best way to weed out the intellectually disinclined.
If you want to write software and be happy, be a developer in a product company (note: this includes a software developer in test role) as you generally get paid well, be well-treated and will generally have adept colleagues who accelerate your development. On the other hand, writing software for some garbage IT app (PHP, Java, or C#) will generally get paid less, treated like crap, and your colleagues won't be as strong so you'll develop more slowly or, even worse, develop bad habits.
Finishing up with a minor rant. I watched a thread a few months ago where a father was complaining about a course in the CS department at Yale. Wondering what the fuss was about, I went to look at the course’s content. Reading through the professor’s mailing list archive, it was clear that his course’s topics had a logical progression, the professor was supportive, and the problems were compelling. I can only think that the students weren’t ready for systems’ programming work and would’ve liked to work on webapps or ios apps instead (“Why do I have to learn how to use a parser generator? Can’t I just use a regular expression?”). Writing this, I’m reminded of a relevant passage from Paul Graham’s review of “The Structure and Interpretation of Computer Programs:”
“I have learned enough to write a couple books on Lisp that (currently) have four to five stars. Yet SICP, which is pretty much the bible of our world, has only three? How can this be?
Reading the reviews made it clear what happened. An optimistic professor somewhere has been feeding SICP to undergrads who are not ready for it. But it is encouraging to see how many thoughtful people have come forward to defend the book.”
As an aside, if you are a developer and you mention this as your favorite book, you’ve immediately piqued my interest and I’d probably hire you if you can convince me you read and understood it. Jon Bentley’s “Programming Pearls,” and any of “The Little (Schemer|ML|Java)” books are also a good bozo-bit off tests. Likewise, you’d get style points for Paul Graham’s “On Lisp.”
Yes, look at the pages linked from reply #13. These pages show the number of H-1B visas applied for by each employer, and what the average pay of such at each employer is.
SICP was used in introductory CS courses at MIT, Berkeley, and other schools for quite a while.