The Objects Trilogy Project

This project is based on the premise that just as natural languages anchor human thought, programming languages anchor our understanding of the world of computing. So if you want to understand the potential and the limitations of the smart systems of the future, you must first come to terms with the basic vocabulary of such systems. Although there are many levels of abstraction in this vocabulary, at its base it is rooted in the nouns, the verbs, and the other qualifiers of the programming languages.

So back around 1997 I set out to create a trilogy on programming with objects. The first two volumes, Programming with Objects and Scripting with Objects, have been out for some time and are currently being used in several educational programs around the world. By comparing the programming idioms in closely related languages, and, at the same time, by teaching how to program in each language, these two books present a multi-dimensional perspective on object-oriented programming and scripting. I firmly believe that, for those readers who are of a serious bent of mind, a comparative presentation of similar yet different programming languages is far more conducive to developing deep insights into the programming syntax than the more traditional one-language-at-a-time style of learning. Additionally, we now live in a world of multi-language computing. Even the simplest of applications may require programming to be carried out in two or more languages. So we might as well get used to learning multiple languages simultaneously.

The writing for the third book of the trilogy, Designing with Objects, was finished in December 2013 and the book was released by Wiley on January 20, 2015. Different from any you'd have seen in software engineering, this book is an offbeat attempt at explaining the design patterns with the help of short-story snippets drawn from Harry Potter. The code that is used to explain the patterns emulates the interactions between the various characters in the stories. I believe that this is a more interesting approach to explaining the patterns, particularly so the more complex patterns, than the sterile approaches out there that give meaningless names to classes and their roles, or the approaches in which the names and the roles assigned to classes are based on some engineering application that the reader may have zero interest in.

If you have any questions about the trilogy, please send them to me at with "objects trilogy project" in the subject line to get past my otherwise tight spam filter.

                                                                         Avi Kak  

  1. Programming with Objects: A Comparative Presentation of Object Oriented Programming with C++ and Java, 1115 pages, published by John-Wiley in March 2003.


    Click here for a web site devoted to the book (it includes the errata and the code examples in the book)
  2. Scripting with Objects: A Comparative Presentation of Object Oriented Scripting with Perl and Python, 1280 pages, published by John-Wiley in May/June 2008.


    Click here for a web site devoted to the book (it includes the errata and the code examples in the book)
  3. Designing with Objects: Object-Oriented Design Patterns Explained with Stories from Harry Potter, 512 pages, published by John-Wiley, January 20, 2015.


    Click here for the web site devoted to the book (including the errata and the code examples in the book)

An essay on the state of how programming is currently taught in many universities
(written in July 2008, with minor changes in February 2015)

Valid HTML 4.01 Transitional Valid CSS!