Comment Start with understanding the project (Score 1) 283
I'd say the first step is to spend some significant time in reading and understanding the code of the project you want to contribute on. Not only on how it implements a certain algorithm, but also on how the project uses templates, inheritence and coding conventions (as these may change from project to project). Since you already know the basics, this will teach you the application of these techniques in the real world, and how they are used in this project.
If you want some more in-depth background reading which may guide you in understanding the techniques used in the project, i'd suggest "Design Patterns" by Gamma, Helm, Johnson, and Vlissides http://en.wikipedia.org/wiki/Design_pattern_(computer_science)