Learning to Code with a Boardgame
markmcb writes "While some of us cling tight to our memories of Apple-filled classrooms playing The Oregon Trail and driving our Turtle around in Logo, children today have many other ways to learn about the inner-working of computers and the code that drives them. Wired.com is running an interesting article about a boardgame in which players must use simple logic similar to that used in programming to get their skier down the mountain. From the article: 'Using basic math, players have to figure out which paths are open to them and then decide the fastest way to the finish line. The trick, however, is learning which paths are open to you using only programmer jargon like 'if (X==1)' then you can take the green path or 'while (X4) you can take the orange path,' where X is the roll of the die.'"
I was told to never use a goto...
Also try Robo Rally. Of course, this deals with how to program a computer with a VERY limited instruction set, and with damaged hardware. :)
[
This could have good implications on future engineers. Where I read that the US is falling behind, this could help teach the logic engineers, especially electrical and computer engineers, need to use regularly.
Evolution or ID?
"Job outsourced to India! Go directly to trade school, do not buy a house, do not get laid."
"High school reunion time! The same guy who kicked your ass every day in high school and barely passed wood shop laughs at you because he makes more than you as a plumber while you wasted 4 years at college. Go back 3 spaces."
There are fifty differnt robot kits floating about. They are much more entertaining and probably can help people program just as much as a boring board game.
Ooo man the floppy drive is broken. No wait. The computer is just upside down.
*Of course this omits thre pretty pictures*
c-jump: Ski & Snowboard Race
Discover fundamentals of computer programming by playing a board game!
c-jump helps children to learn basics of programming languages, such as C, C++ and Java.
Players:
2 to 4 players
Ages:
11+
Object Of The Game:
First player to move all skiers past the FINISH line is the winner!
Equipment:
One game board, one die, and sets of colored pawns representing skiers and snowboarders for each player.
Great and unique learning game for kids! It teaches the child basic commands of a programming language, such as "if", "else", "switch", and introduces variable "x" concept.
The child calculates number of steps in the move, including addition, subtraction, division, and multiplication of small numbers. The game helps to develop understanding of a complete computer program, formed by logical sequences of commands.
This game eliminates intimidation of many kids and their parents, bored by the mention of "computer programming", often associated with visions of geeky guys glued to their computers. c-jump reveals simple programming terms in a cool way!
By moving around the board , entering loops, branching under conditional and switch statements, the players gain physical experience of a complete program. Understanding of the internal action of a computer is essential to understanding what software is. Static program causes dynamic process in the computer. By playing the game, players see this process as physical and spacial motion.
c-jump facts:
This game is not only about teaching and learning: it's fun and entertainment for the whole family!
Skiing and snowboarding is a perfect programming analogy.
c-jump game is ideal for home school education.
The game is based on the code of a real computer program!
Proceedings of our business support Common Text Transformation Library, an open source programming project on the internet. Please feel free to visit and download!
US Patent 6,135,451
© 1997-2005 Igor Kholodov
You can't talk about Wikipedia's flaws on Wikipedia
Here are the rules, in case people want to check the game out further.
Maybe some kid will figure out how to finally get past that damn monster!!
This is really more of a math game than a programming game per se. Yes, it teaches the concept of conditional branching, but that's not especially new to the world of board games. Also, "x" isn't really a variable, but instead represents the number you rolled, which is different from how programming actually works. (Which is potentially confusing, because c-jump otherwise uses a fairly C-like syntax, with == instead of = and everything.)
Not to say that this isn't a potentially educational game, but this is really more a way to practice doing simple arithematic and logic instead of anything specific to programming itself. (Although arithematic and logic is certainly worth learning.) It would probably lose absolutely nothing in playability or educational value if they removed all C stuff from it and just made it into a silly little math game.
"Never attribute to malice that which can be adequately explained by stupidity." -- Hanlon's Razor
One of my favorite early computer toys was the CARDIAC, the Bell Labs "Cardboard Aid to Computation," and I was hoping that this board game might re-create some of that excitement for today's kids. I liked the concept, but was a little dismayed by the attention to syntax. I'm more of the "Syntactic sugar leads to cancer of the semicolon" school of thought.
I worked on the Logo implementations for the Apple ][ at the MIT Logo lab, and at Terrapin did the Commodore 64 (and other ill-fated Commodore computers), Macintosh. (I also various implementations and translations for Japan, Spain, France, and Germany.)
Learning how to become a computer programmer has never been easy or fun for most people. Some would even call it boring.
This first line hints at an important point the article missed. Some of us actually liked learning to program. I remember learning BASIC on my Apple IIC when I was 12 years old. If you don't have the hacker mentality - the feeling that you want to figure things out - then you're going to have a hard time learning to program. I don't know, maybe this hacker mentality can be learned.Bradley Holt
If you find this interesting you might be interested in Bruce Schneier's Solitaire Encryption Algorithm, a real encryption algorithm using a deck of cards.
What would be cooler is if while playing the game, you had to build a "program" of sorts, and you can't win the game until your program produces a specific output. You could then compete against other players for resources needed to finish your program. This would allow you multiple ways to win based mostly on your ability to understand programming concepts.
I see this game as a cool idea, but it's really just a first step.
And the men who hold high places must be the ones who start
To mold a new reality... closer to the heart
I just wrote code today that had a bunch of gotos in it.
pass in a string pointer, and if your return code was -1 log the string.
If you use Exceptions in Java or Ada under the covers they are just jumps.
In the future, I would want to not be isolated from my friends in the Space Station.
This was a great little Apple IIe style game that I enjoyed in elementary school. Looking back, I now see that it taught basic electronics and logic. It was lots of fun at the time. More info can be found here.
We used LOGO on an Apple IIe and we liked it!
:D
That little turtle moving all over the scren to make what were essentially spirograph pictures? Back then that was state of the art shit, boy.
Made learning programming reasonably simple too, since you learned to think in terms of the algorithim. Also taught trig, since you had to deal with angles all the freakin time. But it worked, by gum!
- Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
I remember seeing a similar theme a long LONG time ago, back when I was a little kid about 12 years old, when I wheedled access to the local university PLATO IV terminal.
The scenario was a little oval track with a train that went around and around, the computer randomly generated 3 numbers, and you would type in an algebraic expression to get the number of spaces you would move. You could go for the longest distance, or you could try to hit special squares, like bonus multiplers, or you could try to land on the computer opponent's train which would send him backwards. I was a pretty young kid back then, but I do recall it really made me think hard about algebra, and it was a lot of fun.
PLATO IV had another educational game I really liked, I think it was MoonWars or something like that. You could play live against online opponents too. You had a screen with a random placement of circles (representing craters, I guess). Then you and your opponent were placed on the playing field. You played in alternating turns, you could either shoot a laser at your opponent, or move. The laser would bounce off the sides of the screen, only stopping when it hit the opponent or a crater. Sometimes if you had a clear field, you could use angles really close to perpendicular or horizontal, yielding crazy shots that went back and forth dozens of times. But mostly you just tried to bank shots off the sides, trying to home in to the opponent until they chickened out and moved. The educational content was pretty good, obviously you learned that angle of incidence = angle of reflection, but it also allowed you to input your shot's angle in algebraic notation, in degrees or radians. I immediately realized it was a lot faster to do algebraic notations in radians.
PLATO IV really was a groundbreaking platform for educational games, someone ought to revive some of their old classics. I made a couple of feeble attempts to write a MoonWars clone but I never got anywhere.
Your argument violates the prinicipal of not doing premature optimization. The choice between ++x and x++ should depend on readability.
If you are using it as a standalone statement the obvious choice is x++ in most object oriented languages since it follows the convention of writing the object first and the action afterwards.
If it is not standalone the different variants have different meanings so there is no need to choose because you are forced to use the correct one or the code won't work.
For slightly younger people, there's Rocky's Boots made by the same people (The Learning Company). It teaches a lot of the same things, but in an easier (and cuter) style.
All you need is an Apple II emulator like AppleWin and you're all set!
Changed a bit since it was being beta tested in 1996 and even more difficult getting 3 other programmer kids to play...
l
http://www.sierramadregames.com/smg/robotanks.htm
Often wrong but never in doubt.
I am Jack9.
Everyone knows me.
I thought of (and googled for) Robo Rally too when I saw the article, and it appears that they've reissued the game, which had been most lamentably out of print for 4 or 5 years.
Still costs around 50 bucks, but IMO definitely worth it.
http://www.wizards.com/roborally/
This looks really basic, and why skiing?
If you really want a kid to dive into programming, I'd think Mindrover is a better choice. It's got programming, simulated physics, simulated electronics and competition that doesn't involve a roll of the dice.
I don't see how the c-Jump game would ever teach the trial and error aspects of coding. In Mindrover, you code better to win, and get to see a lot of hilarious faliures as you learn.
$go (that way eq really_fast) ;
; ;
if $something (%gets_in_way) {
$turn
} else {
die print "You have crashed!"
This
What's happening is that we are yet again changing the way we think. When we developed spoken languages it changed the way we think. When we developed written languages it changed the way we think. When we developed mathematical, chemical, financial and engineering languages it changed the way we think. Now we're developing graphical languages and that will again change the way we think, not to mention the way we communicate, work and create. This is really what the article hints at and this is why it's tremendously significant. When a person uses a graphical language instead of a text language it's an entirely different process, approach and result.
Stacks were done with something like:
POP x = *(p++)
PUSH *(--p) = x
since stacks grew downward. With this method, p == 0 means empty stack, which is nice.
The only reason ++x might be faster than x++ is that no "temp" register is needed to store the unincremented original value. The two forms are NOT semantically equivalent, unless you are ignoring the return value. Any half-smart compiler would not allocate a temp register for an unused value.
And that's all, folks.
There was a game way back when on the Atari2600 called "Rocky's Boots" that presented sorting problems of objects on a conveyor belt in various factory situations.
The player took mechanizms like "not" and "or" and characteristics "round" or "filled" to make logic that would operate to sort the things.
It was a great game. I have not seen anything quite like it since.
It is a great little adventure game I played when I was a kid that helped me learn programming concepts. You can design your own levels and program little objects to do whatever you say. It was kinda like programmable Rogue. You could use the ZZT programming language to make the little objects do all kinds of neat stuff, very fun to play too. See it here
Meet new people, and kill them.