I'm looking for a text for a course in object oriented programming. Most of the students will have done some programming courses in the past, but the background of the students is varied so the purpose of this course is to ensure that they are all well grounded in basic programming and object-oriented ideas such as abstraction, design by contract, polymorphic code, generic code, etc. The language of the course is probably Java, but could also be Python.
I had suggested Barbara Liskov's textbook, Program Development in Java: Abstraction, Specification, and Object-Oriented Design. But unfortunately it is out of print. (Although still available as an e-book.)
This is graduate level for a professional masters in computer engineering. However the educational background of the students is quite varied and some are, quite frankly, not competent at programming when they arrive. Hence this fairly low-level course.