An Object-Oriented Introduction To Computer Science Using Eiffel by Richard Wiener