|A1||X||Renew my ACM subscription (E-Mail from ACM Member Help <[email protected]>)|
|16:30||Ethics discussion at the philosophy department - bring impactcs docs|
1. info links from Emacs : 14:26
;; ;; The following functions to insert info-links into a buffer were originaly ;; posted on gnu.emacs.gnus by Reiner Steib, August 2003. ;; Message-ID: <[email protected]> ;; (defvar jk/info-goto-node-string "info" ; "Info-goto-node" ;; Stefan Monnier suggested to use `info' instead of `Info-goto-node', but ;; this doesn't work for XEmacs. OTOH, Reiner says he submitted a patch for ;; XEmacs, so "info" should be okay. "Command string to insert with `jk/insert-current-info-node'") (defun jk/current-info-node (&optional arg) "Insert reference to current Info node in buffer. If ARG is... - nil: Insert `\(info \"\(file\)node\"\)'. - 4 (\\[universal-argument]): Add a note about `C-x C-e', too. - 16 (2 \\[universal-argument]'s): Insert `<info://file/node>' - the symbol `string': Only return the string, don't insert. In emacs-lisp-mode a custom link is inserted." (interactive "p") (let ((what (cond ((eq major-mode 'emacs-lisp-mode) 'lisp) ((numberp arg) (cond ((= arg 4) 'gnus-url) ((= arg (* 4 4)) 'info-press) (t 'info))) ((eq arg 'string) 'string) (t 'info))) (buffer (buffer-name)) (ret "")) ;; The next lines are borrowed from Karl Pflaesterer's code in ;; <[email protected]>. (set-buffer "*info*") (let* ((node Info-current-node) (nodeurl (jk/replace-in-string node " " "+")) (file Info-current-file) (fileurl (file-name-nondirectory file)) (fileurl (jk/replace-in-string fileurl "\\.gz$" "")) (fileurl (jk/replace-in-string fileurl "\\.info$" ""))) (set-buffer buffer) (setq ret (cond ((eq what 'lisp) (beginning-of-line) (insert ":link '(custom-manual \"(" fileurl ")" node "\")") (lisp-indent-line) (newline)) ((eq what 'gnus-url) (concat "<info://" fileurl "/" nodeurl ">")) (t ;; (or (eq what 'info) (eq what 'info-press)) (concat "(" jk/info-goto-node-string " \"(" fileurl ")" node "\")" (if (eq what 'info-press) "; <== Press C-x C-e here!" ""))))) (if (or (eq what 'string) (eq what 'lisp)) ret (insert ret))))) (defun jk/boxquote-info () "Boxquote current yank-buffer and put current info node in title" (interactive) (boxquote-yank) (boxquote-title (jk/current-info-node 'string)))
2. CS21A today and Monday : 15:56
The files mentioned can be found at http://sacha.sachachua.com/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.
- Preparing Flash modules for self-paced learning.
- The Text Twist exercise.
- Being observed and swapping ideas. Feedback is useful.
- 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...
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!)
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!
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
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.
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.
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
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.
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.
3. Ethics talk with the philosophy department : 17:57
We want to help students develop ethics. Present the way we currently teach it and then get insights
- intellectual property - software reliability - privacy - piracy - relationships, posing as someone else, questions of identity and truth
Long term: elective, maybe core?
first topic: IPR
Dr. Dy - excerpt from business ethics book
4. Flash MX on Linux : 18:06
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!
6. HTML_Form and passwords : 20:35
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.
Oh, there goes my scheduling...
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:
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. ;)
9. Links from the past : 22:44
- Redesigning an Introductory Java Course to Bridge the Gender Gap (http://www.contrib.andrew.cmu.edu/~tshih/THESIS/thesisFinal.doc) - Introduction to Programming Using Java (http://math.hws.edu/javanotes/)
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] .