Skip to main content

What do CS students learn?

Posted by cayhorstmann on June 7, 2008 at 6:54 PM PDT

On May 23, I gave a presentation at Sun about computer science students,
and how a company can engage with them ( href="http://sun.feedroom.com/?fr_story=FRdamp273695">audio | href="http://horstmann.com/presentations/sun-2008-05-22">slides). Here
are some of the questions that I was asked, and the answers that I gave (or
wish I had given), and a question that I wish I had been asked.

What can we do to get more students to use OpenSolaris?

src="http://www.imediapress.com/wp-content/uploads/2008/05/opensolaris_logo.jpg"
style="float: right; margin-left: 1em;" width="220" height="220" />(Asked by two people in
marketing who were eager to give me installation DVDs.) Ugh, that's not easy.
What's in it for the students? It is hard enough to get them to install
Linux. Suggestion #1: Work with a professor who teaches operating systems to
develop some modules where students use and modify OpenSolaris. Suggestion
#2: Why be fixated on DVDs? Give students remote access to Solaris virtual
machines to solve a problem that they have, namely to host their JSP/JSF
applications. (Just to really rub this in: it would be a double
win
. Right now, students flock to PHP in their software engineering
projects because someone hosts that, even though they'd prefer to work with
Java.)

Meta-observation: Students are no different from anyone else. To reach
them, you've got to solve their problems.

What math do computer science students learn these days?

height="95" />It varies by institutions, but typically it is 1-2 semesters of
calculus and a semester each of discrete math, linear algebra, and
statistics. Unfortunately, that's not really enough discrete math to get good
at it. I'd rather trade a semester of calculus for another semester of
discrete math. Provided it is taught by someone who understands computer
science.

If Java were to fade away in CS departments, what would be the cause?

(Asked by Alex Buckley,
after I stated that currently Java is by far the most commonly used language
for introductory and advanced CS courses.) Microsoft has been trying for
years to push C# instead of Java, with very limited success. Switching from
C++ to Java solved a huge problem that professors had—students couldn't
get their projects done because they wasted endless hours chasing pointer
bugs. And it gave a rich set of libraries for GUIs, database programming,
networking, etc. etc. Switching to C# would give you just about the same
thing, and if there is anyone who ought to know about switching costs, it is
Microsoft.

/>There is some unhappiness about Java in the first course—see href="http://jtf.acm.org/rationale/problem-taxonomy.html">this taxonomy.
One pain point is public static void main. It is tough to
explain this to a beginner, when in Python you can just write

print
"Hello, World!"

Some departments have switched to Python as a first language, but it
hasn't been a huge trend. Really, the problem isn't that

public static
void main
is annoying, it is that Hello, World! is
boring. Switching to Python doesn't solve that. There have been many success
stories with libraries, tools, and environments (such as href="http://www.youtube.com/watch?v=lXOyd68saIM">Alice 3), almost all of
them in good old Java.

What can we do about the lack of interest in a computer science
career?

/>

There has been a tremendous drop (about 50%) in computer science
enrollment after the dot-com bust. ( href="http://www.mndaily.com/articles/2008/03/11/72166082">This article
has better graphs than my slides.) The conventional wisdom is that the CS1
course is dull, and after a few weeks of Hello, World and
computing the digits of π, students see the benefits of a career in
divorce law. The canonical solution is to make CS1 more engaging, by showing
that computer science is so much more than just programming. (Check out
Jeanette Wing from the NSF in href="http://www.npr.org/templates/story/story.php?storyId=88154024">this NPR
segment) But I am not so sure. In February, href="http://www-cs-faculty.stanford.edu/~eroberts/">Eric Roberts gave a
great presentation at a CS education conference about surveying freshmen at
Standford. They came in droves to the CS1 course and gave it great ratings.
What did they like best? They loved programming. And then
they enrolled in some dull course that was a requirement for investment
banking.

What is to be done? Paying software as well as investment bankers would
certainly solve the problem. But if we want to rely on the folks who do it
because they love it, then we need to get more people in middle and high
school to love math, science, and engineering.

What is the computer industry doing to push for better education?

Sadly, not much. On the way to my talk, I listened to href="http://www.kqed.org/epArchive/R805221730">NPR. John McCain was in
Silicon Valley, meeting with the CEOs of software companies. What did they
tell him? That they had a single big issue on their collective minds: To raise
the H-1B visa quota.

mccain.jpg

Related Topics >>

Comments

jwenting said:

