Not to hijack the thread too much, but are there good resources on learning about algorithm correctness, complexity, recurrence relations, automata and proving techniques? At the moment I'm not doing so well in the proof by induction department, and the course material at UToronto is quite lousy.