When I have been on flights recently without Wifi, I've been passing the time by doing programming problems I find online before the flight.<p>A few times now I've found myself scrambling before a flight to download some random CS course PDF or digging around recruiting sites for hiring challenges that don't assume I have an Internet connection.<p>Does anyone have a good recommendation for a big page or site full of interesting problems that I could download locally? Generally problems that take from 30min - 2hrs to complete?
I often do this on flights, and in addition to solving "puzzles" you can always try to build a well-defined system from scratch. For example:<p><pre><code> - A JSON parser (bring the BNF from http://json.org/)
- Simplified Lisp interpreter
- Forth compiler (for example: https://github.com/JohnEarnest/Four.Ps)
- Emulator for a simple CPU or MCU (6502, 1801, etc- bring a datasheet)
</code></pre>
Projects like these are not "practical", as everything here has been done before, but great learning experiences.
More for the mathematician than programmer, <a href="http://projecteuler.net/" rel="nofollow">http://projecteuler.net/</a> offers a nice collection of challenges, some of them very tricky.
I recommend trying to implement a classic game (e.g. tetris). If you download the documentation for the graphics library, it's surprising how much you can do in two hours. Even without knowing the library from before.<p>(Unfortunately, we just got internet on trains here in Norway, which have reduced my train-productivity noticeably)
If you're up for challenge, I'd try "Ed's Programming Contest Problem Archive" at <a href="http://www.karrels.org/Ed/ACM/" rel="nofollow">http://www.karrels.org/Ed/ACM/</a>, and the Baylor archive at <a href="http://icpc.baylor.edu/Past/PastProblems.html" rel="nofollow">http://icpc.baylor.edu/Past/PastProblems.html</a>.<p>Both contain problem sets from the ACM International Collegiate Programming Contest.
Take a look at <a href="http://codingkata.org/" rel="nofollow">http://codingkata.org/</a>.<p>Best suited for playing around in a new language, but could perhaps inspire exploration of a language you are fluent in.
You can download the SPOJ problem set as a PDF or PS file.<p><a href="http://www.spoj.pl/problems/classical.pdf" rel="nofollow">http://www.spoj.pl/problems/classical.pdf</a>
<a href="http://www.ioi2009.org/index.jsp;jsessionid=0B6696CAD77A789846D13C10D25C1CD8?ln=2&id=363" rel="nofollow">http://www.ioi2009.org/index.jsp;jsessionid=0B6696CAD77A7898...</a><p>This is the International Informatics Olympiad 2009's page. They have PDFs. Problems range in difficulty, but it does take a lot of thought and time to solve each of the problems.
You could always download earlier topcoder-contests (<a href="http://www.topcoder.com" rel="nofollow">http://www.topcoder.com</a>), specifically single round matches for algorithms. They have a time limit on 75 minutes for 3 exercises, and should keep you busy for roughly that amount of time.
If you are looking for algorithmic puzzles you can browse the archives of topcoder.com : <a href="http://www.topcoder.com/tc?module=MatchList" rel="nofollow">http://www.topcoder.com/tc?module=MatchList</a><p>These usually require less time and less math skill than the already mentioned projecteuler.net problems.
One of my professors has a large collection of previous ACM programming contest problems (with solutions) on his web site, along with problems from the contest he runs: <a href="http://math.nmu.edu/~apoe/" rel="nofollow">http://math.nmu.edu/~apoe/</a>
For short puzzles, you can try out our newly launched site puzzlenode: <a href="http://puzzlenode.com/" rel="nofollow">http://puzzlenode.com/</a> | Only 4 problems there now but there will be at least 4 new ones added every two months, hopefully much more often than that.<p>These problems also serve as entrance exams for Ruby Mendicant University. We release our RMU exercises as well, but they're more open ended and likely take more than two hours in most cases: <a href="http://university.rubymendicant.com/resources/learning_materials.html" rel="nofollow">http://university.rubymendicant.com/resources/learning_mater...</a>
Slightly off-topic, but I'm actually disappointed by the spread of Internet access to things like planes and trains. One of the things I enjoy the most about flying is that I feel disconnected from the rest of the world, and I try to take advantage of this to focus on a book or programming problem for the duration of the flight, without worries or distractions. I haven't yet been on a flight with wifi, but I suspect that the illusion of isolation would be broken for me, and my ability to focus would suffer dramatically. Hopefully, most airlines will see it as another thing they can charge me for.
I always like to do something practical, not a mere exercise. So my first choice is actually building something with a full-stack framework like web2py. You can easily create a db-driven web site in 30 min - 5 hours.
I'm not sure about sites that let you download all their problems in one go, but look at my list of sites of programming problems here: <a href="http://stackoverflow.com/questions/4697615/are-there-any-sites-that-do-python-programming-challenges-similar-to-projecteuler/4697635#4697635" rel="nofollow">http://stackoverflow.com/questions/4697615/are-there-any-sit...</a>
<a href="http://sixrevisions.com/resources/10-puzzle-websites-to-sharpen-your-programming-skills/" rel="nofollow">http://sixrevisions.com/resources/10-puzzle-websites-to-shar...</a> and recently I came across dropbox challenge as well! <a href="http://www.dropbox.com/jobs/challenges" rel="nofollow">http://www.dropbox.com/jobs/challenges</a>
Look up the Informatics Olympiad. Some awesome theoretical puzzles: <a href="http://www.olympiad.org.uk/problems.html" rel="nofollow">http://www.olympiad.org.uk/problems.html</a>