The attached article by Daniel Ingalls, one of the implementors of the SmallTalk language, lays out 17 "design principles" that influenced the development of SmallTalk. These principles are labeled Personal Mastery, Good Design, Purpose of Language, Scope, Objects, Storage Management, Messages, Uniform Metaphor, Modularity, Classification, Polymorphism, Factoring, Leverage, Virtual Machine, Reactive Principle, Operating System and Natural Selection. The article provides a brief discussion around each principle.
Choose 6 of the 17 principles and write a 1/2-page summary and critique of each of your chosen principles. You should include an explanation of what the principle means and how it manifests itself in the SmallTalk language. You should also provide a critique that advocates or criticizes (or both) the principle -- why is the principle good or bad? Are there positive or negative consequences that naturally lead from this principle? Is this a principle that we have seen in the design of other programming languages? Is it practical or reasonable to embrace this principle in its most pure form?
On Tuesday, April 20, we will begin the class with an open discussion of these principles, focusing on those that several of you have chosen for your essays. You should have an almost-complete draft of your own analysis of these principles so that you can actively participate in the class discussion (you do not need to hand in your preliminary draft). After our discussion on Tuesday, you can further modify your answers and hand in a final draft by Friday, April 23.
Remember that the next exam is on Thursday, April 22 -- it will help you to have as much of this assignment completed as possible by Tuesday so that you have more time to study for the exam afterwards. The exam will cover Ada, LISP and SmallTalk, and we will spend some time on Tuesday reviewing the material for the exam, following our discussion of the SmallTalk design principles.