- 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 “sharpen your saw” logo is due to Remco Niemeijer.
Suggestions for upcoming exercises are always welcome, and may be sent to the programmingpraxis@gmail.com.
An RSS feed for the entries on this blog is available at http://programmingpraxis.com/feed.
