What is this course about?

Goals. The goal of the course is to learn to think in objects,
to study the concepts of object-oriented programming,
to learn how to design flexible, reusable, maintainable object-oriented
systems through programming in Smalltalk and Java.
No prior knowledge of the Smalltalk programming language is assumed,
but basic knowledge in Java or C++ is expected.

Course description.
Comparative approach to object-oriented programming and design. Discusses
the concepts of object, class, meta-class, message, method, inheritance,
and genericity. Reviews forms of polymorphism in object-oriented
languages. Contrasts the use of inheritance and composition as dual
techniques for software reuse, forwarding versus delegation, and
sub-classing versus sub-typing. Fosters a deeper understanding of
the principles of object-oriented programming and design, including
software components and object-oriented software design patterns.
Basic concepts in object-oriented design are illustrated with case
studies in application frameworks and by writing programs in one or more
object-oriented languages.

Why Java?

Java is used to illustrate design
patterns in programs you may have written or used in the past, and to
practice advanced programming and design in a language you already know.

Why Smalltalk?

Smalltalk is the language of choice for teaching object-oriented programming
and design
in the best Universities around the world.
Ralph Johnson from the University of Illinois on Smalltalk:
"Smalltalk is ideal for business programming, yet it is also ideal for a researcher who wants to build something
quickly to test some ideas. It is great for accessing databases, for building fancy GUIs, and for distributed programming. In fact, there are
very few things it is not great for! I have no explanation for the fact that most programmers do not know it, other than the obvious fact that
there are lots of things wrong with the world."
Andrew Black
from Oregon Graduate Institute:
"Whereas I used to feel that that it was important for a programming
language to "support" the programmer, I have come to believe instead that
the hallmark of a good language is that it gets out of the programmers
way! In this respect, Smalltalk, like Algol 60, is a significant
improvement over most of its successors."
The major ideas in Smalltalk are generally credited
to Alan Kay:
"I invented the term Object-Oriented, and I can tell you I did
not have C++ in mind."

Why Squeak?

Squeak is an open source, highly-portable Smalltalk-80 implementation
whose virtual machine is written entirely in Smalltalk, making it easy to
debug, analyze, and change. Squeak is free, and it is worth every penny.
Angel Asencio, a student who took the course in 2001 and had 4 years of
experience with Smalltalk, said: "I am very exited about [Squeak], up
to now it has outperformed the last version I used of Visual Works.".