The best way to understand programming concepts is to use them.
I would argue that one cannot say they understand a programming concept if they can't use it.
Indeed, if someone claims to understand recursion in theory but can't apply it in practice, then they did not understand it at all.
Ibrahim Tanyalcin
{intrst:"Scnc&Art",msc:"admin@MutaFrame",strive:"Experiment&Learn",loves:"ES5",hates:"bandwagon",lang:"Javascript",twttr:"@ibrhmTanyalcin"}
Mess with those concepts. The more mistakes you make, the more eureka and aha moments you will have and thus understand them better.