Live data from Hacker News

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

jacobsschool.ucsd.edu

71–74 of 74 posts

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

#71

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…

> There is a lot to learn in a CS program, and it really requires a single language from start to finish.

Why would a CS program require one language from start to finish?! Wouldn't exposing students and researchers to as many languages and technologies as possible be the actual point? This is how you get people to come with new ideas, you expose them to as many existing ideas as possible, in as many forms and languages as possible... If I were to design a CS curriculum, language wise, I'd first expose people to Scheme via SICP, then push them from theory to practice with a language like Common Lisp and on a parallel track, more related to EE, move up from an idealized teaching-optimized assembly to real-assembly to C and then to very basic C++, then expose them to "engineery" concepts like OOP in two ways at the same time (the classic C++ way and the multiple-dispatch way in CL), and on a third more "pure CS" track have students choose any of the languages or techs from the other 2 tracks to solve the programming parts of the theoretical problems in this part - yeah, grading and teaching a class of such "polyglots" with their minds all over the map would be hell for any teachers, same as managing a research project with the same maddening diversity, but imho the people that are mentally equipped to handle such environments should be the ones teaching the new generations, not the ivory-tower one-problem-focused types.

Don't get me wrong, I'm against this new "hyperpoliglot wave" of using half a dozen languages in one project, but I'm against it in industry, and from a business perspective, because it wastes brainpower that can be put to other use and bring actual business value, but not in academia, because here the whole point is to explore everything, and you don't really have ugly time constraints and the need to provide "quality of service" assuring to real customers - something like a phd program lasts a few years and at it the end of you don't even have to provide a product that works in the real world (like support a certain load, not be littered with security exploits, be extendable to easily surpass or match the competition on new features etc.).

Maybe I have a weird way of looking at things, but the whole software universe seems upside down to me: academia / CS programs limit themselves to a very small number of technologies to use and problems to solve and this way they do very little "exploration of the problems' space", while the industry jumped into a madness of polyglot-everything way of doing things, with 100 choices of doing everything, none proven to work better for a particular case, and 90% of the time spend learning the tools instead of solving the problems. Shouldn't industry standardize and academia explore? Why are things the other way around in the IT world?

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

#72
post #69

Earlier quoted context omitted.

> 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.

> 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.

That's a good reason for not using recursive algorithms in production Java code, but it doesn't make Java unsuitable for teaching CS including recursion (Python, which IMO is a much better general purpose teaching language than Java, faces the same problem; plenty of intro CS classes that cover recursion well use Python.)

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

It makes perfect sense independently of what is idiomatic in the language: teaching CS using a language isn't teaching the idioms of the language. Teaching iteration and recursion in the same language is useful, particularly because doing so is useful in underlining that recursion and iteration are different approaches for the same problems, even though in most languages one of the two options will tend to be more idiomatic.

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

#73
post #51
post #47

Earlier quoted context omitted.

Wait, is your take on this that their attitude is not good? We got one quarter of C++, then everything else was "you are all grownups, use whatever the hell you want so long as it works on [cs cluster]" . Most people continued to use C++ of course. It was not until an intro to languages course (preceding a few compilers courses, if you elected to take them) that course material again included learning a new language…

It's not so much courses teaching languages, it's the lack of software engineering in general. There's one course here which is a joke and not taught until your second to last semester. And then people turn in absolute barf code in their homework. Then people graduate and start a job, and they can't code their way out of paper bag, but they sure can write the tuple relational calculus for some given query. Another ex…

So I am a PhD student at the same university as xxpor and did my undergrad there. No idea who he is but I am going to say there is fault on both sides.

1) Every University has some courses which need a refresh.

2) The OS and Compilers courses certainly need refreshing at the moment at CWRU.

3) We have created a new class called "Software Craftsmanship" which address much of the concerns placed at the foot of the "Software Engineering" class.

4) It isn't the job of the university to teach any particular technology. It is the job to teach the theory and fundamentals.

5) Java probably isn't the best language but we have a new intro professor how is doing a good job with the intro course.

6) You never know who you will meet on the internet.

7) TRC and relational algebra are actually a pretty useful formalisms that helped me become a better user of databases.

8) The early circulum refresh has introduced many more software engineering principles earlier in the curriculum.

9) The best place to learn software engineering principles is on the job at a good company. There is no replacement for doing things for real.

10) There are good and bad things about our department but that is the same everywhere.

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

#74
post #8

Earlier quoted context omitted.

Java is a great choice for CS. It's similarity to C/C++ is handy for those who need to transition high performance computing or move to work on low level systems (kernels, drivers, embedded systems, etc). The JVM is also a great target for learning about virtual machines, since the JVM itself is quite an amazing virtual machine by it's own regard. The JVM can also be used to study a 'real life' implementation of stac…

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…

List pets = Arrays.asList("cat", "dot, "bird");

Bad usage does not equal bad language.

Post reply on HN