An Introduction to Datastructures and Algorithms and techniques for analysing the asymptotic resource usage (esp. running time) of an algorithm.