It's almost depend on area of field you wants to work with.
For graphic programming you should be aware of coordinate geometry .
Console system software requires theory of set and relationship.
Basic skills requires are logic and basic algorithm.
Hardware level designing require knowledge of logic gates.
Morever the most important skill require is only logic and algorithm with creative practice.