Usually I found books to be the best source of learning programming. Then you just have to have a lot of determination to figure it out. You will have to reverse engineer every problem in the book so that you truly understand how it works and what each function is doing.