The essence of algorithms is that of combining simple operations as to solve complex problems. Key is that everything should be completely well defined: the available simple operations, how they may be combined, the complex problem, and the correctness of your solution. Elegance is bridging a large semantic gap: the simpler and fewer the operations and the farther from them the problem seems to be, the more we are impressed. The simpler the solutions turn out to be, the more we are impressed.
I have just been introduced to a web site that gets as close to this essence as anything that I’ve seen: RoboZZle. The problems are given by mazes, where the goal to pick all “stars” on the maze. You must instruct a “robot” to do so, using very few commands: turn left or right, go forward, call a subroutine, do one of the above conditioned on the color of the square that you are on, or change the color of the square that you are on. That’s it. Programs must be very short, usually around half a dozen commands, and are entered, debugged, and run very easily graphically. Amazingly, this is enough for a multitude of interesting challenges, ranging from ones that are easy for kids, to ones that baffle me (despite the solution being of length 5).
These puzzles give you the main intellectual ingredients of algorithms and programming: not only using loops and conditionals but also abstraction (defining subroutines) and recursion. Check it out or, better, have your kids do so.
Check it out or, better, have your kids do so.
I’ll go for the latter option – I recognise a big time-sink when I see one.
Now you are not primarily employed by Google, your blog could also mention the developer behind the puzzle, just like you do for papers.
The puzzle has only recursion for the repeatation of the instructions. Which makes it easier to understand recursion, and those who already know recursion, it makes it challenging.
Though, I think for little kids or beginners who are just starting the visual programming, an expanded instruction set mode would have been useful. For an example, a for-loop (though you a very limited for-loop can be simulated as a procedural call).
Somebody who did not know the back ground, misunderstood my comment, especially the first sentence.
The developer of the puzzle is at Microsoft. Usually our colleagues at Google do not write about things related about us. We sometimes do write about technologies related to them (Google, IBM, Apple and others) but we also take an extra effort to find out and mention their relations with the technologies. Same seems be the case with researchers in other organizations, such as IBM. Same also seems to be the case with academics too when they write about papers, e.g., mentioning the authors.
This blog did mention many times work by Microsoft researchers.
In any case, RoboZZle was created by Igor Ostrovsky.
I couldn’t resist the time sink.
There’s also Scratch and Alice.
I remember participating in Microsoft’s Imagine cup three years ago, and they had a competition with the same goal(The robot was called Herbert if I remember correctly), and a fancier GUI. So I guess MS did really come up with this first.
I couldn’t resist the time sink.
thanks
killing games
[…] https://agtb.wordpress.com/2009/10/07/robozlle-and-the-essence-of-algorithms/ […]
I visit day-tօ-day some web sites ɑnd sites to read posts, еxcept
this weblog ǥives feature based articles.
Дрессировка керн-терьера http://dressirovkaobuchenie.ru/138.html причём охрану собаками чаще стали использовать и при охране частных домов и владений.