First-Person Game Teaches Java As Magic!

By John Walker on April 11th, 2013 at 5:00 pm.

CodeSpells is a first-person game created to teach Java programming. Yeah – that just happened. A project by computer scientists at the University Of California, the game is designed to teach school students the programming language, as a solution for the difficulties of providing computer science education to younger teenagers.

As reported by PhysOrg, the researchers tested out the game with a group of 40 girls, aged 10 to 12, with no previous exposure to programming. They had the mechanics explained to them, and were then simply encouraged to explore the game’s world. They say that after just an hour, they had got to grips with some of the basic components of Java. Which is more than I’ve managed in every attempt to learn any programming language, from BASIC to PERL.

In the game, commands are portrayed as magic spells. You play as a wizard, in a land of gnomes, aiding them to recover their magic. By writing spells in Java, you can fly, levitate objects, and most importantly, set things on fire.

What seems significant here is that the concept hasn’t been simplified to the point where you never actually see code. But rather, the immediately scary-looking page of text and brackets directly correlates to events in an explorable 3D world. Clearly the presentation is pretty clumsy, despite being made in Unity – it would have been nice to see the team perhaps looking for the help of some local San Diego developers to spruce things up a bit.

Right now only the Mac version of the game’s beta is available, but the PC version should be arriving very soon. The final version will also be released for free, to make an accessible learning tool in schools without specialists to teach it themselves. Which is pretty much all schools.

Which is really just such a splendid idea, and a fantastic way to see young people realising that coding isn’t beyond them. If 10 year olds can be shown how accessible programming is to them, they’ll have an enormous headstart.

, , .

98 Comments »

