TITLE: Two Weeks Along the Road to OOP
AUTHOR: Eugene Wallingford
DATE: August 31, 2012 3:22 PM
DESC:
-----
BODY:
The month has flown by, preparing for and now teaching our
"intermediate computing" course. Add to that a strange
and unusual set of administrative issues, and I've found
no time to blog. I did, however manage to post what has
become
my most-retweeted tweet
ever:
I wish I had enough money to run Oracle instead of Postgres.
I'd still run Postgres, but I'd have a lot of cash.
That's an adaptation of tweet originated by
@petdance
and retweeted my way by
@logosity.
I polished it up, sent it off, and -- it took off for the
sky. It's been fun watching its ebb and flow, as it
reaches new sub-networks of people. From this experience
I must learn at least one lesson: a lot of people are tired
of sending money to Oracle.
The first two weeks of my course have led the students a
few small steps toward object-oriented programming. I am
letting the course evolve, with a few guiding ideas but no
hard-and-fast plan. I'll write about the course's structure
after I have a better view of it. For now, I can summarize
the first four class sessions:
- Run a simple "memo pad" app, trying to identify behavior
(functions) and state (persistent data). Discuss how
different groupings of the functions and data might
help us to localize change.
- Look at the code for the app. Discuss the organization
of the functions and data. See a couple of basic design
patterns, in particular the separation of model and view.
- Study the code in greater detail, with a focus on the
high-level structure of an OO program in Java.
- Study the code in greater detail, with a focus on the
lower-level structure of classes and methods in Java.
The reason we can spend so much time talking about a simple
program is that students come to the course without (necessarily)
knowing any Java. Most come with knowledge of Python or Ada,
and their experiences with such different languages creates
an interesting space in which to encounter Java. Our goal
this semester is for students to learn their second language
as much as possible, rather than having me "teach" it to them.
I'm trying to expose them to a little more of the language
each day, as we learn about design in parallel. This approach
works reasonably well with Scheme and functional programming
in a programming languages course. I'll have to see how well
it works for Java and OOP, and adjust accordingly.
Next week we will begin to create things: classes, then small
systems of classes. Homework 1 has them implementing a simple
array-based class to an interface. It will be our first
experience with polymorphic objects, though I plan to save
that jargon for later in the course.
Finally, this is the new world of education: my students are
sending me links to on-line sites and videos that have helped
them learn programming. They want me to check them and and
share with the other students. Today I received a link to
The New Boston,
which has among its 2500+ videos eighty-seven beginning Java
and fifty-nine intermediate Java titles. Perhaps we'll come
to a time when I can out-source all instruction on specific
languages and focus class time on higher-level issues of
design and programming...
-----