Toy ProblemsBecause computing should be fun...
Why Toy Problems?
A bit of history...
I grew up in the late 80ies, when personal computers first became main-stream.
It was an exciting time. The easy availability of reasonable computing power made a certain form of exploratory and spare-time programming possible. "Computer science" and "programmer" were not yet readily accepted concepts, and people were drawn to computing from other fields, bringing their own interests and questions with them. Many learned to program by working on "toy models" from their own work. Programs were unsophisticated, but diverse in what they tried to compute.
Things have changed since then. To be a "programmer" or "software engineer" is a totally accepted full-time occupation (paid or unpaid) for a large number of people. The level of professionalism (again, paid or unpaid) is much higher than it used to be, and with it the sophistication of many of the programs out there.
But not only the style has changed, the content is often different as well. Full-time programmers are interested in programming - witness the large number of open-source projects devoted to programming tools, libraries, frameworks. These projects are by programmers, for programmers, and about programming.
This is wonderful, and in fact this website would not be possible without many of these projects (cf. Tools for a list of tools used to produce this site). But where does it leave the rest of us?
Computing for the rest of us
Toy Problems attempts to show examples of interesting systems and questions, which can be addressed well with a little programming, but which are not primarily about programming per se.
Instead, Toy Problems is about the world around us. Examples are taken from basic physics, everyday phenomena, and basic (but interesting) math. What all of them have in common is that they lend themselves to short, easy programs, often with a little graphical output. (If a graph says more than a thousand words, a program producing graphics is a thousand times more interesting to write.)
It's a wonderful world
Another very important point Toy Problems tries to make is that the world around us can be understood. Foam in a coffee cup, spontaneous traffic jams on a highway, satellites going to Mars, matter changing spontaneously as the temperature is changed - all these phenomena (and more!) can be understood. They don't have to be taken for granted, or be viewed as miracles, and in particular they do not have to be regarded as the inaccessible field of "specialists".
What the computer can do is to make the mechanisms more accessible to those of us who do not choose to go to school (and graduate school) for hard sciences and mathematics. We can study simplified models, and through simulation of the underlying mechanics we can learn to understand the processes without the usual mathematical toolset.
Toy Problems and You!
Many of the examples presented here are taken from basic physics, reflecting the bias (and educational background) of the author. Many problems come from statistical mechanics (the subfield of physics dealing with large numbers of particles), again reflecting the authors particular interest, but also utilizing the specific benefits of the computer: many-particle systems cannot be solved analytically, and only the arrival of computers has made such systems tractable. Finally, some problems are more mathematical in nature, but are included here because they are most useful when doing calculations on a computer.
I will update this site with a new problem on an approximately monthly basis. Feedback is welcome, email me at editor at toyproblems dot org.
For discussion among readers, or to be kept up-to-date on new postings to this site, please sign up for the Toy Problem mailing list.
Seattle, June 2006
I owe a great debt to A. K. Dewdney (University of Western Ontario, Canada). His "Computer Recreations" column, which appeared in the Scientific American from 1984 through 1991 has been an inspiration for me as a teenager, and Toy Problems explicitly attempts to continue his spirit of exploration and discovery.
About the Author
Philipp K. Janert obtained a Ph.D. in Theoretical Physics from the University of Washington (Seattle, USA) in 1997. Since then he has been drifting: through life, across this globe, and through the tech industry.
He has worked as technology consultant, software engineer, technical lead, project manager, and university instructor, both in the United States and overseas. He knows small start-ups and large corporate environments. He has seen some good projects fail and some bad ones succeed, and more than once he managed to pull a failing project back from the brink.
More details can be found on his personal webpage at beyondCode.org.