And let me tell you: Nothing has improved my programming as much as learning more math has.
Well, let me amend that...
1) Learning more math, in and of itself, has really helped me learn to abstract-ize a concept and think about things in a bigger, more general way. The implications to software design are obvious, I hope. Good sign/bad sign: I've become a huge C++ junkie. I think it's directly related, since in C++ you can make everything as abstract as you like...
2) Actually implementing heavily mathmatical software has pushed every limit I had, both programming and math-wise. I used to think of a 'neat' application or utility and realize that I had no way to even conceptualize the most basic internals. Now I can get a good grasp on the problems involved, figure out the limits of my knowledge (and usually have a good idea about where to begin research), and start designing and coding.
Where I'm at right now:
I took calculus in high school and passed the AP test, which means I wsn't required to take a single math class in college. I didn't. :) My major was some wishy-washy design-your-own thing somewhere between journalism, fine arts, and liberal arts.
However, my junior year, I signed up for "Advanced Topics in Computer Science: Computer Graphics." Damn, was that course ever hard. Especially since it had a few years of math and computer science prerequisites that I conviently ignored. (Design-your-own-major programs are fun!)
That got me started on a long-term math kick. I've been learning on my own since, but still kind of a math beginner. However, I'm a bit further down the road than you... here's what I'd suggest:
Do computer graphics. Write computer graphics programs. Do it hand in hand with your math learning...
Well, not necessarily computer graphics, but always aim to implement your neat new math skills into code. I've found that if I don't, then I may understand how to handle situation X on paper by following along with the example in the book, but that's as deep as my understanding goes. Writing code forces me to actually grok the underlying concepts and apply them in ways the examples don't touch. Graphics are good specifically for: Geometry and linear algebra. Also good for algorithms, since a lot of the neatest/hardest comp. sci algorithms apply to graphics. Finally, you get to see a nice pretty picture of your progress up on the screen. It's damned gratifying, even if it is a single, boring, line.
One step at a time, one foot in front of another, and the occasional giant leap. Incrementalism is great, and helps keep you from being overwhelmed, but I've found that, every now and then, it's good to jump into something way, way over my head. I probably won't 'get it', but after leaving the super-advanced-incomprehensible-stuff, I see everything else in a slightly different light that makes it easier to understand and apply.
Hoo boy, I'm babbling. Watching this article with interest to see what sorts of resources turn up, since I'm still very much in the learning phase myself... sorry I can't recommend any good books (I've used the internet, mostly, plus ugly, dense texts borrowed from my physics PhD-student housemate)...
A few sites I've found useful:
Mathworld. Covers a lot of stuff here, but fairly dense too.
Wikipedia has been very useful, believe it or not.
Flipcode. Mostly for game developers, but it's got a decent chunk of very practical computer graphics stuff in it. There's tons and tons of graphics-related things on the web.
I had a bunch more, but they're lost somewhere on my old computer ... there's lots o' good stuff out there, though.
Okay, done rambling.
p.s. About functional languages: They're probably talking about lambda calculus. I've got no idea what it is, but I know it underpins many functional-language ideas. I suggest you shitcan the theory books unless you want to understand the language well enough to, say, write a compiler/optimizer for it. "Scheme/Haskell/LISP/ML/etc for Dummies", combined with actually doing a decent bit of programming, is more than enough to learn to program well in a functional language. After that, maybe go back to theory books.
p.p.s. Okay, really done rambling. Friday afternoon + strong coffee + strong desire to procrastinate ... :)