Elements of Reusable Object-Oriented Software.
Few handwritten notes