One of the more challenging things about poking programming for me is what exactly to code. Most of stuff was already done before (especially which my skills are up to). Rest is either boring or doesn’t last long (I don’t really have a life outside of computer).
I was somewhat interested when I found collection of programming problems at Project Euler. And after spending some time at that site I can say it is perfect training ground.
What it offers
Site has long and ongoing collection of mathematical problems. None of them tackle world domination. They mostly focus on learning and logic aspects.
All problems have two things in common:
- they require computer, some programming and brains to solve;
- they can be computed in under one minute, which in many cases is much harder that just solving;
When you are done you submit answer to site and gain access to forum thread with discussion of that problem and PDF file with theory and suggested solutions.
You can use any programming language you are comfortable with. As long as it has basic arithmetic and looping (most absolutely do). I use AutoIt so far. Statistics show every flavor (including hardcore pen and paper tool), but seem especially heavy on common OOP languages and Haskell (apparently it’s really good for this stuff, people in forum constantly show off with 1-line solutions).
There is also good learning curve. Some problems are just there to stretch, but plenty of them act as building blocks and tools for later. This prevents writing throwaway code and makes you separate it into reusable functions.
So far only issue for me is that English isn’t my native language. Math is hardly part of basic English so for every problem I have to be careful with translation. And while on research either suffer through reading theory in English or translate back and forth.
It is also really large set of problems to tackle and will take a lot of time and determination. There are many thousands users registered on site, but average number of problems solved is only 17 out of 265 (at moment).
Site offers extremely extensive and very well selected set of problems. How easy to understand problems boils down to your math level and English understanding, but solutions themselves are mostly pure logic, research and programming.