Sponsored links by Taboola
  1. staberas says:

    so pretty much he stole xkcd idea http://xkcd.com/353/

    import antigravity

    YAY

  2. GallonOfAlan says:

    Java though? For 10 year olds? Surely Javascript or Lua would be better.

    • Teovald says:

      I would have proposed python :-)
      Easy minimalist syntax & it is a popular language in its own right.
      Asking the kids to worry about things like imports looks a bit too much, whatever language is used.
      I will have to test this game anyway, a game that allow you to code your spells sounds very fun.

      • Premium User Badge

        Lord Custard Smingleigh says:

        I heartily concur. I tinkered with Python for the first time yesterday, and in no time I had a working crawling screen scraper. The trick with Python isn’t learning to code in Python, it is letting go and realising you can already code in Python.

      • Premium User Badge

        darkChozo says:

        Honestly, if you abstract away overhead like class declarations and imports with templating and limit yourself to stuff like basic operations and program flow, it doesn’t really matter too much which language you’re using. If-else is if-else in pretty much any language (plus or minus elseif and maybe some brackets).

        Going for a C-like syntax is not totally unreasonable in that case; that’s prep for the like 80% of real-world programming that happens in C++ and Java.

        • Teovald says:

          I was only suggesting to remove imports, not class declarations.
          You need those in order to be able to do slick things like extending Spell or Fireball classes.

          In this limited sandbox, I am pretty sure that you don’t actually need imports and I don’t think it is necessary to learn about them in this sandbox if the goal is to provide a first approach to programming. They only add complexity to the first programs to write (beginners very often forget about imports since they have their hands full with other things like variable declaration) without adding anything interesting.

          • Premium User Badge

            darkChozo says:

            Ah, I didn’t mean get rid of them entirely, just to minimize their impact by providing editable code templates (much like what they seem to be using). Add in some standard IDE features are you can basically ignore overhead and focus on the important stuff. Removing imports probably is reasonable, they don’t really add much.

            Honestly, the point I was making was more that, at this level of programming (basic procedural stuff with a tiny bit of inheritance, more or less), language doesn’t matter much. It really depends more on where you plan on going next than anything else.

          • meikanxiwang says:

            If you want to “get shit done”, I could think of a dozen languages that’d be better.

            http://www.youtube.com/watch?v=CxTPEd_Skfc

    • Faxmachinen says:

      As a professional Java developer, I wholeheartedly agree.

      Python is nice, but Lua is perhaps nicer. Javascript is a bit wat. If you abstracted away all the parentheses, Lisp would not be a bad choice either.

      • beetle says:

        if macros aren’t magic, I don’t know what is

      • elgonzo says:

        Hehe, thanks for the WAT link.I didn’t know that. Being a grumpy software developer with heart, but this bit made me laugh out loud, and cry a bit. Every single year in the past decade, i was expecting JavaScript to die a horrible death because it basically is an unmaintainable mess. But then, you know, there is this other horrible thing known as reality, which didn’t agree with me…

    • admiraltaftbar says:

      I would suggest C as a good starting point for learning languages rather than Java. However Im a big believer in starting with an older language with less features and handholding so that later on learning other languages is easier. But this is for little kids so I guess Java is the right choice.

      • elgonzo says:

        Well, it depends on the direction you want to go. If the education includes topics regarding computer architecture and operation, then C or similar low-level languages are a much better choice just because of cross-learning effects.

        However, i doubt that you want to teach most kids about the innards and internal function of a computing device. In respect to this consideration, C looks like a poor choice today, as the teaching should be about algorithms, sw development paradigms and concepts, and not about doing the house-keeping on a particular architecture (which you will have to face when choosing C).

        • Reapy says:

          Started with C++ and while I haven’t used it in years its a great starter language. Can basically be C without knowing it.

          I think starting in java is dangerous, while it has classes, pointers are a really important concept. Even though in java you are only using value pointers and you never see it mentioned anywhere, not understanding what that means can lead to disastrous code.

          Oh almost forgot, this thing is awesome! Coding is casting spells! I could really use the linux command line edition of this though, that can be some deep dark magic right there.

          • Premium User Badge

            Gap Gen says:

            C++ is a horrible big ball of mud. Direct storage of variables, pointers, auto_ptr, smart pointers, references. Plus it’s way more verbose than Java and indeed stuff like Python. And there are so many ways to break your code that are subtle as hell. It’s a great language if you want raw power and sophistication, but it takes a lot of time investment to learn properly. Better to start with a simpler language and work your way up if you need to.

          • elgonzo says:

            Your comment reminded me when i head to do my 1st OO program in Java in the mid-90s.
            With lot’s of procedural programming, mostly in C, done already, things like pointers were carved deep in my mind. And i looked at that OOP thingie, and did not see pointers, and i thought:
            “How the hell can this even work. How do i maintain control over what is going on, and what data i pass around?”

            Needless to say, at that time i simply did not understand that a pointer (which nicely relates to the Von Neumann architecture, and hence seemed to appear as being so relevant) is just one of many examples of the concept of identity.

            If you do some more OO programming, you will certainly realize it. And you will also realize, that if you were going to write any piece of disastrous code in Java, the knowledge about pointers would not have helped you in avoiding it. (Disclaimer: I am aware of JNI, but, well, most Java programmers will never have to deal with interfacing with a C/C++ library.)

      • Teovald says:

        I highly recommend C as a first language if you want to learn development in a way that will assure you to be able to handle any language (following the logic that going from low to high level languages is easy, but the contrary can be hard).
        The education cycle I know for engineers is 3 years of high level maths, 1 year of Algorithmic & c then 2 years of high level languages. It allows to train highly skilled engineers but that’s not the goal here, for a first approach that needs to be fun I think that an high level language is way more adapted.

        • elgonzo says:

          By experience i can tell you that you are wrong. Well, i have to admit, that for quite some time i was believing the same (until mid-90’s), until after years and years of procedural programming in C, heck, even in assembler, i had to do my real first OO program in Java (at that time, Java was all the hype). Well, i did it, somehow, but honestly, was that an ugly POS of code, thanks mostly because of me thinking in terms of procedural programming.

          It is a fallacy to think that there is a “mother of languages”. As long as languages share similar concepts, migrating to and from them is rather easy. But if you have to do a transition between two languages that do not share much of the same concepts, oh boy, that is always fun…

          You do not actually have take my word at face value. Prove your claim by yourself. I assume you are quite skillful in C/C++. Very good. According to your claim, it should be a piece of cake for you to do some stuff in, let’s say, Haskell. Just go and do it…

          • Teovald says:

            I should have been more precise :
            Knowing a low level procedural & object oriented language like c++ will make learning an high level procedural and/or object oriented language like java far easier. Whereas knowing java will not help you at all when trying to understand c++ specificities (more like c++ clusterfuck, features have just been piled up in that language without any regard for sanity).
            You are right, it won’t help you at all in order to understand a functional language like Haskell. Anecdotally, I also had to learn a procedural language during my engineering education, and yes that’s almost entirely separate from more standard languages. I am pretty sure I have forgotten everything about them by now..
            Also, let’s be honest, most programmers spend their entires careers without touching a line of functional language, whereas having to jungle between C, C++, Python, Java, C# and Objective C is way more common.

      • Flavioli says:

        C and C++ are good first languages to learn if you want to learn to program academically but they are both TERRIBLE options for trying to get kids into programming… if anything, they would quickly teach those kids how frustrating and out of reach some of the more simple programming concepts can be to beginners. In terms of games, that would be like starting a “hardcore” game on Hard so that you have less trouble when playing on normal or easy.

        I would recommend either Python, Ruby or Lua (probably Python because it’s generally the most applicable of the three) or even C#, if only because it abstracts having to deal with things like memory management and string manipulation, all of which can be big hurdles for beginners.

    • Consumatopia says:

      Javascript would be absolutely terrible–Javascript’s scoping rules are as confusing as anything in Java.

      Java isn’t bad. It has some complicated features, but you can ignore most of those features until you’re ready to use them. But when you are ready, they’re there waiting for you–you don’t have to learn a new language to start using them.

      You could also make a good case for picking a functional language as your first one–whether dynamically typed like Scheme or statically typed like OCaml (haskell, Scala, and F# all get more “buzz” than OCaml these days, but call-by-need evaluation is confusing and learning OO and functional programming simultaneously is overwhelming).

  3. jalf says:

    Java? Why do they hate children so much?

    </almostserious>

    :)

    • Premium User Badge

      FriendlyFire says:

      My first reaction was: “But but but… THINK OF THE CHILDREN!”

    • Premium User Badge

      Gap Gen says:

      At least it’s not C++. They’re not monsters.

      • Premium User Badge

        darkChozo says:

        But it makes so much sense! The wand is a pointer. Build from there.

        Also it lets you work in “dereference this!” one-liners somewhere or other.

    • LionsPhil says:

      Java deadens the soul and taints the precious bodily fluids.

      And misreimplements every C++ feature it can get its grubby mitts on in fundamentally broken ways. Good job, Java.

      • Premium User Badge

        Gap Gen says:

        Right, when you delete an object it should leave lots of garbage pointers everywhere, out else ascend to memory leak heaven, not tidy itself away.

  4. Kaira- says:

    “from BASIC to PERL”

    You poor, poor soul.

  5. Risingson says:

    Mostly the same idea behind the old CRobots and its later clones C-Bots and Robot Batlle. But without robots. Meaning: worse.

  6. LynneSkysong says:

    Huh, sounds very similar to the main premise of Wiz Biz (a book where the protagonist gets sucked into a different world and casts “spells” via code)

  7. Harpsichord says:

    Minor nitpick, but I think you’re usually supposed refer to a UC by its full campus name– aka University of California, San Diego

    • Ignorant Texan says:

      Well, The University of California, aka Cal, is located in Berkeley. All the others are satellites. While you are correct about proper nomenclature, it is common to refer to various campuses by their acronyms(UCLA, UCSB, etc), as a combination (UC-San Diego, UC-Santa Cruz, etc…) or something strange such as Cal-Davis.

      • Convolvulus says:

        Berkeley is “California” or “Cal,” but no one calls it “The University of California” without further distinguishing it. There are ten campuses in the UC system, not one main campus with nine satellites. It hasn’t been structured that way for at least fifty years, although the UC headquarters are still located near Berkeley.

        Anyway, I wouldn’t call it nitpicking to request a distinction in the article. UCLA, Berkeley, UC Santa Cruz (Fiat Slug), UC Davis, UCSD, and so on have such differing cultures that they may as well be in separate countries. It goes from Bel Air/Beverly Hills to hippie town to cowville to fiesta del surf. I’m not sure it was a great idea to make California all one state.

        • Premium User Badge

          zond says:

          If you’re a Cal alum, what Ignorant Texan says is absolutely correct. And we do call it THE University of California. But you’re correct that unless you’re talking to other Cal alumni, then you should be specific.

          • Convolvulus says:

            UCLA really isn’t a satellite of Berkeley, and the colloquial noun aspect is irrelevant because we’re talking about journalistic conventions. What’s more, the article is about a project at UCSD, so it’d be far more misleading if everyone in the world called Berkeley what you do.

    • Aedrill says:

      And why, if I may ask?

      • Randomer says:

        So people know which university you are talking about. Otherwise it would kind of be like saying “University of England” if you meant Oxford.

  8. Soulstrider says:

    This kind of game will make me unemployed :(

  9. elgonzo says:

    Mentioning Java made me chuckle a bit.
    But then, it’s totally fine. Java as a language is not that exotic or unique in its concepts. If you are not a total dumbass, it would take you not much effort to take what you have learned to another language/development environment that shares similar concepts.

    • aldo_14 says:

      What’s wrong with Java?

      • theirongiant says:

        Everything

      • Reapy says:

        Nothing is wrong with it.

        Java is just fine, widely used, huge amounts of libraries and frameworks, not too much time to port between various OS’s.

        In the world of “get shit done” java does just that, amazingly well.

        • jalf says:

          You… don’t know many other programming languages, do you?

          Because compared to most *good* languages, Java is all about *preventing* you from getting shit done, by drowning you in endless boilerplate code and an endless pile of design patterns to work around all the deficiencies of the language.

          If you want to “get shit done”, I could think of a dozen languages that’d be better.

          And.. only one or two that’d be worse.

          • Premium User Badge

            princec says:

            You… don’t code for a living, then, do you.

          • Premium User Badge

            Gap Gen says:

            I think in many ways I prefer a language that says “this is what I am” rage than one that let’s you do anything and everything, so that projects without the tightest coding standards have a million different design patterns in them depending on who wrote what.

          • elgonzo says:

            I have to agree. Java just over-complicates things. Just a simple Hello World! example:


            public class HelloWorld
            {
            public static void main(String[] args)
            {
            System.out.println("Hello World!");
            }
            }

            It is so noisy. With all its clutter, i almost can’t see that it is printing “Hello World!”. Maybe it is printing “System Out!”, instead — i can’t tell.

            If it would be necessary to do it that way, i would not complain. But it is not. It can be simple, beautiful, and very clear. Let’s do the same example in BASIC, which is ancient, and so horrible that nobody uses it for serious things, but it still can do it better than Java:


            10 Print "Hello World!"

            Now, this is what i call perfection.

            Oh, before i forget, the examples will only work with the following compiler switches: -irony -seriousnesslevel 0

          • elgonzo says:

            Whoever thinks design patterns are a crutch to work around (perceived?) flaws in a language, is no developer. It hardly gets more obvious than that.
            Maybe you are a coder, perhaps even a good one, but you are not a software developer, that’s for sure.

          • MellowKrogoth says:

            When you’re working and reworking the same piece of software several times, and often inheriting said software from someone else, a verbose language can actually be a good thing as it gives you more info to understand the code.

            Java is rather easy to read when dealing with someone else’s code – python and others, lacking strong typing, can be really obtuse to decipher. It also compares favorably to the popular C/C++ languages: when debugging it you always get a clean stack trace (instead of dealing with low-level assembly like from a release build, and its strict design rules mean that you get incredible refactoring tools in Java IDEs.

      • elgonzo says:

        Technically, the only thing that is wrong with Java nowadays, is that it can’t get rid of its security-related issues (to be fair, this is rather an issue with Oracle than with Java itself).

        I chuckled, because, Java has one kind of a history — i would say it had a kind of a pop star career, and this article reminded me of it…

        You know, first it was the shiny newcomer. Everybody loved it and it loved everybody (x-platform, ECMA style, yay!).
        And it became all the rage, and it became the mother of all hypes (at that time and regarding software development, networked computing and such of course).

        …well, and then it became fat and bloated. And it moved on, with slow speed, with all the fat juggling. Most promises from people and companies about the gorgeous things they would do with Java left unfulfilled. And the party was over, people turned to other things, in the search for another hype…

        No, except the aforementioned security issues, there is not that much wrong with Java. If it fits your needs and style, use it. There are plenty of choices that would be much, much worse than Java.

  10. Premium User Badge

    Sinomatic says:

    Code Hero is looking to do something similar, only with javascript and unityscript, so that you can learn to make games.

    • pakoito says:

      Last time I heard about it, development had gone under and the company completely banished with KS money.

      • Premium User Badge

        Sinomatic says:

        Yeah I’ve just seen something alluding to that myself. I hadn’t actually looked it up in a while, thinking it was still in development. The dev is still posting in the kickstarter comments, but I’m not sure how much, if any, of it is seeing the light of day. It’s all looking a bit shonky, sadly.

        • tomimt says:

          It’s looking a bit bleak with Code Hero really. While the dev claims there’s active development still going on, there’s very little to actually back it up. The money has been spent and in all likelyhood the project will go under, which is a shame really, at is an interesting concept.

  11. zachforrest says:

    I’m fairly sure people my age (early 20s) are the leaden generation in terms of people that can code.

  12. Premium User Badge

    Gap Gen says:

    Making things set on fire or explode sounds about right for the code I write.

  13. pupsikaso says:

    as a solution for the difficulties of providing computer science education to younger teenagers.

    I don’t get this at all. Why is there a perception that young children cannot learn computer language? It requires no different set of skills than what they use to learn Mathematics.

    • Premium User Badge

      Llewyn says:

      The difficulty lies not in ability; exactly as with maths, the difficulty lies in generating enthusiasm.

    • John Walker says:

      *providing”. The issue is that there aren’t the teachers to teach it.

      • TechnicalBen says:

        Teachers. From my experience it was teachers. “We could do this advanced… nah, the rest of the class and the syllabus is a year behind, so you will be too”.

      • Premium User Badge

        Gap Gen says:

        In my school IT was taught by whatever random teacher had a free slot in their schedule. Hence nearly all the classes were on using a word processor. The librarian banned qbasic because she thought we were hacking the computers.

      • Premium User Badge

        princec says:

        There is a saying that those who can, do, and those that can’t, teach. As a coder who can teach you are far, far better off both financially and effectively coding for a living and teaching your juniors and peers on the job.

    • elgonzo says:

      I think this particular perception comes from a certain, older generation who struggles with all this modern technology; along the lines: “If we grown-ups can’t understand this stuff at all, how would kids be able to do it?”

      Personally, i have yet to meet an adult person of an age in or below their forties, who does not think kids could outsmart her/him. I don’t know why, but i believe, that this generation already grew up with (home)computers and know by experience that they could do something their parents did not understand at all.

      • Rich says:

        Without actually quoting a big chunk of his book, Eben Upton, one of the people behind the Raspberry Pi and former computer science lecturer at Cambridge writes about this very problem. People of his generation grew up in the tinkering age of computers when you could generally do what you liked and you had to play around to get it to do anything interesting anyway. The problem kids today have is that, while they have access to the sort of high-tech perfectly packaged consumer electronics previous generations could only dream of, the closed nature of the systems they get to use and their price tag discourage any kind of messing around. This is particularly true if a kid’s parents aren’t tech savvy enough to fix anything the kid might break, and are scared of letting them. Hence the open and cheap Raspberry Pi.

        • Reapy says:

          I worry strongly about this exact problem for my kids. I want my kids to know what they are paying for, to have ripped the curtain back at least once. There is a huge focus on marketing small little creations, if you don’t understand what effort is applied in the creation of those things, it is hard to accurately judge their value.

          Though again I don’t suggest going back to the dark ages (eg trying to learn to make a game pre unity / xna etc), its important to see where we’ve come and get down there in the mud for a bit to know WHY we are doing things the way they are done…because things changes, old concepts are new again ( EG map reduce from scheme/lisp concepts).

        • Premium User Badge

          Matt_W says:

          This. The analogy is those crystal radio built-in-yourself kits that our parents could order from the back of comic books. They built and tinkered with them. My generation’s (I’m in my mid-30’s) experience with radios is limited to the tuning knob and volume control.

          Similarly, my first computer was a TI-99/4A in the early 80’s. (I was 5.) It booted into a BASIC command line and you couldn’t do anything with the computer without programming it. I used to spend hours entering programs from computing magazines. The progression from writing simple BASIC programs with line numbers and linear execution sequences, to learning modular programming languages (Pascal/Delphi), to commercial languages (C/VHDL) was a natural one. It’s easy to conceptually understand a program that executes a numbered list of steps. My daughter (who is 6) sees a computer as a collection of icons that launch apps. To her, it’s not something to be programmed or tinkered with; it’s a machine that runs apps, not really very functionally different than a phone. And it does what it’s supposed to already; there’s not much incentive to try to make it do something else.

          I’m an electrical engineer. I understand conceptually how radios work at a pretty fine level of detail, even though I don’t work in RF, because I’ve been educated to. But I don’t have the intuitive sense for how they work that building and tinkering would have given me. Likewise, it’s possible — even likely, if I have something to say about it — that my daughter will learn to program at some point, but she’ll never intuit computers the way I do. She’ll have to learn less by tinkering than by structured instruction. Anything that gives an incentive to tinker, especially one she can use as young as possible, is fantastic in my book.

        • elgonzo says:

          @Rich, Reapy, Matt_w:

          Yeah, the opportunities of building things in a way so that you can understand “how stuff works” became less during the nineties and early 2000s. Which i didn’t find a good thing, too, but fortunately recent years saw an huge improvement, with the RasberryPi being one of many examples.

          The thing is, the same did not and does not apply to having opportunities to learn programming. If anything at all, they improved over the years. Computers became more widespread and accessible. Computers became more powerful, allowing better tools that are more comfortable to use. In many modern programming languages and frameworks, a lot of the low-level stuff has been abstracted away, allowing you to concentrate on the goal you want to achieve with your software. This in turn, makes it much easier today for kids to learn programming.

          You mentioned, how it is good to know how the things you use are working. I agree, because curiosity (or enthusiam, with both being related) — which is required to not just stupidly learn hollow knowledge, but actually becoming more able.

          Where i disagree is, that you would need to know details about the underlying hardware systems to learn or become skillful in programming (i am not sure if you tried to say that. If not, please apologize my misinterpretation). That’s not true. Say, i want to program a game or a chat/phone application on a smart phone. How would knowing the internal working of the radio module help me? How would knowing the differences in the operation of SRAM/DRAM/DDRRAM and Flash memory help me? It’s not really relevant. Relevant is to know the respective APIs (including communication protocols) and design guide lines with regard to the OS. But even this should not be the main focus of the education — well, except of course, if the education is specifically about a certain system, for example in the case of an Android course. System architecture and other aspects will of course become important, if the programs you write become more and more demanding. But that would happen well beyond the time of where you struggled to begin learning programming.

    • Flavioli says:

      Programming can be abstract but, as you say, not much more abstract than math. However, I believe that it should be easier for kids to get motivated over programming compared to math, because with programming you can actually create something that is tangibly functional and useable, whereas with math it’s a bit more difficult to explain how the topics learned will be useful or important for the student’s future; a student can learn to program something that they can actually use in their first year of learning a new programming language (albeit it might not be something too useful or impressive), whereas the application of most topics in math like trig or geometry can not be as easily applied.

      The problem I’ve seen when teaching programming is that when I was in high school they started us with C++… it’s a good language to start with in college but I think for K-12 it would make more sense to start with something like Python, as the learning curve to start using C++ correctly can be very steep for most of the less-dedicated or less-technical students. To me it seems like they have been gearing these courses towards the better students, which I don’t think is the best approach for a K-12 education. I say start by teaching kids how to build a simple but useable application in Python right away (like a simple calculator or something)… if they can’t immediately build a project that does something mildly interesting, they will most likely miss the opportunity to gather interest from any of the kids who did not already start out interested in the topic.

  14. Rich says:

    Those clever chaps who developed the Raspberry Pi recommend Scratch for beginners and then Python. I’m inclined to agree.

  15. Premium User Badge

    Continuity says:

    god.. I wish I had something like this when I was 10. I’d be an uber leet programmer by now. I made the mistake of assuming programming was all math, so I never really considered it as an option until I was already out of the education system.

    • Reapy says:

      That wasn’t just you, I was told over and over again that programming was pure math, scared me away for a while.

      Have been a developer for the past 10 years, have hardly encountered anything beyond basic math at all. About the worst I got to was trying to make a 2d overhead game, had to recall a lot of trig I forgot, that’s about it.

      If anything programming seems to be more about organizing and pushing data around. I say if you like organizing things and constantly refine whatever you do to be more efficient, you have the trappings of a good programmer.

      • Premium User Badge

        FriendlyFire says:

        In a lot of languages, “computer science” is translated as “informatics”, ie. information science. Computers are all about computing and exchanging information.

  16. b0rsuk says:

    If we’re talking Java, the game’s protagonist should be a bureaucrat, not a wizard. You should be fleshing out interfaces and classes specified by 5 other people, and “play” with UML.

  17. cptgone says:

    girls using Apple – and you guys recommend python?
    man never learns.

  18. DaJobat says:

    Though I hate being that guy, the language is Perl not PERL.

  19. TechnicalBen says:

    Give them C++ and be done with it. Or start earlier.

  20. Ahtaps says:

    Code Spells is one letter away from Code Smells which are poorly written and/or inefficient segments of code that need to be ripped out in their entirety and refactored. I imagine this would be modeled as reaching into the chest of those little sack demons and ripping out their beating heart, crushing it in your fist and then shoving a new, better heart into them. Kids will love it! Violence makes everything better. I’m a Software Engineer, I should know.

  21. Premium User Badge

    sonofsanta says:

    As someone who runs a school network and has regular conversations with the head of IT over how to start teaching programming now that the curriculum has been relaxed, the most important question I have to ask is: minimum specs? If it can’t run on integrated Intel graphics, it will never be viable. I can’t afford to outfit a classroom with even halfway decent GPUs. At £50 a pop – i.e. the point at which there is some improvement over the HD2000 – that adds up to a grand and a half for each classroom.

    If it does run, though, even with bells & whistles off, it could be a great introduction. The biggest problem we have is working out how to gently introduce programming without scaring girls* off or boring them to tears. Once they realise it’s Nothing To Be Scared Of, we’re well on our way. Kodu is OK, but more primary age than secondary.

    (*girls’ school, not sexist stereotyping)

    • elgonzo says:

      Holy! You teach the kids graphics programming?
      I wish, i had the chance to visit your school when i was young…

      EDIT: Dammit, i got your comment totally backwards. Now i feel ashamed…

  22. PedroBraz says:

    So from now on at jobinterviews, I´m going to hear from the other side of the table that “java is for kids” when I tell them its what I do. Wonderfull.