CS497 REJ (Call number: 01757)
Wednesday, Friday 3- 4:50 in 1310 DCL
I have taught a course on object-oriented programming and design using
Smalltalk every year since 1985. The purpose of the
course is to go beyond textbook knowledge of object-oriented programming
and to become a competent designer. To that
end, we study design methods such as Responsibility Driven Design,
design patterns such as Composite and Strategy,
reusable design techniques such as abstract classes and frameworks,
and particular designs such as Model/View/Controller
and HotDraw. The course will make you a competent Smalltalk programmer,
but the main purpose of the course is to become
an object-oriented designer, and the skills that you will learn will
be as applicable to C++ as to Smalltalk.
As usual, the center of the course is a large group project. I will
give you a list of possible projects, but it is possible to
persuade me to accept a project that you propose. Although many people
are reluctant to choose group projects, this format
has worked well in the past. As Christopher Alexander says in A Pattern
Language:
The fundamental learning situation is one in which
a person learns by helping someone who really knows what he
is doing.
An experiment by Alexander and Goldberg has shown
that a class in which one person teaches a small group of
others is most likely to be successful in those
cases where the "students" are actually helping the "teacher" to do
something or solve some problem which he is working
on anyway -- not when a subject of abstract or general
interest is being taught.
This is the heart of graduate education. The projects are important, and you should expect to work hard at them.
Many people have taken this course; I encourage you to talk with other
grad students about it to get an idea of what the course
is like.