Games and Learning/Topics/Play/Puzzle

"Puzzle video games are a genre of video games that emphasize puzzle solving. The types of puzzles to be solved can test many problem solving skills including logic, strategy, pattern recognition, sequence solving, and word completion." http://en.wikipedia.org/wiki/Puzzle_video_game

Examples

 * machinarium "The goal of Machinarium is to solve a series of puzzles and brain teasers. The puzzles are linked together by an overworld consisting of a traditional "point and click" adventure story. The overworld's most radical departure is that only objects within the player character's reach can be clicked on." http://en.wikipedia.org/wiki/Machinarium
 * world of goo "World of Goo is a physics based puzzle / construction game. The millions of Goo Balls who live in the beautiful World of Goo don't know that they are in a game, or that they are extremely delicious."
 * ToonTalk is an environment where children create programs by playing in an animated world. It includes a tutorial in the form of a puzzle game.

Readings
Kahn, K. (2004), ToonTalk – Steps Towards Ideal Computer-Based Learning Environments, in Mario Tokoro & Luc Steels, ed., 'A Learning Zone of One's Own: Sharing Representations and Flow in Collaborative Learning Environments', Amsterdam: IOS Press, pp. 253-270. http://toontalk.com/English/ideal_learning_abs.htm Many of the attributes of good computer-based learning environments such as support for collaboration, creativity, and community are widely agreed upon. Interfaces should be seamless. Content should be challenging without being frustrating. Authoring support should be flexible and powerful. But what about universality in learning environments? Should learning environments support the specification and execution of arbitrary computations? And if one does support universality, should it be for more than just expert users? I argue here that universality for all is both desirable and attainable. Furthermore, by universality I mean more than a theoretic equivalence to a Turing Machine, but rather an elegant and cognitively appropriate model of general computations. The classical notion of universality only addresses the ability to compute the values of functions, ignoring the ability to effectively use the input and output devices typically associated with desktop computers. Ideally, learners should be able to describe computations, including those involving the display, mouse, keyboard, or sound card. And they should be able to describe those computations in a language that is well-suited to their cognitive abilities. A computer becomes whatever software instructs it to be. A learning environment that does not restrict the range of software that can be created and run is able to exploit all that a computer can be. Most learners can find something that is personally compelling among the literally millions of different kinds of things a computer can be. Software is a fundamentally new kind of medium. It is a medium where one expresses ideas that are given life by machines called computers. Ideally, educational software should be transparent. To be transparent, software needs to be composed of modules that can be understood and changed by students as well as authors. Previous attempts to provide universal universality i.e., fully general computational tools for everyone have had limited success. Logo Papert 1980 and Smalltalk Kay 81 both strive to be general purpose programming languages for all. To master these languages or their successors e.g. Boxer Boxer 02, StarLogo Resnick 1997, and Squeak Squeak 02 requires a set of skills that many students fail to acquire. To program in these languages one needs to be fluent in a set of computational abstractions e.g. procedures, variables, and conditionals. And programs are constructed in the realm of abstract variables and not concrete values. Everyone, however, can master tools capable of constructing arbitrary computations. By “everyone” I mean students who are capable of learning other school subjects. ToonTalk Kahn 96, Kahn 02 is a programming environment that greatly lowers the difficulty of programming without sacrificing power or expressibility. It does this by replacing computational abstractions with tangible concrete analogs and by supporting the ability to program with examples and subsequently remove details to obtain generality.