I'm trying to find places where I can hone my craft outside the context of school or work. Are there places online, or books available, where I can access lists of programming puzzles or challenges?
Moderator note: this is intended to be a canonical list; please check to see if your suggestion has already been added to the answer. If it hasn't, edit the answer to add yours, preferably with an explanation or reason why you're suggesting it.
On Stack Exchange
Pick a tag, follow the new questions posted, and try to solve them. If you find a good one, bookmark it for later use:
- Stack Overflow
- Code Review Community Challenges
- Programming Puzzles and Code Golf
- Solve algorithmic and datatypes problems
- Algorithms for Interviews by Adnan Aziz
- Cracking the Coding Interview (6th Edition) by Gayle Laakmann
- Programming Challenges by Steven S. Skiena
- The Art of Computer Programming by Donald E. Knuth
Communities and Blogs
- Algorithm Geeks Google Group
- LessThanDot's Programmer Puzzles forum
- The Daily WTF's Bring Your Own Code series
Game sites and ongoing contests
- Codingame - fun games (solo and multiplayer) to practice your coding skills. Supports 25+ programming languages.
- Hacker.org Challenge — "The hacker.org challenges are a series of puzzles, tricks, tests, and brainteasers designed to probe the depths your hacking skills. To master this series you will need to crack cryptography, write clever code, and dissect the impenetrable; and in the process you will enrich your understanding of the world of hacking."
- Pex for fun — game from Microsoft research where you duel against other programmers
- Rankk — "You start with the easy levels and progress to the intermediate and hard levels by solving the minimum number of required challenges at each level. The journey to the top is an arduous yet rewarding one. You need to be sufficiently determined and persevering to go far. Only a few are expected to reach the apex and attain Geb."
- Google Code Jam—algorithmic puzzles
4Clojure (Clojure) — "4Clojure is a resource to help fledgling clojurians learn the language through interactive problems. The first few problems are easy enough that even someone with no prior experience should find the learning curve forgiving. See 'Help' for more information."
Prolog Problems (Prolog) — "The purpose of this problem collection is to give you the opportunity to practice your skills in logic programming. Your goal should be to find the most elegant solution of the given problems. Efficiency is important, but logical clarity is even more crucial. Some of the (easy) problems can be trivially solved using built-in predicates. However, in these cases, you learn more if you try to find your own solution."
Python Challenge (Python) — "Python Challenge is a game in which each level can be solved by a bit of (Python) programming."
Ruby Quiz (Ruby) - "Ruby Quiz is a weekly programming challenge for Ruby programmers in the spirit of the Perl Quiz of the Week. A new Ruby Quiz is sent to the Ruby Talk mailing list each Friday."
IOCCC (C) - "A contest to write the most obscure/obfuscated C program. (Fun to try to understand the previous year's entries, or to submit a new one.)"
Underhanded C Contest (C) - "contest to turn out code that is malicious, but passes a rigorous inspection, and looks like an honest mistake. (Try to understand previous year's entries, and learn to find similar mistakes in other people's code)"
CheckiO - Python programming challenges. Custom "Missions" can be created by members.
109 Python Problems for CCPS 109 Python problems of various levels of difficulty, with an automated pseudorandom fuzz tester to verify that the functions are correct.
Online judges / automatic assessment
- Codingbat has lots of coding challenges ranging from warm-ups to Harder recursion problems. It is available in Java and Python.
- Cyber-dojo has a nice variety of katas and supports a good selection of languages. It is intended to support doing deliberate practice of TDD, but could be used for personal development too.
- Peking University JudgeOnline for ACIP/ICPC
- Sphere Online Judge
- University of Valladolid Online Judge
- Codewars — Training with code challenges.
- Rosalind algorithms and bioinformatics
- Quizful - interactive programming quizzes in "Duolingo style". This site looks fun and has a good set of questions, at least in Java. Plus, as they say, it has adaptive learning algorithm, that makes learning more effective.
- exercism - Challenges in more than 30 languages that will be evaluated automatically.
Problem lists and contest archives
- ACM/ICPC Problem Index @ HIT — List of problems from the ACM International Collegiate Programming Contest
- Algorithmist — Includes lists of algorithms and other puzzle sites
- Career Cup — Collects community-subumitted interview questions from various tech companies
- Educational Computing Organization of Ontairo's past computer programming puzzles
- Engineering Puzzles at Facebook — Puzzles provided for the purposes of evaluating potential hires
- Google Code Jam contest archives
- Ninth Annual ICFP Programming Contest Task archive
- Ponder this at IBM Research — Puzzles provided for the purposes of evaluating potential hires
- Programming Praxis
- Project Euler
- Rosetta Code
- TopCoder Match List
- International Olympiad in Informatics - yearly contents for teams of students. (previous year's problem sets)