Books on logic theory, discrete maths etc?

Came across a book the other day called *Elements of Programming*; from it's own description it's supposed to help you as a programmer by explaining the fundamental principles behind it. I've also heard from a lot of people that a good programmer really needs to understand the mathematical stuff, because it improves the way you think about code. But the book is so far beyond my skill set, even the preface warns that the reader needs a firm grip if things like computer architecture, discrete mathematics, fundamental algorithms, lambda calculus, semigroups, data structures, calculus and logic and set theory.

I'm originally from England, and I only studied Maths to a modern GCSE level about two years ago. Frankly, none of these terms have any meaning for me whatsoever. Even when I look them up briefly, I can't find any relation to the stuff I learned at school. But I'm slowly learning to program on my own (well, except of course for textbooks and help from fantastic sites like this), so I'm sure that with enough effort I can get a feel for these kinds of things, too. I'm just not entirely sure where the heck I should start.

It probably seems like a low ambition ("I wanna know enough to read this book!"), but I'd really appreciate it if anybody here could recommend any good books or online tutorials related to, well, *any* of this stuff. If it's about the mathematical side of programming, I'm interested (and I'd be grateful as hell, to boot).