Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Education Java Games

'CodeSpells' Video Game Teaches Children Java Programming 245

CyberSlugGump writes "Computer scientists at UC San Diego have developed a 3D first-person video game designed to teach young students Java programming. In CodeSpells, a wizard must help a land of gnomes by writing spells in Java. Simple quests teach main Java components such as conditional and loop statements. Research presented March 8 at the 2013 SIGCSE Technical Symposium indicate that a test group of 40 girls aged 10-12 mastered many programming concepts in just one hour of playing."
This discussion has been archived. No new comments can be posted.

'CodeSpells' Video Game Teaches Children Java Programming

Comments Filter:
  • by Osgeld ( 1900440 ) on Wednesday April 10, 2013 @07:39PM (#43417945)

    Or like a windows 3.11 ui for an edutainment product that came with the computer...

    whatever, as long as it works

    • by Fluffeh ( 1273756 ) on Wednesday April 10, 2013 @08:13PM (#43418163)

      The entire game looks pretty basic - and who the heck cares? Watch a two year old and see what happens when you give em a present. They are as likely to play in the big box as with the toy.

      Graphics might be important for the latest 3D shooter, but a good game doesn't HAVE to have cutting edge graphics. A game with amazing graphics can still be crap.

      If the idea is to teach kids how to code, and they enjoy playing the game enough to at least learn a little coding - then it is a GREAT product. If I was ten and wanted to learn java and had a choice of following tutorials/reading books/etc or playing a game that taught me the concepts, then I certainly know how I would have learned java. Sure, all my projectst might also include a random "Save the GNOMES!!" routine, but you know..

      • by cusco ( 717999 )
        Gnomes? Now if the object were to attack the Land of Gnomes instead, even I might learn how to code.
      • Re: (Score:3, Insightful)

        The entire game looks pretty basic - and who the heck cares? Watch a two year old and see what happens when you give em a present.

        Polish can be incredibly important. If first impressions are bad, the student may not get hooked, which defeats the entire point of packaging the thing like a game.

    • No way. I'm waiting for the Bob interface. Just as soon as Godot finishes the coding.
    • I got almost my entire introduction to programming in a C-like language through being a Wizard on an LP-Mud back in my student days in London. And that had no graphical UI at all - just text only. Until that point I had no prior programming experience, but it taught me the fundamentals that have now served me for over 20 years as a developer.
    • It's silly to complain about such an early version. Don't worry—Java 10 should catch up with the Windows 95 GUI.

  • by Anonymous Coward on Wednesday April 10, 2013 @07:42PM (#43417971)

    38 of the 40 girls in the test group complained that, once they were written in Java, the spells took forever to execute.

    • by Anonymous Coward on Wednesday April 10, 2013 @08:03PM (#43418099)

      Your joke was funny 15 years ago when Java was actually slow.

      • GP wrote the joke in Java.

    • The bigger problem is that once students exit the game, their memory gets garbage collected and they have no recollection of what they learned.

    • 38 of the 40 girls in the test group complained that, once they were written in Java, the spells took forever to execute.

      Probably ran slow because their machines had been compromised by 5 separate zero-day exploits before they'd finished the lesson.

    • by b4dc0d3r ( 1268512 ) on Wednesday April 10, 2013 @11:50PM (#43419555)

      When Java first took off, and the web was made of Java content executed via plugin, Java was written by idiots who concatenated strings instead of using string builders, and similar abuses of common sense through ignorance and teaching materials that focused on results rather than good practice. Executables outside of plugins suffered the same deficiencies, although they were probably attempting loftier goals, and the performance was... what is the opposite of magnified, because it was slower than a sloth taking a crap?

      This lasted a number of years, even as the Java interpreter became stable and work was made to increase its performance. Idiot coders learned or abandoned Java, and the runtime made even the remaining idiots look better, if not "good".

      If you don't find this comment amusing, you either lack historical perspective, are a Java programmer, or should consult a medical professional to be diagnosed for your deficiency in some manner or other.

      Security problems these days seem to be focused on the browser plugin, rather than locally executing native apps, so the security comments mostly don't apply. Visiting a random internet web page and allowing it to execute poorly sand-boxed arbitrary code is a bit like licking random strangers' genitals. In case that interests you, let me state that it should not be done as a general practice, and you should consult a medical professional.

      I have read Java for over a decade, and I have coded in Java for 3 years or so. Having experience with x86 ASM (AT&T and MASM), K&R C, ANSI C, GWBasic, Turbo Pascal, C++ (VC 5-2010, gcc 2.x - 3.x, mingw), VB 5-6, C#, VB.NET, Python, Powershell, JavaScript (advanced, not your normal getElementById().Blink() shit) and several other introductions, I can say this:

      Java examples in the real world and in most printed books are the most incestuous, groupthink-y, overly-architected piles of verbosity I have ever had the displeasure to read. I completely understand the need for default parameters, dependency injection, constructor and method chaining, and all kinds of modern best practice.

      But I have never seen another language embrace the overbearance of best practice teachings without implementing some balance of solution soundness. Java examples and implementations (open source of course, because I have read them) seem to abound with overloaded methods under 5 lines of code, which initialize another parameter to call another overload. Now you have multiple functions to unit test, multiple code paths, multiple exception sources, and unless you are brainwashed in the spirit of Java, comprehension of the complete workings are complicated by scrolling off-screen with essentially purpose-free function declarations, whitespace between functions, and an essentially functional programming paradigm split over several different methods to give the appearance of flexibility, OOP, and conscious design.

      It reads to me like someone wrote that no method should ever take more than one additional parameter that you were not already given, and coherence be damned. I would much rather see a single method with 5 non-optional parameters than 5 overloads which calculate and pass one new parameter each time.

      The Java paradigm seems to be calculating things within the overloaded methods is preferable to factoring out these into unrelated functions. In a truly sane, OOP world, those calculations would be a part of the object, or if sufficiently general would be part of the object's base object.

      In fact, the Java approach seems to be the Builder design pattern, which I have not seen adopted as frequently as it should be. Obligatory link here. [stackoverflow.com]

      As sensible as the Builder pattern seems to be, I think it would still require a number of extra Set/Get property methods, which are function calls. Maybe Java has optimized this, but if you don't adopt it optimization can't he

  • by wierd_w ( 1375923 ) on Wednesday April 10, 2013 @08:12PM (#43418157)

    I had a similar idea some time ago, but with an MMORPG setting.

    One of the issues that has always rankled me hard was the "cookie cutter" nature of the world events in those games, as well as the limiting gameplay options, so I had this idea for "obfuscated and sigilized" programming syntax as the basis for a game's magic system. Rather than presenting a loop as a nested block of instructions, it would depict it as a "container", with subcomponents inside. Kind of a mix of flowcharting and stylized syntax.

    The idea was that the layout of the "enchantment" could be moved and teased to make clever images out of the interconnected containers and symbolic representations, to make the programmatical nature of the system less banal, and much more aesthetically attractive, while simultanously making the kinds of magic and counter magic highly diverse and dynamic.

    I never really did much with the idea (ideas aren't worth much, despite what the USPTO and several shell corps may claim. Implementations are far more valuable.), and all the "on paper" mental models I tried kept having non-trivial problems.

    I like seeing that somebody had a similar idea, and made a working implementation.

    • Re: (Score:3, Funny)

      by exploder ( 196936 )

      Battlegrounds in World of Warcraft were kind of awesome back before they (quite correctly, I guess) put all sorts of restrictions on what kinds of things could be scripted. I used to *own* the level-19 battlegrounds with a warlock and an addon I wrote to keep track of enemy targets and optimally distribute my various curses and afflictions. I just ran around mashing the spacebar like crazy, because among the few restrictions was that every action had to be tied to a hardware event.

      I also earned 10,000 gold

  • by Ragica ( 552891 ) on Wednesday April 10, 2013 @08:47PM (#43418403) Homepage

    My nearly six-year-old is doing great things (for a kindergartner) with KTurtle -- which is really a pretty cool environment (I was surprised to find). He also spends much time hacking crazy stuff with redstone in Minecraft. The next logical step to real programming language seems to me, keeping it fun and relevant to his interests, is to introduce some javascript (as much as I dislike it) so he can mess up web pages with little effort. From there it seems python is the friendliest, easiest and most resource-rich multi-purpose playground.

    Maybe CodeSpell will be something to check out eventually. Though the java example on their blog doesn't look all that fun to me. I hope its fun. If it gets to the point where I'm teaching the kid OOP, and all the verbose java syntax requirements, he'll probably only want to make minecraft mods. That's what CodeSpell is up against in this house.

    • by qwak23 ( 1862090 )

      I would think any language that's fairly simple and can produce instant results would be a good language to introduce a child to. I say this because I had BASIC at the age of 5 and I could type out a few lines of code, hit run and see the results (almost) instantly. Better yet was having a ton of software written in BASIC that I could load up, tinker with and then try. I'm not really in touch with most modern languages, so I don't know what's out there that would have that same kind of feel, but I know

    • Logo/Turtle Graphics and Microworlds should be required learning software for the young kids.

  • ... but it seems they are willfully ignoring Linux as a platform. And teaching about computers. Yeah, cliche to complain about it, I know, but it does seem kind of disingenuous at best.

  • In the Diamond Age, the "premier" teaches logic, programming and nanotechnology in a similar fashion.

    While it is good to see the concept taken to practice.....

    Nothing new to see here, move along. ;-)

    • by qwak23 ( 1862090 )

      There have been games that have done this before, even well before "The Diamond Age" was an idea in Stephenson's head. The problem is these kinds of games are so few and far between that it's fairly notable when one comes up.

      While I certainly played my fair share of standard games as a kid, I also had quite a few educational ones as well (granted some of them were below me, my parents bought me a math game based on my age and not my ability). As much as I hate coding now (mostly due to syntax crap in lang

  • Read it ages ago and enjoyed it a lot.
  • Java is an OK language, but it's kind of bureaucratic and boring. I can't think of a better way to suck all the magic out of a fantasy game than to have the spells written in Java---except maybe having the kids produce an ER diagram and a set of tables in Boyce-Codd normal form.

    At the very least, they could do without the pointless punctuation. Does a spell really have to have semicolons and empty parentheses to denote that the spell is imperative?

    • by qwak23 ( 1862090 )

      While I agree with your sentiment about "why use Java" for something like this, I also really applaud this kind of thing. Yeah, different language or language invented specifically for this app probably would have been better, but introducing kids to programming at an early age is win over all.

  • From the dictionary: "to become thoroughly proficient"
    I think I need an hour of CodeSpells and I can add Java proficiency to my CV; I've only spend a hundred hours coding in it, so I've set my skill as "exposed to" instead.
  • by uberbrainchild ( 2860711 ) <markus@tengh a m n . com> on Thursday April 11, 2013 @03:47AM (#43420493) Homepage
    Try tekkit for minecraft, it will give you a mod called computercraft which will allow you to place computers with consoles on the map and even hook up wireless modems and a disk drive to them. Using lua you can then program these computers to do whatever you want basically, me and my brother made 3 train stations which would handle carts and track switches with the computers. You can even program "bots" with lua and have them build structures and whatnot. They can even defend your area if you want. All this is done with lua inside the minecraft game. You can of course import larger scripts from outside the game since typing them in the console minecraft provides can take a while.
  • A one-two dose of video games and computer programming was deemed more effective than traditional abstinence-only education.
  • How about Javascript and run in the browser or on the cloud instead? There's nothing commenting on why Java was chosen but it seems a very surprising decision to come out of a computer science department ... or maybe not. Are academics really keeping pace with technology or the public interaction with technology?

  • I feel... (Score:4, Funny)

    by HaZardman27 ( 1521119 ) on Thursday April 11, 2013 @08:50AM (#43421813)
    I feel like my signature is very relevant today.

After all is said and done, a hell of a lot more is said than done.

Working...