2. CS21A today and Monday : 15:56

Looks like my thinking out loud does have its uses, so I'll resume
posting my reflections both on the CS mailing list and on my wiki. =)
At the very least, it may give someone something to laugh about.

Summary

What went well

- Preparing Flash modules for self-paced learning.

- The Text Twist exercise.

- Being observed and swapping ideas. Feedback is useful.

What needs work

- I have unbrilliant days. Lack of preparation, unconducive class

mood, whatever - I need to learn how to deal with unbrilliant class
days effectively.

- Fewer answers, more questions. Should help students develop

independent learning things. Am trying to focus on preparing Flash
stuff for things that aren't in the book or are hard to explain, but
I should help people get used to learning from experimentation, API docs,
and cool Java sites...

On unbrilliant days

Last Monday, I had an unbrilliant day. It was one of those blank-faces
day when all the examples one had thought about just fall flat. The
words just felt thick in my mouth. I saw blank, sleepy,
not-quite-getting it faces everywhere. Eep.

After the class ended, I fled to my cubicle and hid under my desk.
(Hehe.) Having decided this was not a particularly productive way to
deal with the stress, I went to Starbucks for some emergency hot
chocolate. (Note: It helps to know what helps you cheer up.)

I met one of my friends there, and he reassured me that although
people occasionally have unbrilliant days, I could try to make up for
it on Wednesday. He let me sulk a little more over my hot chocolate,
though. That was actually kinda fun.

Recharged, I went back to the department and started (somewhat
guiltily) preparing for the next class. We had gone over growing
arrays in class, but not everyone understood how and why it worked. I
spent the afternoon learning Macromedia Flash and making a
presentation that demonstrated the steps. (It was my very first real
Flash movie! Achievement!)

On different ways to learn

A few of my students dropped by that afternoon for some consultation.
One needed help with bubble sorting (an algorithm I have come to terms
with - it may suck, but it's much easier to teach). I lent her a few
coins and asked her to sort them by date. Without further input from
me, she figured out that she was missing the outer loop. I like asking
students to walk through an algorithm using whatever physical objects
are handy. I need to have things that are more sortable, though, and I
need to keep ideas for other topics. (Creative ways to explain ...)

Some students needed help with growing the array and with sorting
Strings. We dealt with sorting strings first - clarified the behavior
of compareTo. I pointed out to the students that they needed to
compare against 0, not against 1, and they figured everything out from
there. They were able to sort ascending and descending, too. Yay! It
was a quick bugfix, but maybe I should've helped them develop the
habit of checking against API documentation instead of relying on
someone else to point out the error. Next time, I'll provide fewer
answers (or maybe none at all!).

I had just finished my Flash presentation on growing arrays, so I
uploaded it to the course mailing list and pointed them to it. They
went through the tutorial more passively than I'd planned (note to
self: find ways to make modules more engaging!), but they absorbed the
main points. I think it helped that they controlled the pace. They
were helping each other learn. I was around to observe them and
suggest exercises. I think it worked well even though the Flash
presentation was basic. Although they ended up rapidly clicking
through the slides instead of doing the suggested exercises (which was
not a bad thing given the environment, I suppose - they can do that
when they're home), the graphics helped them understand what was
happening behind the scene. I felt more comfortable with the quantity
of text on my "slides" because students could go through the Flash
show at their own pace and they didn't have to divide their attention
between me and the slides.

On consultation

I'm glad that my students drop by for consultation. Well, hmm.
Actually, that's kind of strange. If I were a Really Good Teacher,
they might not have to drop by for consultation because they'd
understand class lessons right away. Then again, people learn at
different rates, and I don't think it's realistic to expect people who
have never programmed before to be able to grasp all the concepts
right away. I feel it's a very good thing that students feel
comfortable enough to drop by and ask questions, and I actually look
forward to these consultations. (That said, there are a few I haven't
seen in the department yet! )

Flash module preparation

I spent Tuesday preparing more Flash modules for my CS21A class. I'm
still treating it like a Microsoft Powerpoint substitute, and I'd like
to learn how to use it more effectively. (For example, that
drag-and-drop thing looks _really_ tempting for arrays.)

I prepared modules on file reading, args[], and exceptions. They're on
the course site at http://sacha.sachachua.com/cs21a/ if anyone wants to
look. I've probably missed most of the guidelines for computer aided
instruction (), but the source is
available so that anyone who wants to modify it can (and is indeed
strongly encouraged to do so).

Today's class: fun!

I was very pleased with class today. I had several points I wanted to make:

- The human way of solving things may be different from the computer

way of solving things. We need to learn how to take advantage of the
computer's strengths - lots of memory, fast processing - while
dealing with its weaknesses (not very creative).

- Files are useful. =) Reading data from a file saves you from having

to type it in again and again and again and again.

What made this fun was the choice of the example: Text Twist. A
familiar game, and something I personally like. Their task was to
print a list of all the words with 3 or more letters that could be
found in the jumbled letters given. They also needed to sort this list
by length to match the Text Twist game and to make it easier to find
the longest word.

Human way

Pick random letters and see if that's a word. I know I tend to hit
Twist a lot in order to get that all-important longest word... ;)

But how many possible arrangements of letters are there in a 7-letter
game with no repeated letters?

(All together now, or our discrete math teachers will be very unhappy)

7! possible 7-letter words!

Only 5040 possible permutations, but still, you'll have to either
- teach students how to do permutations
- swap letters randomly and pray ;)

Computer way

Go through every word in the dictionary. Check if it's contained in
the puzzle string. Print out the ones that are.

