I learned, and many other people learned from building content sites for Adsense. That way you learn SEO but don't have to worry about monetization (finding products and writing copy that sells).
I think you have to knock out sites and get backlinks.
You don't "learn" SEM/SEO IMHO, you "do" until you get good at it. That's my 2c.
Another great approach is to join a "make money" membership/coaching site that uses SEO as their main method. Make sure the site has tuition and also a forum. That's a superb way to learn also. Bcos, at the end of the day SEO/SEM is about making money.