The best way to learn a programming language: use it

One of the challenges when starting out with a new language is getting up to speed. Getting to a point where you have enough knowledge to start solving your own problems.

That is why all the courses listed here are full working examples and demonstrate how to pull together a number of techniques into a complete application solution.