I started off by quickly scanning through the news items on Slashdot
and then walking around while the early students browsed personal
stuff. Small attempt to get them to start thinking about objects -
basketball example, I think.

While walking around, I noticed one of the students reading the Java
tutorial, and that prompted me to ask all the students to read
through the introduction to object-oriented concepts in the Java
tutorial. Everyone found the tutorial and started reading, and this
gave them some background before the discussion.

- Instead of giving the definitions of "object", "class", "attribute",

"behavior", and "method", I used brainstorming to bring out the
desired definitions from the class. I wrote down "object" and
"class" on the whiteboard, and I asked them for associated words. We
discussed "object" first. The students volunteered four or five
keywords and I wrote them down. I asked the students what each word
meant and how it related to "object", and then related their
explanation to objects in computer science.

After that, we did "class". They gave good keywords such as
"category", "structure", and "kind". A question from one of the
students brought out the difference between a class and an object,
and I related it to the restaurant simulation they did during the
plenary.

- The boardwork from the previous class looked like some kind of class

and interaction diagram, so I ad-libbed that into the discussion.
There was a bit of vagueness first. I had originally planned on
going straight into the single-class implementation because this
echoed the very first spaghetti example, but decided to give them a
choice after seeing Dr. Sarmenta's boardwork. I lost a few minutes
on a rather vague decision process and decided to go ahead with the
bigger-picture diagram when I realized it was more natural. My bad.
Must prepare better, and must think of these cool things to help
them understand!

Anyway, we went through the script again, but the interaction
diagram was not quite standard UML (meep) and it was somewhat fuzzy.
We need to work on making the interaction clearer and maybe more
balanced, as Waiter is twice as long as either Cook or Cashier,
and the back-and-forth between objects isn't very clear.

The diagrams also let me talk about methods and the importance of
agreeing on a design. =)

- After we went through the diagrams (a slightly more formal version

of their scripts), I started on the lab assignment I had prepared
the night before. I knew that the lab assignment needed a fair bit
of explaining, so we briefly discussed the first half. I based the
assignment on both food examples - a Cook that knows how to prepare
spaghetti bolognese based on the spaghetti example we did on the
first day. I explained the class definition by referring to the
spaghetti algorithm and the cook script, and they understood the
method definition when it was explained in non-CS terms.

I explained object creation by drawing on the board. First I drew a
big blob on the board representing the memory of the computer. Then,
pointing at new Cook(), I took a chunk of that memory and drew a
cook (complete with funky hat), giving the cook a script
(Cook.class). After that, I did the usual box and arrow for
variables. That allowed me to explain object usage - calling methods
on objects - in terms of following the arrows and reading the
script. Maybe we should make this a computer-based animation in the
future. =)

- We stopped at a pretty good boundary in the lab assignment. I knew I

needed to discuss the magical part (lots of new concepts), but the
other parts of the lab assignment are pretty straightforward and
don't need any more funky animations. Not bad. =) The plenary
session last Wednesday also ended almost exactly on time, and during
the Wednesday morning session before then, we also ended neatly. It
seems that even though I've been trying to yield as much as I can to
the students, it doesn't cause us to fall way behind... (That said,
Dr. Sarmenta seems a little bit advanced. Hmm.)

- I used the whiteboard eraser instead of the side of my hand.

Improvement!

My plans for the next session

- I think I can give them a quiz on predicting the output of a

program that uses one class and a few methods - tracing! =)

- I will probably spend the whole Monday session discussing whatever

lessons they learned from the lab assignment. If they finish that
quickly, then I can either:

proceed to method parameters and another lab assignment, or

ask them to practice defining classes and upload them to a folder
on the Yahoogroups so that the other students can learn from them
(and maybe we'll even use those as the basis of another system
later on)

Advice needed! (1) will mean faster coverage, but (2) may help
them gain more confidence. Actually, hmm, I have a third option

