Data Structures and Algorithms with Object-Oriented Design Patterns in Python.
Via Joey deVilla.
Java, C# and C++ versions also available.