Had some time to kill, so I browsed back through some of my more recent LJ posts, and was a little taken aback by how much complaining and whining I've done. Yeah, that's a lot of where I am (and have been) right now, but there's a place for balance.
And so, I come to praise Introduction to the Design and Analysis of Algorithms, by Anany Levitin.
I've been teaching CS-203 ("Computing & Algorithms III") this term at Kettering. It's an odd course ... it's a grab-bag of advanced algorithms that students need to see at one point or another. While I'm good at the algorithm stuff, I've never been good at figuring out how to organize the topics into a coherent whole.
For once, I found a textbook that I like. Levitin organizes the course not around data structures or problem areas, but around design techniques (e.g. divide-and-conquer, brute-force, decrease-and-conquer, space-time tradeoffs). So, you end up looking at problems from very different domains together, because they use the same underlying technique.
I don't know about anyone else ... but for me, this insight is fantastic. It actually makes lecturing on the topics a pleasure.
(And, Levitin supplies the instructors with PowerPoint slides that are actually useful, rather than being mere transcriptions of the book into teeny-tiny type. They still need editing, but a whole lot less than normal.)
And it also helps that Levitin is a seriously above-average writer. I'd actually recommend that students go out and buy this book, even if it wasn't required for this class. (And that's only the third time I've ever said that about a textbook.)
So, upon reflection ... there is actually something good going on this term.