Code Katas with a UnitTest project to practice TDD
https://en.wikipedia.org/wiki/Kata_(programming)
A code kata is an exercise in programming which helps programmers hone their skills through practice and repetition. In 1999, the term was used by Dave Thomas, co-author of the book The Pragmatic Programmer, in a bow to the Japanese concept of kata in the martial arts. The concept was implemented by Laurent Bossavit and Emmanuel Gaillot who talked about it at XP2005 in Sheffield (UK). Following this conference, Robert C. Martin described the concept and initial usages in his article "The Programming Dojo".
As a group, software developers don’t practice enough. Most of our learning takes place on the job, which means that most of our mistakes get made there as well. Other creative professions practice: artists carry a sketchpad, musicians play technical pieces, poets constantly rewrite works. In karate, where the aim is to learn to spar or fight, most of a student’s time is spent learning and refining basic moves. The more formal of these exercises are called kata.
To help developers get the same benefits from practicing, we’re putting together a series of code kata: simple, artificial exercises which let us experiment and learn without the pressure of a production environment. Our suggestions for doing the kata are:
Find a place and time where you won’t be interrupted Focus on the essential elements of the kata Remember to look for feedback for every major decision If it helps, keep a journal of your progress Have discussion groups with other developers, but try to have completed the kata first There are no right or wrong answers in these kata: the benefit comes from the process, not from the result.