Is mathematics necessary for programming?
I'll try to carefully phrase this because these types of questions always turn into academic debates on computer science degrees, or such, and that's not what I'm looking for.
I know Perl, I know Unix systems, I know shell. Advanced-levels. Some C. But I never got a very deep math background; math wasn't emphasized strongly in high school, and I never did CS. Basic understanding of CPU architecture.
Let's say that I wanted to get into systems programming; say, obtain kernel-level understanding, and be able to modify and write userspace programs that do things like file and network IO, as a starting example.
How much, as a systems programmer, would you say that advanced levels of math are important? And how hot does knowledge of things like calculus need to be? Does one need to be intuitive with math to be successful?
Follow-up question: how much and what types of math are necessary for one to go one step further and learn assembly?