The files mentioned can be found at http://sacha.free.net.ph/cs21a/
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.
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
- 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.
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.free.net.ph/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:
What made this fun was the choice of the example: Text Twist. <grin> 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.
- 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.
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 ;)
Go through every word in the dictionary. Check if it's contained in the puzzle string. Print out the ones that are.
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.
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. <laugh> 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. <grin> 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.