A todo list encompasses many basic entry points a piece of software must accommodate:
1) interface
2) database
3) adding/removing from said store
4) sorting
5) class structures
...
I could go on. Essentially, the best way into any language is to know how something is supposed to work and compare it to how it appears to be working, making those more difficult leaps by actually practicing.