Essential concepts of programming language design and implementation are explained and illustrated in the context of the object-oriented programming language (OOPL) paradigm. Written with the upper-level undergraduate student in mind, the text begins with an introductory chapter that summarizes the essential features of an OOPL, then widens the discussion to categorize the other major paradigms, introduce the important issues, and define the essential terms. After a brief second chapter on event-driven programming (EDP), subsequent chapters are built around case studies in each of the languages Smalltalk, C++, Java, C No., and Python. Included in each case study is a discussion of the accompanying libraries, including the essential container classes. For each language, one important event-driven library is singled out and studied. Sufficient information is given so that students can complete an event-driven project in any of the given languages.After completing the course the student should have a solid set of skills in each language the instructor chooses to cover, a comprehensive overview of how these languages relate to each other, and an appreciation of the major issues in OOPL design. This title provides detailed case studies of Smalltalk, Java, C++, C No., and Python and features a side-by-side development of the Java and C++ languages - highlighting their similarities and differences. It sets the discussion in a historical framework, tracing the roots of the OOPLs back to Simula 67. It includes chapter summary, review questions, chapter exercises, an appendix with event-driven projects, and instructor resources.