tags:

views:

2059

answers:

20

Can anybody recommend games that teach programming fundamentals?

I've personally found that Magic: The Gathering and Robo Rally (both designed by Richard Garfield) are excellent for developing early programming skills. I used to toy around with Logo on a TRS-80 as a kid and Robo Rally reminds me of that (here's a similar Flash game that's not bad). MtG is good at stressing creative thinking and learning to see past seemingly obvious situations.

+4  A: 

I recommend Go for developing analytical skills. You can learn to play at Sensei's Library, or play online for free at the KGS Online Go Server.

Bill the Lizard
+6  A: 

Its pretty old school, but I loved AI Wars. It might be a big step for a non-programmer, but with the right guidance it is pretty fun. You basically create a little program that your "bug" uses to battle other people's programs. http://www.tacticalneuronics.com/content/main.asp

Totty
A: 

Almost any roleplaying game involves general problem solving skills. (And more importantly work together as a team to succeed in the task).

I also like Advanced Civilization. It involves optimalization, and resource allocation.

And if you want to sharpen your negotiation skills. Please have a look at Diplomacy.

Gamecat
+6  A: 

What about games that require programming? For example, there is Terrarium in which you code animals in .NET that are then released into a server and compete with the creations of other programmers. It is fairly easy to get started with Visual Studio Express and a basic understanding of programming.

There is a similar thing for Java where you create battle bots. Anyone remember the name of it? I think it was first released by IBM.

Rob Prouse
Robocode => http://robocode.sourceforge.net/
Andreas Grech
A: 

Many board games exercise the mind in the same way that programming does. I like Oshi and the new Monsterpocalypse. Several programmer friends have told me they like tabletop games like Flames of War because the strategies you use to thwart your opponents rely on similar problem solving skills in programming. Infernal Contraption is another good one since you stack instructions together and process them in order to build the best machine.

Arkham Horror stresses you in the same way that project management does (especially if your customer resembles one of the Ancient Gods).

cfeduke
+9  A: 

light-bot by Armor Games.

Bryan Oakley
+6  A: 

It's not a game exactly, but I used Alice to teach basic OO programming. It creates a "real" object for an Object and lets the user implement methods as actions for the object.

For example, the user can create a Dog class and implement a bark() method. From there, you can create a fido instance of the Dog class. Then, you can let fido.bark() all he wants to (until you let him outside).

It's all very visual and intuitive. I know that it's used to teach basic programming concepts to elementary school students up to college students. It's definitely more than a learning tool than a game, but it's still great for learning basic programming fundamentals.

jacobko
+4  A: 

Dungeons and Dragons (especially as a DM) significantly improved my programming skills when I was growing up. It taught me a lot about statistics and probability, reading comprehension, memory retainment, logic, and critical thinking. (Of course, just about any PnP RPG would do.)

Other games that helped my logic and decision-making skills were Risk, Stratego, and chess. And believe it or not, Yahtzee. :)

Robert S.
+1  A: 

Reversi/Othello.

It moulds your mind in correct directions.

EvilTeach
+9  A: 

http://fantasticcontraption.com/

Awesome physics puzzle game! There are some great lessons in the fundamentals of programming here. For example some puzzles can be solved by repeatedly patching a partially working solution (just like programming) BUT patching a solution over and over results in a complicated, unpredictable solution... just like in progamming :-p

link text

MrDatabase
That reminds me of The Incredible Machine, published by Sierra.
Parappa
I'm obsessed with Fantastic Contraption. Absolutely awesome game. You can also check out Magic Pen which is similar. You can find it at http://www.gamesvine.com/random/MagicPen/
Steve Hiner
+5  A: 

(edit: d'oh, I didn't see Bryan Oakley's response. Oh well...)

You may want to look into something like Light-Bot:

http://armorgames.com/play/2205/light-bot (requires Flash)

In order to make your robot complete the objective (lighting up specific tiles, in this case), you build a "program" composed of pre-defined commands. You then run your program and the robot acts accordingly. As levels progress and complexity increases you can make use of two extra "functions", storing different command sets in them and calling upon them as needed to execute common, repetitive actions.

I enjoyed playing this kind of game when I was younger, and it definitely instills the right concepts: coding, testing, debugging. Your main command-space is limited, so using functions teaches you to split off common functionality into its own function call, relying on iteration and recursion to accomplish more with less.

Yoten
+7  A: 

Typing of the dead.

I'm personally of the opinion that typing is a crucial programming skill. Any programmer should be able to type at least 30 wpm.

Kibbee
I also think that every programmer should be able to fend off a zombie invasion. :) Now we're covered on two fronts.
Parappa
+2  A: 

Well, you have to be careful with some games ... some MtG players may end up as one of those programmers who can only write code in X language for Y purpose. :) ("No thanks, I'll stick with my red-and-black deck ...")

Certainly any game that requires some sort of programmable moves would qualify. Heck, you could throw in turn-based strategy games as well (Heroes of Might and Magic, old-school Warcraft).

But I think you could make the case that just about any game could help you with programming ... although some games might only qualify as long as you think about it from a programmer's perspective. (How would I keep the game clock running properly? How would I tell which piece the player wants to move? How do I set up an AI?) Thinking ahead, learning rules, acting only within the boundaries of the game ...

In fact, you might even try writing your own versions of games. There's nothing that shows you what it takes to write a good game quite like writing one yourself.

(Disclaimer: I'm an avid gamer. Gaming and programming have gone hand-in-hand with me ever since I could do either. When we got our Apple II+ back in the day, I was split between wanting to learn Applesoft Basic and wanting to play another Scott Adams adventure.)

Dave DuPlantis
I'll stick with my red and black deck, thank you. :)
cfeduke
Green and white for me, thanks. Force of Nature!
gnovice
+4  A: 

Robocode: http://robocode.sourceforge.net/

Write procedures against a robot tank's control interface, then pit your algorithms against others and watch how long your creation survives. Fun stuff but you can lose way too much time on this :-)

Alex Francis
+2  A: 

Final Fantasy XII had that gambit system. It's a very constrained, rudimentary form of AI coding for your characters. It actually can be surprisingly deep when you get into it, though.

Daddy Warbox
A: 

This is not for the light hearted/beginner programmers and teaches assembler. Very addictive and loads of fun.
install it on Ubuntu with sudo apt-get install droidbattles

Site: http://www.bluefire.nu/droidbattles/screenshots.html

Available for Windows and Linux

An amazing game.

+1  A: 

Dr Brain (a set of childrens games) had at least one game that required some basic programming logic to solve the puzzle.

thursdaysgeek
Ah yes, Dr. Brain is great! I believe the programming one was called "Motor Programming".
Justin Ardini
+1  A: 

Robot Odyssey is perhaps the classic example. There are a number of modern clones, but none that I've found compare to the original.

Ken
+4  A: 

robozzle an amazing social / programming puzzle in silverlight

Luca Martinetti
+1  A: 

Manufactoria is a fun game that introduces the concept of finite state automata.

tfinniga