Fundamentals of computing II abstraction, data structures, and large software systems - Tucker (McGraw-Hill, 1993)