In part, it will depend on what kind of programing you will be doing. That is, if you will be programming solutions for differential equations you certainly will need to understand the particular differential equations you will be using.
The old axiom "computer programs do what you tell them to do, not what you thought you told them to do" is something you always need to keep in mind. So you need to convert 'word problems' into computer steps in a logical manner, how do we get there from here type of thing. The mathematical application for programming in general is then, IMO, logic. Again, depending on the application, that is not just the classical logic but also includes, for example, the idea of fuzzy logic.
You might start at
https://archive.org/search.php?query=logic AND computer AND programming AND mediatype:texts
and, in particular, look at 'Fundamentals Of Computer Programming with CSharp' there.
You might also want to glance through
http://en.wikipedia.org/wiki/Logic
One other thing, I've found that it can sometimes help if you are at least familiar with 'several' programming languages. What is possible to do in one is generally possible to do in another but in a different way. That difference can sometimes point to quicker solutions.