Resources

I provided WordTester.java, a utility class with a method to check if
one word is contained within another. Because it uses code they can
understand, I provided the source code as well.

This way, we could focus on files and vectors instead of the algorithm
for checking if one word is contained within another. NOTE: That might
be a good lead-up lab exercise for arrays as there are several ways to
solve the problem and the problem requires some thought.

Reflections

The students were glad to work on a familiar problem, and they seemed
more comfortable because they had step-by-step instructions they could
work through at their own pace. They worked on a program that looked
somewhat useful (heck, I'd have written that just for myself). I hid
the thorny part of the code in WordTester, so the resulting dictionary
search program was very clean (19 lines in the non-length-sorted
version).

Flash is a little limiting because of screen size and amount of code I
can fit in. I think I should prepare supporting webpages and then use
the Flash slides to give an overview and to highlight important parts
of the code.

I'm glad I kept checking on their progress, though, as some were
having problems with JCreator output path settings or typos. A few
missed the "throws IOException" part. I need to make that a little
bolder in the text.

NOTE: Students might be able to benefit from an asynchronous way of
asking for help. Some students are too shy to call my attention when
I'm halfway across the room. Teaching assistants can be very helpful.
Actually, this could be a good thing - they're _trying_ to figure it
out on their own. Maybe one way to deal with this is to have them
signify that they're having a problem as soon as they encounter it - a
red flag on their desk? ;) - but have them continue working on it
until a teacher or TA can get to them. When the teacher/TA gets to
them, the student can then explain what the problem is and what the
student has done to try to solve it so far.

I am pleased to note that the shy students have been able to keep up
with the lesson. I've been getting rather excited out-of-class e-mail
about how far they've gotten. =) I suspect that they like the
combination of clear goal + control over pacing + extra information
when they want + monitoring.

On observation and feedback

A friend of mine has made time to regularly observe my classes and I
appreciate that greatly. He gives me feedback afterward, too. =) I
find that knowing I'll be observed puts a little more pressure on me,
but it's pressure I welcome. I'm excited by the opportunity to try out
something new and reassured by the idea that even if I mess up, at
least someone can help me analyze my mistakes.

I should take a video camera to class one of these days.

Posting my reflections on the mailing list also forces me to process
and analyze more. What went well? What do I need to work on?

I find that I also tend to 'observe' myself more. I use "um" and
generic language more often than I should, and I will strive to be
more precise. That said, today's class delivery went well. They picked
up on my enthusiasm - or I picked up on theirs - and everyone was working.

Teaching assistants could probably also fulfill this role if we
empower them a little more. I remember distinctly thinking that my
role as a teaching assistant was mainly to check papers. I delivered
the occasional lecture when the instructor was unavoidably absent, but
that was about it. I wonder if we might not be able to involve our
teaching assistants in the process of instructional development,
asking them for exercise ideas and feedback on how we teach. They
might not know a lot about teaching, but they may be able to tell us
something from the student's point of view, and they may have creative
ideas that hadn't occurred to us.

Besides, they're probably more in touch with pop culture than we are.
Or, well, at least, than I am. I am horrendously out of touch.
I haven't consciously made an effort to keep track of the latest fads.
I don't even watch TV. I might want to keep a closer eye on the
popular games - Text Twist was fun, and there are a number of things I
can draw on for exercise ideas.

5. chora : 18:30

Chora is a CVS repository viewer that I learned about from #php. I
_thought_ I'd blogged about it, but I grepped and it wasn't there.
Luckily, I ls *.tar.gz'd my home directory and it was the only tar gz
there! Yay!

7. Khaire - literary night for tomorrow : 22:01

"Khaire: Magsaya!:A Literary Night," reading by accomplished poets,
6-8:30 p.m., Quad 1. Be alive and rejoice at the medley of rhyme and
play,
rhythm and prose, all on one night that celebrates the words born from
the tips of our tongues and pens. Heart and souls are poured into
generous servings of articulacy, but always never forgetting their aim to
delight. This is Lit Night where utilitarian verbosity takes a backseat
to tempered eloquence. Listen to the open mic poetry readings. Feel the
power of drama. Savor the musical prowess of home-grown bands. Read the
magnum opus of the greates Atenean writers. Share in the richness of the
Ateneo's literary tradition. Performers and guests include Tanghalang
Ateneo, Spongecola, element #5, Marj Evasco, Cirilo Bautista, Pete
Lacaba, Becky Anonuevo, Neil Garcia, Ophelia Dimalanta and many more.

8. CS21a ideas for vectors : 22:17

I want students to be able to keep track of the elements of vectors.
I also want them to become familiar with the common operations:

- size()
- add(...)
- get(...)

I want them to be able to predict what happens to a vector during
a sequence of operations. This is important for tests and for tracing
through code. I think I can make another Flash animation module with
hints that show the vector's contents.

Then I want them to be able to complete the Text Twist exercise.
I'll need to teach them how to define comparators and to use Collections.sort.

Plan for Friday:

brief status check on reading from files

Exercises

Submit to me an algorithm in English on paper _before_ you code.

- reading through the dictionary and getting a Vector of all the words that are contained in the given letters
- reading through the dictionary and getting a Vector of all the words that are contained in the given letters, sorting this by length
- reading through the dictionary and picking a random 7-letter word, then scrambling the letters in that word
- advanced: creating a simple graphical user interface: label, text field, "Enter" button, "New Game" button, "Twist" button.
- advanced: make a Text Twist clone. ;)

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.09.24

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.