Sorry I haven't been able to make a proper response, busy house-hunting at the moment
For programming I would advise to pick any reasonably modern language, I would personally advise C# as being a good first language but Java and Python are also good choices.
Then I would simply google tutorial after tutorial, if you don't understand something in one tutorial, google it, if two tutorials tell you to do something in a different way, google a vs b and see what people say. Then once you have the basics, attempt things on your own, if you get stuck simply google it in a variety of different wordings until you have the answer you are after.
You can make excellent progress in programming without paying a single penny.