send a notice to the mailing list asking them to do (2) and have
them submit that as purely optional (but quite helpful/fun)
work, incorporate the uploaded classes into discussion whenever
possible, and do (1) if there's time.

What I can do to improve

- Plan for the big picture as part of the lesson instead of giving

them a rather vague choice that doesn't make sense. It does make a
lot more sense for them to see the big picture through diagrams
first - an activity that flows naturally from the scripts they made
in the plenary - rather than jump into the implementation of a
single class in Java.

- Prepare diagrams beforehand, or find some way of creating clean

class diagrams and interaction diagrams while incorporating student
input. My boardwork can be a bit messy.

- Have pretty animations that show objects more clearly. I illustrated

object interaction (the script) and object creation (new) on the
board, but students can't capture the board work, so they can't
easily replay it at home. This looks like a job for Powerpoint,
Macromedia Flash, or even Java. I'll make that a TODO, then.

- I need to find some way to keep better track of the people who

recite so that I can nudge the people who aren't reciting as much.
My problem (if it is one! ) is that

I haven't memorized everyone's names yet

So many people volunteer to recite

If I ask them for their names and mark their participation down,
it interrupts the flow of discussion.

I'm thinking of picking five or six students per session and making
sure they recite, possibly calling on them to do so. This will help
me make sure that everyone recites at least once in the course.

- I didn't give the quizlet I thought about last time. I'm thinking of

giving a quizlets at the very beginning of each session - it'll be
like attendance. I can give them around 5 minutes to answer one or
two topic-related questions and a general
comments/questions/suggestions part that will give them an easy way
to earn at least one point just by showing up. =) That will also
help me get feedback. If anonymous feedback is important, they can
submit an extra 1/4 sheet of paper.

- I should probably have extra activities that early birds can do

so that I can help them "warm up" for CS21A.

- I should work on applying PP 8, the "lab-discussion-lecture-lab"

pattern described at http://www-lifia.info.unlp.edu.au/ppp/ .
(should look for the exact URL; maybe make it an interwiki link
here) Right now, I don't really have any follow-up labs, and that
means that they're not really applying the knowledge that they've
gained to something new. I will also need to work on the initial
labs a lot more.

- Revise the syllabus? We appear to have found a way to introduce

objects and classes much earlier than we expected. In fact,
maybe in the future we can have them doing class diagrams and
interaction diagrams in week 3 or 4...

- We'd like tips on classroom management, please. =) My class is

actually really nice, but I'd like to learn how to make it even
better - find a way of making participation smoother, maybe?

- I can't wait for the Cersa orientation to be over. Some of the

dormers in my class look completely zonked out. If they're still
like that next week, maybe I'll help them figure out a way to manage
their time...

- Oopsie about the ORP thing.

Tasks

Schedule

Notes

For class today: concept map

PP 43 will help me teach UML diagrams.
Maybe I really should go into CRC next time.

1. www.azillionmonkeys.com : 09:09

Gerald R. Generoso forwarded a link to http://www.azillionmonkeys.com,
which should elicit a chuckle from most computer geeks. Not
sure how useful this is, though, as my name isn't in there. (I guess I've eluded the monkeys for now...)

7. CompSAt : 21:59

Talked to some of the CompSAt people regarding an upcoming computer
camp. Their initial plan was a pretty straightforward Java cram
session. Suggested more fun and exciting things. Also, got to talk a
fair bit about computer science and real life, including searching and
sorting algorithms. (Aha! moment for other people). Talked a bit about
issues like piracy and open source.

Note about solar simulation and double buffering in class a long long
time ago. Fanny knows the story. =)

I'd love to hear about any questions, comments, suggestions or links that you might have. Your comments will not be posted on this website immediately, but will be e-mailed to me first. You can use this form to get in touch with me, or e-mail me at [email protected] .

Page: 2003.06.27

Updated: 2004-11-2106:44:1306:44:13-0500

NOTE: ANTI-SPAM MEASURE NOW IN PLACE. Please answer the following question with the right number in order to send me your comment.