The Polymorphism Companion

This book is an adjunct to Polymorphism: As It Is Played.


ISBN: 978-1-940113-06-7

Available at

This Companion volume to Polymorphism: As It Is Played delves deeper into some of the ideas presented there. It also presents several additional case studies that are interesting in their own right, but might be employed in the Polymorphism Challenge. The Doctor presents a number of Big Ideas about software development.

These Big Ideas of software development will aid you, as a student or instructor, to improve your skill dramatically. Explore parsing, simulation, simple games and more.

While polymorphic coding is still a main focus, the ideas here will take you beyond.


1 + 1 < 2

Coding Ideas and Style


Stories, Additional Stories, Alternate Stories

Test, Test, Testing

In Praise of √Čtudes

Yet Another Calculator

Yet Another Project

The Polymorphism Challenge

Your Turn

Recursive Descent
The Animal Game

Building Software: Work and Fun

More Stories

Big Ideas

More for Instructors




There are some things I didn't include in Polymorphism: As It Is Played to keep the book short and simple. It provides only the main line path through the material. Here I will provide additional information, hints, exercises, ideas, tricks, and rants. I also admit that I conceived and built the calculator project myself. I can't blame my students for any flaws. I'll reveal a few flaws here, in fact. The project was used several times over the years. The resulting code was a bit different each time. This is not a correction to the first book, as the flaws are instructive to the reader, and aid learning when discovered and followed up. There are also some important ideas implicit in the code and the process explained in Polymorphism that some might miss. They can be vital lessons for the budding programmer.

I often told my students that it wasn't my job to teach them what I knew, since much of that was already obsolete, even garbage. Instead it was to show them how I thought. How I thought about problems, solutions, coding, being a success, etc. I don't claim my thought process is perfect, but it is experienced, at least.

It is also my job to set the conditions for learning, and this usually means giving them interesting and difficult problems to solve. Here we will try to provide some entertaining exercises, though a few are just hidden in questions, as was done in Polymorphism.

Here you will find additional thoughts about polymorphism as well as several case-study projects that might be explored. There are more stories for the calculator. There are other calculators. There are other projects presented as stories for your enjoyment. There is code that might serve as a basis for transformation to a more polymorphic form, or just be studied, as it is interesting in itself.

However, this is a personal view. I'll write about my personal coding style and why I like it. I'll talk about why I sometimes vary from the standard forms. I'll admit to inconsistency. Ah well. Not perfect. Good, but not perfect.

Last Updated: July 2, 2023