'CodeSpells' Video Game Teaches Children Java Programming
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."
Or like a windows 3.11 ui for an edutainment product that came with the computer...
whatever, as long as it works
38 of the 40 girls in the test group complained that, once they were written in Java, the spells took forever to execute.
Over half of the population is way too dumb to understand programming in the first place. It's better to start off with a good language.
Also, C is easier than Java. C++ maybe not, but then it sucks balls too.
If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
Let's compare the two, shall we?
CodeSpells actually exists and is backed by a university. Code Hero shows no signs of ever being completed and is backed by a guy who's notorious for scamming people.
There's no -1 for "I don't get it."
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.
Pointers really are complicated for anyone IQ 110 or below. Most people who attempt CS weed out classes are above average, but half struggle with pointers.
That's elitist bullshit. 90% of the population of the world could easily learn to program and learn to do it proficiently. If we taught binary and boolean logic earlier in life, programing would be second nature. And yes I interview crapy engineers regularly. It's not lack of capability holding them back, but rather piss poor education.
That's why Java has builtin garbage collection, DUH!
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.
Yeah, you go ahead and explain loops and conditional statements to 40 10-year-olds. They'll learn it in 5, master it in 10, forget all about it in 15. They'll probably be bored, too.
Or you can use a software like this which will engage them, encourage them, and help them remember it when they go home that night. It sure would be a shame if they were excited to learn more the next day and had a platform that was there to teach them and give you time to grade their math tests.
Yeah, you interview crappy >. Try talking to liberal arts students or people who have not gone to college.
If you don't understand any of my sayings, come to me in private and I shall take you in my German mouth.
Gee, when you talk to people that never learned programming they know nothing about programming. If you are having trouble explaining it then the problem might not be on their side.
Perhaps to someone who has been trained in C but not Java. The biggest problems with C when compared against Java is the limited extent of its standard library, sorting through the plethora of poorly documented non-standard libraries that are available (vs Java, where if there isn't a standard for it, then the next obvious stop is apache.org) and the fact that you need to understand the hardware architecture of the system you are developing for in a lot of cases, as well as distinctions between stack and heap and a bunch of low level gotchas in the language that are far from obvious to the newbie, or even to experienced developers sometimes.
Also, you said "your" instead of "you're"; if you are confused by this, these words are used correctly here: "you're a moron, your opinion doesn't count."
I'll have to ask you to back that up. Python 1.0 is from 1994, and didn't have much by way of specialized facilities for this purpose. Sure you aren't thinking of PHP?
Anyhow, if you care about "type systems and formalism", you should be on Haskell; Java is distinctly half-assed. (Type-erasure generics? Really?!)
I wish I had mod points right now.
One of the best things I ever had as a kid was a TRS-80 (CoCo - and not a true TRS-80 either, even though that was stamped on it) that booted to a BASIC interpreter. The code for any games I loaded directly off disk could be tinkered with easily, no need to compile. This was awesome as a curious 5 year old.
Even better about it were the games "Rocky's Boots" and "Robot Odyssey". These games taught me the basics of digital electronics, lessons which have actually helped in my current career as a technician (with no formal training in digital logic). Seeing this kind of software being produced in a modern setting is awesome, I wish there was more of it.
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 languages like Java), I love the logic behind it and the games I had that involved various forms of programming to solve problems were always a lot of fun.
The reason that Java isn't as fun to program is the same reason that it's good for businesses. The language is very restrictive and prescriptive of how you should do things. For programmers that want flexibility and power, the constraints and extra typing (dual-meaning intended) chafe. But when you're using it as part of a large group, those same constraints become the things you can depend on. Where is a certain class located? Java requires it to be in a certain directory. What methods are available on a class? Java's static type system was designed to make tooling easy, so your IDE will tell you. And even talented programmers can mess up manual memory management...the less-talented wouldn't stand a chance without Java's memory management. The list of things that Java prevents you from screwing up is quite long.
Basically, for my home coding projects and projects where I work with a small team of talented developers, Java is one of my last choices. But for my boring 9-5 job where I'm working with 30 knuckle-draggers who don't understand the purpose of an interface, let alone how to write functional code that's easy to read, I want them writing Java and I'm willing to pay the Java price to get that.
While the mods may not agree with you very strongly, I've seen a wealth of evidence that says Java is a bad introductory language. The CS department at my alma mater switched from an all-Java curriculum to one with a Python intro, and the student attrition rate dropped by a significant margin. A friend of mine—the daughter of two CS profs—was dead-set on avoiding programming as a teenager until I introduced her to languages other than Java.
While the formalisms and syntax are great for software engineers writing reusable and interoperable code, they're a serious blight to beginning programmers. The practice of teaching nothing but Java is probably more responsible for the post-dotcom drop in enrolment than the actual tech sector recession. Children should be taught something with a simple, easy-to-understand operating model like BASIC, Turing, or Pascal. It's frustrating to think about how much work went into programmer education in the sixties, seventies, and eighties, and how it's all been thrown away just because the languages at hand were obsolete.
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
Irony of ironies, C# is almost exactly like Java at the language level, only with a totally different object hierarchy, which is why it's easier for UI development. The .NET hierarchy is somewhat influenced by classic VB, which was a very well-developed and efficient (if sometimes limiting) format for expressing common UI needs.
Java's popularity, sadly, has to do exactly with that OOP evangelism. In the late eighties and early nineties, academic software engineers were absolutely convinced OOP was the silver-bullet software development paradigm for all ills, since encapsulation (hiding methods) made code re-use practical. They also believed it was the end to all programming practices that inhibited re-use, particularly global variables. Unfortunately they made the mistake of conflating these practices with "laziness," and very mistakenly believed in a bizarrely Victorian fashion that all beginners should be forced to use only best practices, as though we should be teaching infants proper manners straight out of the crib.
It's stupid enough that I sometimes wonder if it was a massive conspiracy by Sun's marketing department, but to be honest computing has always been full of fads like this. In the early eighties, logic programming was The Way Of The Future; everyone thought that Prolog and constraint-satisfaction-based expert systems (basically, fancy predicate logic expression solvers) would dominate computing for the rest of time. Today, there are only a few niches where new Prolog code is considered desirable.
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
Just like in math, CS is riddled with context-specific names for refinements of the same thing. You wouldn't want to conflate a ring with a field, right? For what it's worth, though, the first OOP language, Simula, just called them "procedures" at the syntax level. And in the case of encapsulation, there really isn't a good, compact term for "writing all of your code properly so that nothing inappropriate is publicly accessible," so that was kind of a new concept that needed a new name.
But for what it's worth, I'm not a fan of OOP terminology either, and cringe whenever a Java-educated programmer uses the word "method" to describe any old subroutine. I assume there were structured programming advocates back in the early eighties who got annoyed when C programmers started calling everything "functions," even when they didn't have return values.
Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
In other words, "Java is for other people." I feel the same way: I used to hate Java, but now I respect it for the reasons you just described.
"First they came for the slanderers and i said nothing."
At the elementary level I don't think the choice of language with reference to the business environment is that important. Teaching kids that they can make their computer/tablet/whatever DO STUFF and presenting it in an easy to digest format is much more valuable that what is big in the industry now. Keep in mind, elementary age... at least 20 years (on average) until they start rolling to the job market. Not all of them will be programmers. The languages we use now may be dying by that point. they may not all be programmers, some may be scientists using more focused languages in the vein of Matlab, some may be homemakers, some may be athletes, some may be artists. But they will all have an appreciation for technology and what it can do. They will all get introduced to logic and algorithmic structure at a much earlier age than is normal right now. Those things easily apply to other aspects of life. Hell, if they keep at programming strictly on a hobby basis, they may even catch on to when the developers at their company/organization/whatever are BS'ing them about what can and cannot be accomplished.
This is 2013, we shouldn't have to indent manually still. If you want to cut/paste a few lines of of code from one section to another, if the indentation doesn't match it can be seriously annoying in python to get it all correct. Compare this to java, where as long as it is between the curly brackets I know it will be OK. Press the shortcut for auto-indent, and I can tell immediately if it is in the right place.
Help I am stuck in a signature factory!
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.
Anveto
In C, you don't have to create a separate namespace with specifically named folders and files, and a separate class just to be able to say "hello world". Kids lose interest very quickly if they don't get results, having to learn about OOP before they write their first program isn't going to work.
I feel like my signature is very relevant today.
Apparently wizard is not a legitimate career path, so I chose programmer instead.
That's elitist bullshit.
The world could use more elitism, instead of dumbing kids down by teaching them that we should value mediocrity. Everyone gets a trophy, woo-hoo! But a job? Gee, kid - Sorry we didn't prepare you to actually compete when you get to the real world...
90% of the population of the world could easily learn to program and learn to do it proficiently.
Aahahahahaha... Oh, man, stop, ya killin' me here!
With a lot of effort, you could teach most people to use cookie-cutter VBS snippets in Excel. But programming? No. Most people not only can't program, they outright loathe the mental state programmers need to enter and stay in for hours at a time. When I describe my job (in the abstract, not talking about one specific project or domain) to most people, they cringe.
And yes I interview crapy engineers regularly.
Not really supporting your own point here - A solid C- student who managed to graduate with a STEM degree still blows the doors off the rest of society for their ability to think logically and break seemingly-intractable problems down into tiny easily-solved ones... If the flawed gemstones don't impress you, you might not want to generalize about the actual dross.
Me too, but they were called PEEK and POKE then.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."