Live data from Hacker News

UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

jacobsschool.ucsd.edu

61–70 of 74 posts

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#61

Earlier quoted context omitted.

Yes, but teaching java before graduation is different than teaching it first . You can get all the benefits you mentioned of learning Java even if it's the second or third language while using something nicer for the first one (python? Scheme? SML?).

Not so. Learning on an interpreted language is akin to learning how to fly a plane by simply riding in one. There is a lot to learn in a CS program, and it really requires a single language from start to finish. Python doesn't have some of the advanced capabilities and adoption of an enterprise-class language like Java. Believe me, I love Python - I've created a ton of apps with it, but I also have a CS degree and ha…

I wrote my compiler in Python, and I know perfectly well what a compiler does.

It slows down development. :)

Pointer math and garbage collection are lessons better taught in C++, lessons about the stack make more sense in assembly, and it probably helps to learn about high level design patterns using a simple syntax (like Ruby or Python). Lisp, so I hear, teaches you pure enlightenment. We can play this game with any language we like.

Java, for its part, taught me a lot about installing a massive IDE and scouring pre-existing libraries full of absurd design decisions with nominal documentation. (To be fair, this is probably an enormously important lesson for working on large projects.)

Despite the fact none of these languages hits all of these notes, if we had to choose one, Java would be last on my list. Because in Java, there's a risk that you will never learn the most important thing about coding: that it can actually be fun.

http://xkcd.com/353/

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#62
post #58

Earlier quoted context omitted.

Not so. Learning on an interpreted language is akin to learning how to fly a plane by simply riding in one. There is a lot to learn in a CS program, and it really requires a single language from start to finish. Python doesn't have some of the advanced capabilities and adoption of an enterprise-class language like Java. Believe me, I love Python - I've created a ton of apps with it, but I also have a CS degree and ha…

How are you going to teach pointers or recursion in Java, though? More on that from Joel Spolsky here: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool... There is a lot to learn in a CS program, and it really requires a single language from start to finish. There is really no single language that you can use to teach everything that a CS student needs to learn. A computer science education should teach c…

> How are you going to teach pointers or recursion in Java, though?

Pointers, okay sure, but what's the problem with teaching recursion in Java? See, e.g., http://danzig.jct.ac.il/java_class/recursion.html

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#63
This is a great idea. The feeling of being able to do anything combined with reasonable limitations (ideally invisible) to focus the player's energy is extremely engaging--perfect for teaching.

And I've always thought of magic spells in fantasy as a kind of hack using a secret, natural programming language. :-)

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#65

Earlier quoted context omitted.

Yes, but teaching java before graduation is different than teaching it first . You can get all the benefits you mentioned of learning Java even if it's the second or third language while using something nicer for the first one (python? Scheme? SML?).

Not so. Learning on an interpreted language is akin to learning how to fly a plane by simply riding in one. There is a lot to learn in a CS program, and it really requires a single language from start to finish. Python doesn't have some of the advanced capabilities and adoption of an enterprise-class language like Java. Believe me, I love Python - I've created a ton of apps with it, but I also have a CS degree and ha…

I did mention SML, which is a compiled language commonly regarded as an excellent language for writing compilers. I don't believe your analogy of interpreted languages being like riding a plane is accurate. If you want to be "closer to the metal" or whatever, start with C, or assembly. But actually, computational theory is done with Turing machines, which no one uses directly in real life, and lambda calculus, which is far closer to scheme than Java. Which is more appropriate for learning the deepest basics of programming?

As for using a single language, I really don't know. I'm self-taught so far. I can't imagine a good CS degree to not use multiple languages to some degree. Can you do everything from process scheduling to web dev with one language, and do it well?

Further, I'm not sure an "enterprise-class" language is appropriate for learning. Mybe it's just all the OO ceremony that bugs me. I was watching a friend try to explain some C++ code to some ostensibly interested but inexperienced people. He kept having to say "you'll learn what this does later, it just has to be there..." to stuff like includes, int main, type declarations. That's no way to learn. Java is better, but not much. "What's a class?" they ask on their first day. A distraction, mostly.

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#66
post #16
post #11

Earlier quoted context omitted.

I've seen this in a couple places, but I'm not sure I understand why. Does anybody know of a good reason for teaching java first?

It's in the interest of the big companies. From what I know, some smaller schools like Harvey Mudd start off with other languages, like Scheme and Prolog.

IIRC, Harvey Mudd starts off with Python, in the intro class everyone takes. I just looked through their course listing, but I'm not 100% sure I'm thinking of the right class.

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#67

Earlier quoted context omitted.

So yes, while you're startup may choose Python or Ruby or the latest language of the day, Java is a great system to teach a lot of fundamental computer science topics with. Are you implying that Python (1991) and Ruby (1995) are some sort of flavor of the day compared to Java (1995)? :-) import java.util.LinkedList; import java.util.List; public class Pets { private List pets; public Pets() { this.pets = new LinkedLi…

C++ comes in second behind java in terms of jobs according to stats from indeed: http://www.indeed.com/jobtrends?q=java%2C+C%2B%2B%2C+C%23%2C... . It might not be the new hotness, but there's still plenty of work for C and C++ programmers.

The point is not jobs, the point is going from zero to coding without scaring too many people off.

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#68
post #41

Earlier quoted context omitted.

Class is short, you get one shot. Scheme or Java, not both.

Do any college students come out of BS CS programs mono-lingual? That is inconceivable to me.

Some come out without having properly learned any language at all.

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#69
post #58

Earlier quoted context omitted.

How are you going to teach pointers or recursion in Java, though? More on that from Joel Spolsky here: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool... There is a lot to learn in a CS program, and it really requires a single language from start to finish. There is really no single language that you can use to teach everything that a CS student needs to learn. A computer science education should teach c…

> How are you going to teach pointers or recursion in Java, though? Pointers, okay sure, but what's the problem with teaching recursion in Java? See, e.g., http://danzig.jct.ac.il/java_class/recursion.html

Sure, recursion is possible in Java, but it's rarely used because of the inevitability of hitting a StackOverflowError given a sufficiently large value of n.

Teaching recursion doesn't make a whole lot of sense unless you're using a functional language where loop iteration is not the paradigm.

Re: UCSD Computer Scientists Develop Video Game that Teaches How to Program in Java

#70

Earlier quoted context omitted.

CS _is_ programming. Just more in-depth.

> CS _is_ programming. Just more in-depth. CS to Software Engineering to Programming is as Physics to Aerospace Engineering to Aircraft Maintenance Related, but not the same thing.

Substitute technical drawing for aircraft maintenance and I would probably agree with you.
Post reply on HN