NEW: For a prettier blog interface, see the Wordpress version!

1st Sem 2003
Summer 2003, CS21A
Related pages: TeachingPhilosophy TeachingEvaluations


Priorities - A: high, B: medium, C: low; Status - _: unfinished, X: finished, C: cancelled, P: pending, o: in progress, >: delegated. Covey quadrants - Q1 & Q3: urgent, Q1 & Q2: important
C1XWrite reflections on first sem (2004.01.19)


21. Teaching assistantship (2005.09.14:1 teaching#1 TeachingReflections:21)

Categories: None -- Permalink

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

20. Teaching Carnival (2005.09.02:6)

Categories: None -- Permalink

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!

19. On computer science education (2005.04.28:2)

Categories: None -- Permalink

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?

17. Teaching reflections (2004.07.19:1)

Categories: None -- Permalink

  • CS21A: We gave the CS and MIS students the same quiz, although the CS students might have had less time to work on it. Still, the MIS students did preeeeettty well... <grin> Perhaps there is hope yet.
  • CS110: Talked about ranked and positional sequences. Used a spreadsheet in lieu of neat, prepared animations. Oh, well.
  • CS139.3: Chosen problems not much of a discriminant, as hex and cube-rolling problems too intimidating for most people. Much to discuss on Wednesday.

16. Class reflections (2004.07.14:2)

Categories: None -- Permalink

  • CS21A: Dr. Sarmenta did the worm thingy for control. I need to find a better way to explain that, as it seemed to have gone over most people's heads. My class had fun with the while loop exercises, though.
  • CS110: More deque implementation. People are doing surprisingly well, even those who weren't really paying attention in class.
  • CS139.3: I think I just got up there and babbled. Must fix.

15. Class notes (2004.07.07:5)

Categories: None -- Permalink

  • CS21A: Gave a short quiz. Mixed.
  • CS110: Had fun getting the students to lead the discussion. Fruitful.
  • CS21A, mine: Mixed. Re-did ifs.
  • CS139.3: Meep. Hope they'll get the hang of graph problems.

14. Class reflections (2004.07.05:4)

Categories: None -- Permalink

  • CS21A: Walked through the GuessingGame and CrystalBall exercises. It looked like everyone's on track. Mentioned my decision to my MIS class. Okay class session.
  • CS110: Told the class what was going to happen. Reviewed chapter
  1. Reviewed arrays and linked lists. Discussed array and linked-list implementation of stacks by describing the behavior of a stack and asking them to define push and pop. Mixed success, but seemed like a good exercise. Next up: queues, deques, and sequences.
  • CS139.3: Told the class what was going to happen. Had a fruitful review session of the past five problems. Made sure everyone knew how to read input. Promised to discuss Arbitrage and Kissing Cousins on Wednesday. Okay class session, although small.

13. Teaching reflections (2004.06.28:2)

Categories: None -- Permalink


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

10. Class today: Mixed (2004.06.25:1)

Categories: None -- Permalink

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.

9. Reflections on class (2004.06.23:2)

Categories: None -- Permalink

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.

8. Class today (2004.06.21:3)

Categories: None -- Permalink

  • CS21A: (B) Intro to Java lecture. (G) Intro to Java lecture, lab discussion. # I finished all of the feedback today. Yay! What worked: the first lab went very well. What could be improved: Move how-to-zip-files and demonstration to first week of classes.
  • CS110: Review of efficiency with a 5-point quiz. Many people need to review. Hmm. What am I doing wrong? Maybe I should use more exercises and fewer lectures. How can I make exercises easy to do in class? Not sure if proceeding to next topic (correctness, ending with induction) was the best thing to do.
  • CS139.3: Had fun finding two simple data structures problem. However, Mark was the only one who could solve it within given timeframe. Spent half an hour setting up PC2 and getting the hang of things. Next time, won't have that problem. Should also release notes on how to do input and output. Crash course in Java. Have assigned problems for student discussion. Will probably allow newbies to work in groups first.

11. Prepared for CS21A (2004.06.14:3)

Categories: None -- Permalink

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.


12. Reflections on class today (2004.06.14:1)

Categories: None -- Permalink

  • CS21A-B: **OK:** The mail system simulation mostly worked, although it could still be tweaked slightly. His slides were okay, too. **NI:** People need to be assigned reasons to use the mail system simulation.
  • CS21A-G: **OK:** My slides. Ended three minutes early, but otherwise pretty okay. Got a few laughs. **NI:** I could use a presentation chockful of filler material.
  • CS110-A: **OK:** I prepared slides with the outline. **NI:** I ended much too early. Should always have the next session ready, I suppose. Also, SHOULD NOT WRITE ON BOARD WITH PERMANENT MARKER.
  • CS139.3: **OK:** Again, brief overview with class outline and policies. 3n+1 was a surprisingly enlightening problem. **NI:** Brief primer on working with the online judge? Also, scared a number of the students.

7. Reflections from 2nd sem 2003-2004 (2004.04.15:5)

Categories: None -- Permalink

  • CS21A: Introduction to Computing I. Experimented with BlueJ and an objects-first approach. Students liked the interactive environment and had fun with the graphical and game-based exercises. Reading exercises helped build confidence and the students inferred the use of control structures from them. The programming exercises also helped them appreciate methods. However, I need to give them more opportunities for practice and I should challenge them more.
  • CS21B: Introduction to Computing II. Students continued working on their projects from last semester, with a twist: they did _other_ people's projects. Some groups had a hard time working with old code, but it looked like a pretty good learning experience for everyone. Making reviewers for the final exam was also a fun activity. They also picked up data structures easily, and their advanced studies in threads and files last semester paid off. Downside: Networking still difficult to test.
  • CS161: Operating Systems. I was initially worried about teaching a traditionally book-centered course, but managed to survive a semester of Powerpoint slides and departmental tests. Weird analogies helped out. Made the CS finals more computation-based, but students lacked practice. If I ever teach CS161 again, I'd like to emphasize that aspect over the memorization currently required.

Plans for next semester:

  • Heterogenity. Students come with different backgrounds and proceed at different paces. I want to take advantage of that by providing many exercises and examples for students to learn from so that they can go at their own pace.
  • Progress. I want to be able to monitor student progress in a spreadsheet or a website. I'd like to keep track of their self-evaluation as well as my own evaluation.
  • Exercises. Students responded well to the fun and creative exercises I came up with for CS21A and CS21B. I think I've collected enough games and puzzles to demonstrate most of the major points in CS21. Over the summer, I plan to write up these exercises in a lab manual. The exercises will vary in difficulty so that beginners can still find fun and exciting projects to work on.
  • Drills. I would like to spend 5-10 minutes on speed drills to accustom students to solving written problems quickly. This will help them prepare for the midterms and the final examinations. Practicing for these drills will also keep them busy just in case they have nothing else scheduled.

6. Functional decomposition and logic (2004.01.28:1)

Categories: None -- Permalink

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.

5. Tales from under my desk (2004.01.23:3)

Categories: None -- Permalink

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

4. Second sem thoughts (2004.01.19:5)

Categories: None -- Permalink

  • Students gain confidence by going through a number of reading exercises before proceeding to programming exercises.
  • A combined group/individual exercise allows all the students to cooperate while still giving them time to practice on their own.
  • Candy is a good thing, particularly during examinations.
  • All-or-nothing exams are easy to check and are particularly apt for reading exercises. However, students need to be exposed to them early on so that they become familiar with the stringent requirements and so that mistakes can be dealt with early.
  • I should have a morning schedule so that I wake up early.
  • I greatly prefer having students work together on exercises than I prefer lecturing, although I am getting the hang of lecturing because of my CS161 class.
  • Quizzes at the beginning of a class are a bad idea unless they're regular. Students don't get to study enough - context switch.


3. CS21A, reading exercises, and programming (2004.01.19:4)

Categories: None -- Permalink

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.


2. The class is practically running itself (2003.12.18:3)

Categories: None -- Permalink

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

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

1. Thoughts on training (2003.12.18:1)

Categories: None -- Permalink

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.

18. Reflections on teaching (2004.12.03:6)

Categories: None -- Permalink

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.

1st Sem 2003

My TeachingEvaluations might be fun reading.



Summer 2003, CS21A

Previous day | Next day

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: Teaching Reflections
Updated: 2005-09-17
NOTE: ANTI-SPAM MEASURE NOW IN PLACE. Please answer the following question with the right number in order to send me your comment.
What is two minus one? (hint: one ;) )