The best luck I've had with learning new programming languages (which I've done several times) is to use http://projecteuler.net/. It's a series of math problems which increase in difficulty. It can be useful regardless of what programming language you are trying to learn.