Wanting to reciprocate in some way to the open source projects you
benefit from is natural, but the reality of the matter is far from
obvious. Unless you are truly interested and fascinated by the code, you
won't keep at it. The time and effort invested by the other project
developers in your education will eventually be wasted when you lose
interest. It might not be a complete waste since you might actually make
some useful contributions, but all healthy projects are looking for long
term contributors.
I hate to say it, but if you knew of a project with code that fascinates
you, then you would not be asking this question, instead, you'd be
working on it right now because it's fun.
With that said, the easiest way to get started in any project is just
start fixing bugs and submitting your patches. Everyone loves bug fixes,
even if you do them wrong the first time and need to redo them. In other
words, it's your effort and dedication that shows through and is
important. You don't need to be the world's greatest programmer or the
resident expert of a codebase, but you do need to keep trying, and you
need to be able to listen to feedback and learn from it (even if harsh).
Lastly, there's always more things to do to help a project than people
to do them. Though a project IS code, you can always find other ways
to contribute if you use your imagination and put in some effort.