- practice, as distinguished from theory; application or use, as of knowledge or skills
- convention, habit, or custom
- a set of examples for practice
Computer programming, like any creative activity, demands constant study and practice. Vladimir Horowitz practiced the études of Chopin every night, after he performed a concert, to maintain his skills for the next performance. Tiger Woods drives a thousand balls on the driving range, every day. Pablo Picasso sketched a bull ten times before the eleventh bull was right. This blog publishes new programming exercises weekly, at least, so that savvy programmers can maintain their skills by working the exercises and thinking outside their normal skill set, whatever that is.
The programming exercises provided here aren’t a contest. No points are awarded, no scores are kept, there is no list of readers who have completed all the exercises. If you complete the exercise, and perhaps in doing so learn something that will help you be a better programmer, then your effort is its own reward. The exercises are intended to take about an hour to complete, on average, though of course the competence and creativity of the individual programmer, and the resources provided by the local computing environment, mean that the actual time spent on any given problem may range from minutes to hours. Although a sample solution is given for each programming exercise, there is no “right” answer, no perfect solution, in any sense. Thus, having completed an exercise, you may wish to do it again, using a different algorithm or a different programming language. Or you may wish to discuss your solution with other programmers in your office, or in your classroom, or in the comments of this blog.
Sample solutions are normally written in the Scheme programming language, which provides strong support for the exercises that make up the bulk of Programming Praxis. But there is no requirement that solutions be written in Scheme, and in fact any programming language may be used; in some cases, a different programming language may be better suited to a particular exercise. You can use these exercises to improve your skills at your primary programming language; an equally valid use of the exercises is to learn a new programming language. You may even find it useful to do the same exercise multiple times in different programming languages.
This blog is Copyright © 2009 by Programming Praxis of Saint Louis, Missouri, USA. All rights reserved. This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/us/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. The logo is due to Remco Niemeijer.
The Creative Commons license certainly permits individual use of the exercises given here for personal study, and teachers in accredited high schools and colleges are welcome to use the exercises in their classes. However, if you are a programming manager and require your subordinates to perform these exercises as part of a staff development program, that’s commercial use, and requires a separate license. Such use is encouraged; contact programmingpraxis@gmail.com for details. Suggestions for upcoming exercises are always welcome, and may be sent to the same email address.
An RSS feed for the entries on this blog is available at http://programmingpraxis.com/feed.

[...] 2009Al Zimmermann's Programming Contests October 17, 2009The Python Challenge October 17, 2009About « Programming Praxis October 16, 2009The Differentiator October 16, 2009The File Cabinet / FrontPage October 16, [...]