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)
Sorry for my late reply.
It is a university in the Netherlands.
I tried to double-check, but i can't find the exact rules anymore.
I do remember it specifically, because i wanted to put code written during my master's thesis online but had to ask permission from the university.
I guess you can compare it to doing graduation work within a company, the company owns the work the student does. The same i guess holds for the university.
This is probably not the case. At my University they own the rights to all code that is written as part of the educational program, not the students.