$msg = ""; $myaddress = "sacha" + "@" + "sachachua.com"; $page = "TeachingReflections.php"; $page_title = "Teaching Reflections"; $page_updated = "2005-09-17"; $http_equiv = "Content-Type"; $meta_content = "text/html; charset=utf-8"; $maintainer = "mailto:firstname.lastname@example.org"; $home = "WelcomePage.php"; $index = "WikiIndex.php"; require_once "include/calendar.php"; require_once "include/planner-include.php"; require_once "include/header.inc.php"; ?>
|C1||X||Write reflections on first sem (2004.01.19)|
The teaching assistant for the next class promised to pass by at 1:00 to pick up the projector, but he didn't show up until 2:00. I couldn't leave the projector alone and the office was closed, so I ended up waiting in the lab for an hour. I used the time to read through lecture notes. Interesting handouts! I particularly liked the articles from business magazines on decision support systems and change management.
I also reviewed Excel features in preparation for my labs. It's such a pity that the book I was reading was published in 1994. Yes, it's _that_ old. Egads. I really need to find a newer book on Microsoft Excel. Yes, guys, my job as a teaching assistant involves preaching the goodness of Excel. It's not a bad tool, really. I like Solver and I think PivotTables are really powerful in the right hands. Microsoft Excel is abused far less often than Microsoft Word. (Hear that, all you people sending DOCs when web pages or text files would do?) It's also less insidious than Microsoft Powerpoint, which stunts most people's presentation skills. Microsoft Excel is not a bad thing.
I need to figure out a good way to do the labs. The room is a classic computer lab with big monitors on rows and rows of desks. At 5'1/4", I can barely be seen from the back row--and that's already with my attention-getting red-and-orange outfit!
Demonstrations would also be hard to follow from the back. There are far too many distractions: the hum of the airconditioner, the clickety-clack of other keyboards, the glow of almost forty other monitors... And it's 12 - 1 PM, too! Heck, _I_ felt kinda sleepy.
On the plus side, one student said she liked me because my voice was loud enough to be heard. Hooray for drama in education, and hooray for Toastmasters!
How can I best help them learn?
What am I there to help them learn?
My job is to help them learn how to apply ideas from their decision support systems lectures by using software such as Microsoft Excel, Jess, and Weka.
I _could_ stand up there and demo everything, but I don't think they'll walk away with important lessons. I want them to try out at least one new feature: to know that it's there, why it's there, and how to learn more about it. I want them to have time to work on their project, too, but that's really something they're going to end up working on outside class. I need to talk to Peter Shepard about how much time they should budget for that project.
Self-paced lab exercises helped my first-year Java students back in Ateneo de Manila University, and something like that just might work here as well. I'll need to prepare interesting, engaging exercises that will expose the students to various features of Excel. I can spend 5 - 7 minutes (hah! A Toastmasters talk!) at the beginning of the class to establish the importance of the topic and perhaps take any questions, let them loose on the topics, and then wrap up at the end. I'll need better feedback than waiting for questions. Maybe comments on a blog or on the (very slow) course website? Little slips of paper? Index cards? I don't know yet. I need to figure that out before next week.
It's fun teaching again...
Check out the Teaching Carnival for excellent blog posts about education. Good stuff!
Picked up the link from Marcia Hansen's blog. Read her wonderful reflections on her first experiences as a teacher. Awwwwwwwwww!
In response to Neil Santos' rant about computer science education:
What a pity it is that you've never had a good teacher. A good teacher can help you grow immensely. I've had great teachers, and they really changed my life. Let me share with you some things I've learned from them and why I'm crazy about computer science.
When you meet a lot of brilliant people, you'll quickly realize that technical skills do not guarantee people skills and vice versa. One of the best ways to meet brilliant people is through open source. Look at Richard Stallman: undoubtedly a genius, but his personality rubs a lot of people the wrong way. (He's really cool, though.) On the other hand, there are people who combine both technical know-how with passion and great communication skills; these are the teachers who can change your life.
I owe so much to the teachers I've learned from inside and outside the classroom. The best teachers I've had taught me that I'm not limited to the classroom. They helped me gain the confidence to try things on my own. They showed me things I didn't know about and might not have discovered on my own. They questioned my assumptions and challenged me to do better. I remember when I was in first year college and I was slacking off in subjects like English; it was my computer science teacher who told me that I should pay attention to details!
My teachers really helped me deal with my insecurities about our curriculum. I always kept my eye on schools abroad, and because I was already working on open source in college, I could see how people my age were doing really fantastic things like maintaining the Linux kernel or writing their own operating systems. My teachers helped me take advanced classes and get into extracurricular projects and competitions. When I started working on things on my own, they gave me encouragement and great recommendations.
I've heard many, many stories about teachers who aren't as good as the ones I had, though. Most teachers don't seem to care about their students or their subjects. I want to help change that.
Computer science changes every day. The accelerating pace may make you think that it's impossible to keep up. The truth is, as things get faster and faster, a strong foundation becomes more and more important.
That's what I'd like to think I teach. I do not teach how to program in Java or C++ or Perl. I teach people how to _think_, how to break a problem down into solvable parts, how to learn more and more and more. My job is not to pour information into passive students, but rather I am here to show them the basics and then challenge them, make them hungry for more, guide them through questions and hints. I don't know everything, but I love sharing whatever I know, and I love learning new things from students and the world.
I messed up a lot as a beginning teacher, too. There were days when the explanations I prepared the night before didn't work and everyone was just confused. There were days when I'd just get so frustrated with my inability to express something or to convince people that copying isn't going to teach them as much as actually sticking it out and solving the problem. But still, there were days when I'd see students get that Aha! moment, and that made things worthwhile.
I enjoy computer science so much that I cannot think of _not_ teaching it. I want to get other people hooked. I want people to fall in love with learning and problem-solving. I want people to discover that they too are capable of mental wizardry; that they too can make the computer dance to their tune. I want to be a fantastic teacher. In order to do that, I'm working on not only getting the theoretical and practical background to share with my students, but also learning how to teach and teach well.
Let me tell you that computer science education doesn't have to be like what you're suffering. I know it can be good, and I want to make it even better.
What does this mean for you, now, while you're taking up your degree at Adamson University?
Well, if you can't do anything about your teachers right now, you have many ways of coping. Open source gives you an opportunity to test your knowledge and make a difference world-wide. Even as a student, you can work on really cool things! Come hang out with us, too. We can challenge you. We can help you stay enthusiastic and passionate about computers. When are you usually free?
Dr. Sarmenta finished the lecture on Java Basics and started on Conditionals. I'm worried that the students might find the discussion on preincrements and postincrements a bit too abstract, as they don't have use for that yet. Dr. Sarmenta thinks it's wiser to get the topics out of the way, and since he's senior for that section, well... Anyway, I'm going to postpone that topic until I get to for loops, where it really makes sense.
I'm also worried about the long discussion on conditionals and grouping statements with braces. He spent a lot of time pointing out possible bugs. I guess this is a good thing because otherwise the students might pick up the bad habit of making small, random changes to their programs in order to get things to work, but again, it felt somewhat disconnected.
I started my MIS class with a quick overview of the exercise. I explained a few of the quirks, then moved on to conditionals in the context of the bank account exercise. I explained it in English and then showed them the Java code to do it, which they dutifully copied down. I also showed them how to use the debugger to investigate the behavior of the if/else structure. I felt good about trying to follow the BlueJ way of making exercises.
Armed with more examples, I went over methods of justification again. They understood the contrapositive immediately when I used English examples, and they were surprisingly familiar with the various examples for proof by contradiction. Loop invariants are a little bit clearer now, but they still need a lot of practice identify the statement S and proving it holds true before, during, and after the loop.
Mini-contest. Okay results; a number of people solved at least one problem, and Mark got all 3. I should be moving into searching and sorting soon. I guess I'll have to cover normal sorts so that people using the Online Judge know what to do. I should also cover the shortcuts...
CS21A: Both the CS and MIS classes appreciated having unit tests that thoroughly checked their work. Almost everyone quickly got the hang of the exercises, although I still need to make sure that a few people review attributes thoroughly. I was happy to hear students laugh when their code passed all the tests.
CS110: Bleah. Floundered in class. Must definitely make up lots of layman's terms explanations.
CS139.3: Gave them two problems to think about and let them talk about solutions. Lots of fun. Must remember to bring harder problems for the advanced students.
Today was an excellent class day!
CS21A: Dr. Sarmenta went through half of Java Basics. I did too. Students nodding. Assigned bank account and converter as homework so that they'll have questions on Friday.
CS110: Induction went more smoothly than I expected. Whee! I gave them the sum(2n - 1) = n * n problem. They finished quickly. It was good that I solved both problems in advance.
CS139.3: Fun discussion of the two problems from the minicontest. Neill shared his solution. Learned something new. (He stored everything as strings!) I told them about my hashtable/vector hack, and got appreciative ooohs. Also taught them how to justify text and read lines flexibly.
Good class day.
Okay, I should be satisfactorily prepared for CS21A now. For Dr. Sarmenta's class, I can walk through parts of the lab exercise and challenge them with drawn figures on the board. For my class, I plan to go through the post office simulation. If I have time after the debriefing, I'll do an intro to the lab. The interactive part should be doable.
Plans for next semester:
Students found it much easier to work with methods and parameters when doing programming exercises. Also, ASCII drawing exercises drew their attention. We should emphasize this in CS21A next semester.
Not that I'm too fond of focusing on structured programming, but they're no longer worrying about syntax _and_ they feel challenged and happy, so it can't be entirely a bad thing. They don't seem to mind working on toy problems, either.
I'm hiding under my desk with a large box of assorted candies and a laptop. It had been a particularly tiring CS21A session, with my carefully prepared string exercises mysteriously unreachable - proxy problems? host problems? - and... well... a student with a surprisingly poor grasp of the subject matter, which made me feel bad as a teacher - which is, once again, why I'm hiding under my desk. It feels nice here.
I must remember that the discipline of problem-solving and the structured logic of computer science do not come easily to other people. I hear the frustration and shame in my students' voices as they try to write the programs I ask them to do far more often than I hear their exultation. With a sequence of exercises I strive to lead him to the realization that loops are simply a way to repeat code conveniently, to help them make it a part of they vocabulary. Sometimes I feel like Anne Sullivan to stubborn Helen Kellers, patiently repeating ignored hand-gestures while waiting for that one spark of genius that will help them unlock their world.
I arranged my exercises in terms of difficulty, but I need even simpler exercises to help them build confidence. I want so much to make them see, to make them understand - but I must guide them slowly and with questions so that this logic becomes an inseparable part of them, not just something given to them to study now and forget later. I want them to have a sense of control and accomplishment.
I want to unfold them, find the core of the problems that prevent them from learning, stretch them, challenge them, transform them - but oh, how difficult it is to even find a sequence that will be challenging and yet at the same time encouraging! How much easier it would be to not care, perhaps, or at least not bend to each person's needs - to let people sink or swim according to their own efforts. How easy it would be to just say that oh, perhaps a student is not meant for a certain course. I would perhaps be doing a greater service to that person's potential classmates and coworkers if I failed a student who did not show potential. Yet such reflects on me, too. Perhaps it is a conceit to think that I can reach even those whom most think are unreachable...
I lack so much as a teacher. I love crafting exercises to guide people along a path. I love finding out where a person is and trying to form a personal study plan to help. I tutor, I mentor, I question, I challenge. Do I teach? Rarely. I think of this as trying to help people learn. Perhaps I'm meant to be more of a guide, more of a tutor.
I love spending time with people and helping them understand something. My CS21B class is incredible to watch - the people who had such a hard time during the first semester seem to have caught up and are doing quite well, and that helps me believe that it's worth it. It must be worth it, must be worth times like this...
We started with programming today. I think that the reading exercises helped significantly, as the students quickly remembered which structures to use and how to use them. We should try that in the future.
Bringing candy to the midterms was also a very good idea.
It's amazing. The class is practically running itself. The time I put into making those exercises was definitely worth it. They're off solving them or making up their own exercises. With documentation, time to explore the system, and the freedom to make mistakes and ask questions, the trainees learn almost entirely on their own.
When they do have questions, they tend to ask each other first before asking me. I handle the questions they can't figure out from the text and clarify things that are fuzzy.
It's really amazing. I hope they'll leave the training confident that they can learn whatever else they need to - considering they learned Perl nearly on their own! Because I'm more into getting lots of people do Perl, I'm not worried about long-term profitability. After all, what training center would do well if they kept encouraging students to learn independently?
That said, it was a lot of work preparing the exercises, and I can't count the number of times quick thinking and familiarity with UNIX made things easier. For example,
wget -r -nc --no-parent --proxy-user=secret --proxy-pass=secret http://www.perldoc.com/perl5.6/pod/perl.html
and judicious use of ncftp's mput command (skipping the already-uploaded files) allowed me to easily make Perl's documentation available even though the server didn't have anything but perl(1). Better than manpages, actually, as these were hyperlinked! =)
tar zcvf day2.tar.gz /usr/local/training/home/
will allow me to pack up all their work so that I can use my Emacs keyboard macro to send it to their listed e-mail addresses. (I should get around to making that a defun...)
Yesterday was my first day of corporate training. It was surprisingly draining. On my feet almost the entire day, facing the same crowd, waiting for their questions... After the training, I was so zoned out! Fortunately, it was just a short walk to Powerbooks in Greenbelt. To top it all off, I discovered a chocolate bar quite near there!
The trainees are remarkably independent, preferring to work on the exercises on their own or in small, informal groups instead of listening to me explain the solution. My role is more of a facilitator. I point them to the documentation. I also walk back and forth looking for people who are stuck at a problem or are faced with a trivial bug they can't find and fix, and I give them small hints.
For this group, it seems very important to gain mastery of the basics first - so we'll stick with the promised coverage and we'll have plenty of exercises. That works out for them because they'll have time to gain confidence. That works out for the training company as well because they'll have an opportunity to do Advanced Perl Scripting.
It was a very good thing that I'm used to this style of teaching - embedding lessons in exercises that build on each other and involve several concepts. If I expected to lecture, I'd have been dead on the first day! With that in mind, I had a lot of fun preparing more exercises for them. I worked until one in the morning. A phonebook at my side, I came up with all sorts of phone-related exercises. I hope they take it well; they might just be sick and tired of anything that looks like work after all!
I met Dominique yesterday and we swapped notes on training. From what little I know of it, I rather like corporate training. It gives me a chance to spread the good news of UNIX. ;) That said, I like school teaching, too. Maybe I can do part-time teaching and part-time training in the future.
It was a joy to teach brilliant and enthusiastic students who learned by leaps and bounds. I hope I had in some way accelerated their learning, widened their horizons and helped them enjoy computer science even more.
Dearer to me, though, are students whose aha! moments are few and far between despite their efforts. They were the reasons why I taught before, and they are the reasons I want to return.
My TeachingEvaluations might be fun reading.