Skip to content

Comment on How to make CS courses better

Comments

I agree that Java is not a good language to start off with as you do not get good understand of what is really going on at the machine level. But to say to stop teaching it outright is ridiculous. Where it be the growing android market or web enterprise jave development it is still in wide use. Java also is a prime language for learning/using OOP design principles.

There is no reason to subject someone learning how to program to Java. The amount of conceptual scaffolding required to do even the most basic tasks is stupidly large. It has a place in a survey class, I suppose, where professors with COBOL experience are approaching superannuation, but for all that's holy, keep it away from young minds.

Java has two strong points, its a great example of OOP and it forces you to understand types. I find that if students don't learn these things early on they will never get around to learning it, then when they get to C or Python where types are more of a suggestion, they have a really hard time with it. Java is stricter and harder to learn I agree, but the fact that it makes you understand OOP and types just to use it properly makes you a far better programmer in my opinion. I think Java should definitely be used as a starter language.

> it forces you to understand types.

If understanding types is so important, then why not go all the way and use either ML or Haskell, or at least Scala?

Most freshmen who stumble through a Java-school curriculum will not understand types at all, and based on confusion among a number of colleagues just yesterday (all Java programmers) about what a "sum type" is, it's clear to me that Java doesn't encourage developing a rigorous understanding of types, even for professional programmers.

Too, it's not a very interesting demonstration of OOP. Smalltalk or Ruby would be a more useful tool to use to teach OOP, iff teaching OOP is actually a goal.

> you do not get good understand of what is really going on at the machine level

I'd argue understanding "what is really going on at the machine level" shouldn't be the primary goal of your first programming language.

Java has a huge barrier to entry before one starts programming. Huge barriers to entry don't belong in a 141 course.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.