Welcome!

Java Authors: Michael Sheehan, Maureen O'Gara, Jonny Defh, Suresh Krishna Madhuvarsu, RealWire News Distribution

Related Topics: Java

Java: Article

"CS Students Need More Than Just Java" – Joel Spolsky Speaks Out

University CS Courses Now Start With Java, Skipping Programming Fundamentals

"You used to start out in college with a course in data structures, with linked lists and hash tables and whatnot, with extensive use of pointers. Those courses were often used as weedout courses: they were so hard that anyone that couldn't handle the mental challenge of a CS degree would give up, which was a good thing, because if you thought pointers are hard, wait until you try to prove things about fixed point theory."

Now, though, most Computer Science schools start with Java. But  "Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers," Spolsky contends.

The argument advanced by Joel Spolsky yesterday in his "Joel on Software" blog gets slightly tenuous from this point on. "A large number of otherwise perfectly good schools have gone 100% Java," he writes (rants?). "It's hip, the recruiters who use 'grep' to evaluate resumes seem to like it, and, best of all, there's nothing hard enough about Java to really weed out the programmers without the part of the brain that does pointers or recursion, so the drop-out rates are lower, and the computer science departments have more students, and bigger budgets, and all is well."

He then recovers his composure a little, lest he leave himself open to the charge of simply being a curmudgeon longing for the good old, difficult days:

"Now, I freely admit that programming with pointers is not needed in 90% of the code written today, and in fact, it's downright dangerous in production code. OK. That's fine. And functional programming is just not used much in practice. Agreed. But it's still important for some of the most exciting programming jobs. Without pointers, for example, you'd never be able to work on the Linux kernel. You can't understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers."

"As an employer," he continues, "I've seen that the 100% Java schools have started churning out quite a few CS graduates who are simply not smart enough to work as programmers on anything more sophisticated than Yet Another Java Accounting Application, although they did manage to squeak through the newly-dumbed-down coursework."

"These students would never survive 6.001 at MIT, or CS 323 at Yale, and frankly, that is one reason why, as an employer, a CS degree from MIT or Yale carries more weight than a CS degree from Duke, which recently went All-Java, or U. Penn, which replaced Scheme and ML with Java..."

He ends his rant as follows:

"The most sympathetic interpretation of why CS departments are so enthusiastic to dumb down their classes is that it leaves them more time to teach actual CS concepts, if they don't need to spend two whole lectures unconfusing students about the difference between, say, a Java int and an Integer. Well, if that's the case, 6.001 has the perfect answer for you: Scheme, a teaching language so simple that the entire language can be taught to bright students in about ten minutes; then you can spend the rest of the semester on fixed points."

What do JDJ readers think? Is Spolsky spot-on? Or is he wide of the mark? Please leave your feedback below.

More Stories By Java News Desk

JDJ News Desk monitors the world of Java to present IT professionals with updates on technology advances, business trends, new products and standards in the Java and i-technology space.

Comments (4) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Brian Selinsky 01/10/06 03:53:35 PM EST

I like the way RIT has approached this arguement. They have split what was traditionally CS into CS and IT. The CS side is more of a true science. Math, low level programming, etc are stress. It is designed around creating the engineers to develop low level software tools.
IT is more of a programming degree. Java, SQL, etc are stress. It is designed to create programmers that can implement applications on top of the tools developed by the CS people.
Both of these subsets of people are needed in the industry, discerning between them so the right person can be placed in the right position is the key.

Brian Selinsky 01/10/06 03:52:28 PM EST

I like the way RIT has approached this arguement. They have split what was traditionally CS into CS and IT. The CS side is more of a true science. Math, low level programming, etc are stress. It is designed around creating the engineers to develop low level software tools.
IT is more of a programming degree. Java, SQL, etc are stress. It is designed to create programmers that can implement applications on top of the tools developed by the CS people.
Both of these subsets of people are needed in the industry, discerning between them so the right person can be placed in the right position is the key.

Chris Meyer 01/06/06 09:13:46 PM EST

After saying that, I do think that C/C++ should be taught instead of java at the beginning. The "difficulty" with C/C++ will make java easier to learn. There could be a short or two term program to teach the differences in java after learning data structures, etc. Just my wishful thinking of a neat CS program!!

Chris Meyer 01/06/06 09:09:22 PM EST

Spolsky seems to think that only the "best thinkers" should be programmers. With that thinking, no wonder I keep hearing about the CS departments at colleges being so sparsly populated. I am a CS student, and while I'm no math whiz, I don't think that the CS courses should be taught so hard that only the physics/math whizzes can pass it! They should just teach the classes the best way they (the professors) can, no easier, no harder than necessary. The programmers will pass, the non-programmers will not. This "Mad-Monk" teaching routine in my opinion is bunk! I mean what does Adv. Calculus have to do with learning how to program a linked-list, queue, or tree?