as indentured slaves (because that's what they effectively are).

swv says amen to that.

jwenting asked:

do most American and European shops deliver work that's 10 times better than that delivered by Asian shops for those 10 times higher fees?

swv answers:

some programmers from both developing and developed nations are absolutely worth more than 10x , even 40x what you pay another programmer from either nation. There are lots of studies that show this and moreover, and we all KNOW that a good programmer is worth 40x what an ordinary programmer is worth if you figure in the

  1. real cost of time spent debugging and fixing
  2. inability (or huge huge commitment of time) to extend present code to meet new functionality demands, or both (but see Vista for details)
  3. cost overruns
  4. failed projects and concomitant legal expenses
  5. loss of reputation
  6. employee turn-over
on and on and on.... yeah, 40x is about right, perhaps modest.

But the suits aren't going to sit for a marketplace run by talent.

Look at what happens with salaries in the NBA or Hollywood when you have a market based on talent.

The CEOs would rather, and in fact do, make godd*mn sure that such a market never, ever develops, even if it means that they as an industry deliver crap on a continual basis.

After all, what do they care if the code is crap so long as ALL the code around is equally as crappy, the customer has nowhere to turn and THEIR paycheck is safe- just don't let a market for talent develop.

If talent was rewarded with its actual market value, taking a 25.00/hr baseline for an ordinary programmer as a starting point (since a vanishingly small number of people can do it to begin with) , the following would happen:

  • top developers would make 1000.00 and more an hour- more than the CEOs
  • people would knock themselves out trying to be better, more productive programmers
  • kids would dream of being a top programmer they way kids dream of being a star baseball pitcher or cricket star.
  • enrollment in Cs classes would explode.
  • the suits would feel their manhood shrivel and do anything to stop it

That's if programmers were paid according to the real, actual value they delivered to the market and their companies based on a straight scale with a baseline pegged at an "average" programmer's ability.

Contrast this with what happens with CEOs, where they fail miserably , delivering actual anti-value and destroying millions opf people's lives ala Enron, Global Crossing, the Savings and Loan bailout, the mortgage crisis, the energy companies, (this is merely the tip of the iceberg) and get paid $1000.00 for every one dollar a highly paid programmer gets paid.

These people actually destroy nations, and may destroy the very earth itself, and at worst they get a 10 million + gold plated health care for life kick out the door.

That my friends, is not a market, its a scam, an agreed upon lie where a closed circle of power holders pay themselves outrageous "salaries" while colluding to systematically distort and destroy the real market for value.

Welcome to the business world circa 2008.

As long as there is not transparency in the market and contracts are awarded to the company that have the political connections (and provided the prostitutes and kickbacks), then the CEOs will continue to rule the world, there will be massive cost overruns and total system failures, and outsourcing will be the order of the day.

I've seen whole departments - 20 and 30 programmers - getting US $45.00 per hr to sit around for a week doing fiddling work because some programmer couldn't figure out his own crappy code. 45.00 x 30 x 40 == 54,000 in one week that you might as well have set on fire.
But that's NOTHING compared to the cost overruns and major major total and absolute (as in start over from scratch) project failures pumped out by the largest IT services providers for everything from the UK government which has lost tens of billions to the Australian defense industry to the US defense industry tens of billions to US states, DMVs all of it... it all goes to very large contractors who sub it to the cheapest bidder and everyone gets what they pay for. We're talking hundreds of billions in total waste due to the market lucuna towards programmer quality.

jwenting said:

Western companies can't compete on a platform of quality,

swv says: Well Apple pulled itself out of India for some reason. But there are great programmers in India and the US and Europe. In fact, the reason so much work is outsourced is because of a market failure- it's a failure of transparency ... the buyer either cannot , or just as likely cares not to, award contracts based on the goodness and success rate of the seller.

If they did, all the major outsourcing companies would have gone out of business a long time ago. In the defense industry, it's pure corruption- we give contracts to people who give contributions to the people who keep us in power. We give contracts to our buddies who gave us a contract and visa-versa. It's all a joke. The same is true throughout government in all the developed countries.

Then there's companies that think companies like IBM aren't going to sniff out how much they can possibly pay, then rack up the hours to suck all that and more out of them, while delivering nothing of real value. They're naive- they don't know and are awestruck by big names who ultimately employ the cheapest and crappiest programmers they can get away with.

In theory there's plenty of room so a group of super-competent developers to make a lot of money through reputation. in reality, cronyism and nepotism and political mechanizations and bribes and all the rest decide who big contracts go to. That's called a market failure, or a "Big Man" economy. That's what we have. A group of individuals, united by a criminal purpose acting in concert to distort the reality of an industry and the market, as the YouTuve video above attests to.

In the US at least, that kind of activity is prosecutable under the RICO laws.

Today, the CEOs and their lawyers and HR personnel rule the world. Tomorrow they're fugitives from justice hanging out in Paraguay paying off the government not to work out an extradition treaty with the US.

Just the plain truth spoken in plain language.

Of course CS and Math and Engineering are challenging disciplines that any person with above average intelligence will love.

But the number of jobs that require a student to exercise such skills is quite small. For example, many math graduates end up running canned Excel sheet programs, and most of the CS graduates perform essentially routine menial tasks.

So it is well and good for the industry to bemoan the lack of interest in math, science and engineering almost as a ritual, and for the academics to do the same albeit for different reasons, but the reality of the marketplace dictates that it is much better for a student to go in other professions. You cannot expect the majority of the students to not act in their best financial interests.

Hi Cay, we have exactly the same problem in France.
Students abandon maths in high school, so we currently have more than 4 job proposals for one CS student.

Rémi

Hi Varan - Sorry, don't buy that argument at all. Sure, IT goods can be moved easily across distances, and there are many new opportunities for local-grounded softare development, but the margin's in software production is very high. Good software development is NOT about low wages. It is about good creative individuals, working well together, in the right problems to come with timely offerings.

That train has long gone, The cost of setting up a CS curriculum is so low that Computer Science schools have sprung up in far corners of third world countries. Add to this the tools available for remote collaboration on software projects, there is no way the American graduates can compete with these graduates, given the ridiculously low wages that these graduates are willing to work for.

The students know this, and it is the best decision that they can make to not major in CS.

pelegri, quality hardly matters. All (prospective) students see is IT jobs being moved to India (and other low wage countries) at a rate faster than they're being created in north American and Europe. Based on that they (wisely) decide to pursue other careers where the chances of landing a decently paying job that isn't going to be offshored, a career like law or medicine.

The curiculum doesn't even come into play. Kids decide to choose other careers before the curiculum comes into play. And those that you want will see right through that "boring" first month or two, recognising it as a necessity to get the basics down.

The lack of decent education in other (related) areas like math is more serious, but hardly limited to IT related studies. Every study benefits from mathematics, most from some knowledge of the physical sciences. Yet for political reasons those fields are ever more downplayed at the most basic level, culminating in the UK plan announced last week to scrap all math and science from the curiculum at elementary to highschool levels and replace it with things like "environmental responsibility" and "diversity studies". We can only hope that clearer minds will prevail and that plan remain the idea of a sick mind.

I agree with swv. As an example all my young life I wanted to be an aerospace engineer and make space ships and jets and stuff like that. By the time I was a in high school there were so many out of work aerospace engineers I knew it was never going to get a job in that industry. I gave up and moved on to something else, computers. I'm sure the same thing happened during the dot com bust to a lot of people interested in computer science.

"What is the computer industry doing to push for better education? Sadly, not much. On the way to my talk, I listened to NPR. John McCain was in Silicon Valley, meeting with the CEOs of software companies. What did they tell him? That they had a single big issue on their collective minds: To raise the H-1B visa quota. " Look this is it in a nutshell. If corporations weren't permitted to flood the market with labor , then wages would go up. Rising wages attracts people to CS. What does anyone think was happening in the 80s and 90s? It was seen as a career path for people: where career path is defined as something which will last more than 15 (or 7) years. One things we know- corporations hate capitalism. They despise the basic tenant of capitalism which says that labor follows wages, and will gladly enlist the jack-booted enforcers and slave labor prisons of communist dictatorships, which they LOVE, in order to suppress the wages, working conditions and rights of workers in the pursuit of profit. As far as globalization is concerned, what that represents isn't Tom Friedman's inevitable working out of natural economic order- there is no *natural economics* outside of the raiding, plundering and murdering of the weak by the strong (but see global capital's love of communist China above for details). No, it's NOT about the inevitable working out of the dynamics of a system that is beyond anyone's control, it's about Tom Friedman's and everyone else's total failure to perform the function of civilization - to ensure that rising standards of living in countries don't get played out in a zero-sum fashion both within a country (Microsoft's monopoly) and between countries (the wholesale relocation of manufacturing to slave labor condition nations). That's done using the tools of civilization - treaties, inspections, embargoes, quotas, MFN, etc. etc. What results is imperfect, but so is the application of all law. Those tools are all we have to build a tolerable world for all and to the extent that they're employed for people's benefit, people will benefit. To the extent they're handed over to the most avarcious amongst us who are motivated by an autistic, demented need to make (yet more) money for themselves even it means the destruction of society itself, then we get what we now have. The disenrollment of students in CS is a direct result of a larger cause and effect- the turning over of the functions of government to the coke-snorting, amphetamine popping, risk-junkie degenerates of Wall Street who may destroy capitalism and even the earth yet. They are buttressed and supported by the endless parade of mouthpieces like Friedman who present *just-so* fairy tales to the public about why things had to be the way they are, how it was all inevitable, and nobody's fault. From global warming to the poison in your food chain to the destruction of the rain forest, it's all inevitable and surely not the consequence of a failure of governments or the corporations that own them. The solution is to get government to perform its function. The solution at hand is for programmers to do everything they can to stop working for someone else and start their own consultancy and create their own product offerings. The fact is, only so many people can program and programming products will always compete on the basis of what makes them different and better. No matter what level of functionality becomes commoditized, there difference between a market winner and a market loser will be what is extra good about a product, and behind those non-commodity aspects of the product will be a programmer doing what ordinary people couldn't do. Yeah, there's a competitive market out there worthy of big bucks to tap into, but it's not in the corner offices, it's at the keyboard. That's not going to change in anything like the near future.

What, if anything, are CS departments teaching about floating point arithmetic? A growing number of CS graduates seem to be frightened of it. Rather odd in a way given that standardisation on IEEE 754 has simplified the practice relative to say 30 years ago.

But that's the thing- individually, we all have the same stories of not finding jobs or not finding significant career work. The wages for programmers are DOWN drastically. Free market theory says there's a glut of labor- but the CEOs of silicon valley claim there's a "desperate labor shortage".

Bill Gates claims its SO bad that the ONLY way America can maintain its tech edge is through UNLIMITED immigration.

Look, it's obvious, right? The companies want to flood the market with labor to drive down cost, decrease benefits, demand longer hours from their employees and get rid of them on demand. Where's the mystery there. They act in their own best interest.

The way the system is supposed to work, is Congress and the government is not captured by particular companies' interests, but rather remains above it and does what's good for the country and the economy generally.

Unfortunately, our government is captured by those industries and does what's good for THOSE INDIVIDUAL CORPORATE OFFICERS and large shareholders instead of what's good for the competitive market place.

How bad is it? How far do they go to distort the market? How unafraid are they of , you know, the law? Well, the immigration lawyers at Cohen and Grigsby are willing to publicly give you detailed instructions on how achieve your goal of not hiring Americans .. They say: "our goal- (is) not to find an interested and qualified American worker- that's sounds funny, but that's our goal...We're hoping not to find qualified American applicants..."

The full reality was captured here on YOUTube

http://www.youtube.com/watch?v=Fx--jNQYNgA&NR=1

I can share my experience with CS. In my early days in middle and high school, I wanted to be an aerospace engineer. But after I purchased my very first computer in my freshman year in high school (a Compaq Presario 1.66MHz w/ 32MB RAM, the thing still runs Win95!). I spent so much time fiddling with it, crashing it, hacking windows, even doing 3D animation on it for my senior high school project! When I signed up for courses at Texas A&M, I immediately switched to Comp. Engineering (I still wanted some sort of engineering). I do not regret my decision. But what I found out after graduation is that the types of jobs out there were not what I was expecting. Most of my internships involved maintaining legacy code, or making small changes here and there. Maybe companies need to offer students an experience where they really feel they are using their skills to their maximum potential. Also, giving students projects that are not too small, and that are open to creativity. I remember these types of things are what inspired me and gave me pride in my major.

Sorry, I think there is now very little value in UseNet.

not so, swv. They recognise that the only way for them to compete with Indian (and Paki and other) bodyshops is to dramatically reduce labour cost, effectively turning themselves into just such bodyshops. And the only way to do that is to hire those same Indian and Paki kids, kids willing to work for peanuts, whose main payment is that greencard they might look forward to at the end of their 5 year tenure as indentured slaves (because that's what they effectively are).

And they're right. With the average customer selecting the cheapest offer for lack of any means to gauge the quality that's to be expected from the work delivered (and let's be honest, do most American and European shops deliver work that's 10 times better than that delivered by Asian shops for those 10 times higher fees?) Western companies can't compete on a platform of quality, and with teleconferencing ever more replacing in-person customer visits (heck, my last employer starting this year stopped sending sales staff on-site to customers unless there was a more than even chance of landing a multi-million dollar job, prospects were told to talk to the sales department using Skype...) there's no real difference anymore (except the accent of the salesperson) between an American company and an Indian one when it comes to the salespitch except for the price of the offer, and the Indian shop will just about always win there.