Teaching algorithms: a one-step look-ahead

one-step-at-a-time-300x237

What does a one-step look-ahead for teaching discussion/recitation look like?

(And first off, what is a one-step look-ahead? It’s a technical term used in planning algorithms in artificial intelligence, used here to mean that although it’s hard to plan out exactly what to teach for the whole semester, what if we instead plan locally (in time) by looking at what students will need until you see them next? So, let’s plan one step ahead. In this case, since we have weekly discussion sections, this means one step = one week.)

Suppose the primary goal of discussion sections (recitations) are to prepare students for their homework and the next lecture. (The true primary goal is to make sure students learn the material, and the aforementioned is a proxy for doing so. In a well-designed class, these should be well aligned, but that won’t always be the case. [1]) “Prepare” is meant loosely and can include intuition, mathematical background, mechanics of problem solving, concrete examples and applications, visual/graphical explanations. Secondary goals of discussion sections may be to complement/supplement lecture, encourage students, gauge the class atmosphere, get some feedback on how the class is going, solidify your own knowledge of the material, practice public speaking, etc.

Then, to prepare for the next discussion, a one-step lookahead means:
– Anticipate the content of the lecture following the next discussion. This is happening in simulation because it’s not really possible to know exactly what the professor will cover, days in advance. Then, figure out what background students may likely need in advance. (On second thought, this can be pre-planned, with some coordination.)
– Go through the full homework due the following week (following Monday), in order to anticipate techniques and concepts helpful for the homework.
– Go through the discussion worksheet prepared by the course staff.
– Then, put everything together. Pick and choose from the discussion worksheet, with the selection guided by the first 2 items.
– Time permitting (though I believe this is very important), then try as much as possible to find alternative ways to present and explain the material — visually, through demonstration, through simulation, through math, through analogy, through concrete examples.

Let’s try out this policy!

[1] Thanks Shray for the feedback!

Teaching Algorithms: Part 1

I want to write about teaching CS170 (Intro to CS Theory), but I don’t know how I feel about students reading my thoughts quiet yet, so maybe I’ll make these posts available later on. So that means that for now I can say anything. 🙂

EDIT (2016-07-10): Made the post public!

Here’s what I tried today.

Let the students know that I’m on their side

I introduced myself, told them that I was a ugrad not too long ago, almost went into industry but then got sucked back into school. I told them that this is my first time teaching at Berkeley, and I’ll try to infer how they learn best, but please tell me and give me feedback on how to help better.

Learn my audience

This is a continued lesson from my 6.UAT class on technical communication — always know who you are speaking to. My first class is about 1/2 sophomores and the rest is split among the other class years. My second section is split evenly among sophomores, juniors, and seniors. I asked if anyone is taking the class in preparation for more theory classes — there were no definitive hand raises in either of my sections. And about 60-70% of the students are interested in being more prepared for their technical interviews through this class.

Get them talking

At the same time that I was learning my audience, I took this as an opportunity to get them all participating from the very beginning. It’s fairly innocuous — all they had to do was raise their arm. And then I asked them some more easy questions: How did you like yesterday’s lecture? (That was the first lecture of the semester.) I got some nods. What did you learn? Some noted the history of the word “algorithm” (named after Al Khwarizmi) and some noted a new way to multiply numbers. Did you enjoy the streaming algorithm example? (Umesh started the lecture right off with a concrete streaming problem.) Students nodded and a student exclaimed that he was asked the exact question during an interview. Then, an amazing thing happened. Another student agreed. A student followed saying that he enjoyed the applications of algorithms in the first lecture. Another student agreed, several more nodded in unison. Now they are in deep, they’re already participating in full! 🙂

If this doesn’t sound amazing… well, it was to me. I have a stark memory of the first recitation I taught of 6.004 (“Computational Structures”) back in 2012. It was a blank wall of stares. Expressionless, voiceless. I vaguely recall taking weeks to get the students participating at the same level that my students already are here. Not only is it sort of scary, it’s also impossible to get feedback with a class that doesn’t respond.

Let the students learn themselves

One of the other instructors brought up that even though the students want you to lecture at them as much as possible, it’s really best for them to be doing problems. Doing problems is what prepares them for the homework. I tried this out, and the students really taught themselves. They defined BigO notation and gave every answer and every explanation (with small exceptions). And I learned from them too. (Though to be fair, this might not be the best gauge, since the material was review of prerequisite material.)

This was not my approach when teaching 6.004. Instead, I covered a small fraction of the problems piece by piece — sometimes actively participating with me on the board, sometimes in small groups — and I spend a good chunk of the recitation storytelling. I call it storytelling, but it was basically a more interactive lecture, because my goal was to tie the super high level and abstract concepts presented in lecture to the very concrete and nitty gritty problems we were doing in recitation. I felt that it was possible to succeed in 6.004 without making the tie, but in doing so, the students may lose out on a lifetime of understanding (ok, maybe an exaggeration). I tried my best to show why we are doing something, rather than how we are doing it. I forewent most of the “recommended” problems, hoping that if the students had some tangible understanding of the lecture material after I tied up some loose ends, then they would be more able and engaged in tackling the remaining problems.

I can already see some opportunity for augmenting the lectures with a bit more content in recitation. Only time will tell, but I suspect that the lectures will be fairly well tied to the problems. I believe the opportunity this time around is in taking the time to make precise some material from lecture, instilling mathematical understanding in a bite-sized way, and perhaps filling in the gaps where the lecture glosses over motivation. Reduce the hand-waving, tie some knots. Prepare these kids for definitely rocking those interviews. Perhaps inspire them to take more theoretical and mathematical courses.

Well, I’m still on the fence for now. These approaches aren’t necessarily conflicting, but there is a trade-off in preparation time.

Get the students comfortable..?

Too comfortable, perhaps? One of the students came up at the end and apologized for falling asleep and then asked a question. And then I learned that this is probably a tiring day for them all because it’s the day of the Spring career fair!

Teaching recitation: post mortem

I wrote previously about my insights as I started teaching 6.004. Well the semester is over, and I think it’s been a semester well done. I had a thoroughly amazing experience, and I just wanted to say a few words as I was reading through the course evaluation results that came out earlier today.

MIT makes some effort to get students to fill out course evaluations at the end of each semester. A majority of the students in 6.004 are silent this time around, but I am pleased that I believe a majority of the students attending my recitations filled it out, perhaps because I asked them for feedback twice in the middle of the semester and continued to ask them to fill out the evaluation towards the end. The takeaways here are that 1) instilling the idea that feedback is important is effective and 2) spamming works!

Anyway, I am pleased with my ratings and feedback. I definitely “Encouraged participation,” and what I need to work on most is “Stimulating interest.” “Defining goals” is another area for improvement, but that’s no doubt easier the second time around. I would have expected lower marks in “Well-organized presentations,” but shhh—maybe they didn’t notice me blundering around the classroom every 10 minutes. I find it so interesting how I have gotten to know some of my students enough to (perhaps!) identify them by the pattern of numbers and the few words they left me. There’s almost a beauty to that — the rating makes sense, and that’s awesome.

I am truly encouraged by the enthusiasm in the comments on my teaching, along with comments in personal emails students sent me after the course was over. I can sort of feel the learning that happened, the insights gained, and the new-found appreciation of the material. I know that probably only a minority of the students came out of 6.004 feeling this way, but I’m almost jealous of these students. I had to take 6.004 twice to achieve what they achieved. But then again, I found the lectures excellent the second time around, and I was certainly motivated by the responsibility to teach it to 50 students.

A lot of the comments on the class struck a deep chord with my sentiments on the course when I took it a few years ago. I did not have a great recitation, and section-hopping just got tiring after a while. Lectures caused me information overflow, and I certainly did not have an intuition on the real-world physical aspects of computer architecture (the EE side of things). The lab work seemed unconnected to the general concepts, and I, like many others, learned that it was quite easy to get an A in the course by pattern matching across old quizzes. This course, though stable, seemed less than ideal.

But I am fortunate to have had these insights into the course before TAing for it. From the very beginning, I knew I would be doing things a bit differently from the other TAs. The TA’s job is to go over the tutorial problems and cover any background necessary to talk about said problems. But I knew I would be trying, every step of the way, to connect these problems to the lectures, the labs, the big picture, the physical world, and anything I could think of, really. In theory, I was doing more than the TA’s job, but in practice, I often forwent half or more of the tutorial problems I was supposed to go over. I often just talked at them, trying my best to tell them a complete story, and yet, the material I presented was very different from lecture. And I hoped that my students could take my simple words and do the rest of the problems on their own. Just as importantly, I tried my very very best to hide the fact that old quizzes were an effective resource.

This combination of not covering the material I was supposed to and not pointing out the resources that would ensure good grades (but also ensure less learning) made me very nervous at first — who am I to come in to this class that’s been run a certain way for the last N years and, without any experience, do things another way? But the results every few weeks affirmed my teaching methods — my sections consistently did great on the quizzes and in the class overall. I certainly understand the typical EECS undergrad here better than some others. I am a typical EECS undergrad here, after all, and I taught how I wish I were taught.

I feel quite fortunate, also, in the students that I had. I do believe that enthusiasm is contagious, and that students enthusiastic about learning will seek out enthusiastic instructors. After a few weeks into the semester, if I kept up the enthusiasm and since students are free to come and go between the 10 recitation sections, I would only have the enthusiastic students left to teach. The students who don’t need recitation and the students who prefer another teaching style filter themselves out, and it no longer becomes my duty to instruct them on a bi-weekly basis. And then, life is wonderful. Teaching enthusiastic students is infinitely easier than teaching unenthusiastic students.

I am grateful to have been a part of this journey working from inside of a 200+ student foundations class at MIT. Through all the ups and downs, these past few months have made me truly realize that I love teaching, and I want to thank all of my students for that. I sincerely hope to teach again soon.

But despite all my new insights and experiences, this TAship has also reminded me to keep things in perspective. MIT is first and foremost a research institution. The professors are here because they can produce good work, not so that they can teach undergraduates. Turns out, the same applies to the graduate students, who serve as TAs for funding, and only the occasional dedicated instructor is going to devote his semester to the students in need. This is no earth-shattering epiphany, and I am no exception. My TA offer for next semester is sadly expiring in a couple days, and I am gearing myself up for the research that I am here to do.

I hope my experiences here are useful to the aspiring teacher, and I will close off my discussion of 6.004 with two fun anecdotes:

First. I daresay that incentivizing my sections with something as simple as food to complete the Beta Processor lab early worked! One of my sections was at a 80% completion rate 2 days before the due date, statistically significantly more than the next best section. I made them muffins afterwards, and a good time was had by all.

Second. I wore a friend’s pedometer a few times during recitation, and learned that I actually pace around a classroom 1 mile when I teach for 2 hours. Crazy!

Teaching English: observations

In addition to teaching 6.004 (Computation Structures) this semester, I was also a volunteer ESL instructor to Chinese immigrants with a Harvard student-run program called Chinatown ESL. The program, though still constantly seeking improvement (as every program should), seems very mature and effective. Its curriculum is divided into 5 levels, with the first level assuming no English background whatsoever and with the last level entirely taught in English. The classes are also split into Mandarin or Cantonese versions. I taught the first level alongside my co-instructor Ina for 2 hours every weekend, and it not only gave me another perspective on teaching and an opportunity to practice my Chinese, but it was an entirely rewarding experience on its own.

Student demographics
The students were in the age range of 30-80, though they would occasionally bring their grand/kids. They were all somehow affiliated with the Boston Chinatown community. The male-female distribution was roughly uniform, perhaps leaning a bit towards more females. My guess is that most of the students were parents. Some of them were taking the class (Level 1) for the first time, but a number of them were taking it for the second or third time. The spread of English background was fairly wide. A number of students probably could have attended a higher level, but insisted that they had forgotten all of their English and wanted to “start over.”

Handouts
Like my 6.004 students, these students also had a predilection towards handouts. The difference, however, is that the handouts we used in this class were mostly homework assignments, quizzes, and practice sheets — rather than colorful explanations of concepts. But the effect was all the same because these students really appreciated any additional practice they could have on their own. In other words, they loved homework! One student would attend another class (at the same time), but then would stop by my class at the end to request a handout and turn in my class’s homework!

On the other hand, we also gave them verbal and oral homework — namely, to find a person on the street and have a short conversation, or to listen to an audio CD and read along in the textbook. We have no way of checking whether they actually followed through, and my hopes are not high because they expressed several times how weird it would be to do so. Which makes their hyper-active participation in class even more unexpected.

Active participation
A sharp contrast to my 6.004 students, my English students will not hesitate a single moment to voice their opinions on my teaching style, the lesson content, the teaching atmosphere, the number and speed of handouts coming around, the difficulty of the quizzes, etc. They will ask questions, add their own commentary, and even help with our Chinese (when it’s lacking). They will speak up without being prompted, and it would often take us some time to get them all to quiet down so that we can actually start or resume teaching. Aside from the part where it is sometimes difficult to teach over 10 other voices, I am not at all suggesting that their is bad — rather, it just makes me so happy how active they are in their learning. They are there for 2 hours a week, and dammit they are getting the most that they can out of it. I like that a lot.

Gratitude
To me, taking the class as seriously as they are is really a sufficient way to show gratitude. But during our last class yesterday, they really went above and beyond. Last week, we suggested that they bring some food to share during the last class, so yesterday we had an amazing potluck of authentic Chinese food. Many of them made their dishes from scratch, including Tofu Skins (豆腐皮), which just seems ridiculously difficult to make, and Beef Shins (牛腱) perpared in an amazing manner like my parents used to. They would continue to gently (or not-so-gently) encourage us to eat more, give us their thanks and appreciation, sing for us… it all reminded me of those extremely cordial meals and welcomes in China earlier this year. One by one, they trickled out, but not before helping to clean up and thanking us one last time, and we would say to them “See you next time!” one last time too.

Ina and I announced to them out intentions to teach Level 2 come next semester, and my heart just melted away when a number of them told us they would study the Level 1 material hard over the summer session and hope to join us again in Level 2.

Teaching recitation: observations

This semester, I am a recitation instructor for 6.004: Computation Structures, a foundation class for EECS majors here at MIT. The class demographic is primarily sophomore and juniors, and enrollment is upwards of 200 students. It is a very well-established class whose curriculum has not changed much in the last 8 years and whose course logistics and organization are mostly smoothed out. It is an ideal environment for inexperienced TAs to focus on teaching, learning, and communicating rather than the frustration of system inefficiencies.

Well, I’m absolutely loving it. Every recitation is solving a small part of the puzzle and a storyboarding adventure. Below are just a few observations I’ve made over the past few weeks.

Handouts
Students are physically drawn towards handouts. The more colors, the less readily available — the more exotic, basically — the more attractive. One time, I made a multi-colored handwritten handout for a topic that I had trouble explaining in words and distributed them during recitation. Word must have spread somehow, because attendance during one of my sections increased by 50% the next class. That day, the classroom was so full of unfamiliar faces that I thought I was in the wrong place.

Tabula rasa
Undergrads here in EECS are quite passive about their learning in recitation. There is some prevalent inhibition from talking at all, even to voice some basic concerns (e.g. please move, you are blocking the board; please write bigger/darker/clearer). At the very beginning, I am presenting to a blank wall of stares that occasionally look down to jot down notes. Students seem to need to be taught to speak, to smile, to frown, to laugh, to raise their hand and ask questions. They do seem to be born with the ability to walk out and to not show up again, but they are otherwise blank slates. It’s up to me to keep them or lose them.

But the real side effect of this phenomenon on me is that I am pleasantly surprised (shocked, rather) everytime students say “have a good weekend” back at me and everytime I don’t hear a lot of shuffling of papers and backpack zippers at 1:56pm.

Pre-spring break attendance
Yay, spring break! Everyone I know (myself included) skipped class today (er, yesterday) in lieu of fancy spring break plans or laundry or just more quality time with the internet. Beyond all odds and to my utmost pleasant surprise, however, attendance in my sections did not deviate much at all. I estimate regular section attendance at 15-20; attendance today was 13-15. We started placing bets before section to guess how many students would show up. My original guess was 5, and I was willing to (but did not) put money on the number being less than 10. Turns out, my students are much more optimistic (and correct) about attendance than me.

The desire to skip class on the last day before a long vacation is a strong force, so I need to think a bit more about the circumstances around my recitations that countered this force (such that I can replicate this effect!). Another instructor, who observed my section, once described my recitation as “very relaxing,” so maybe coming to class was close enough to the feeling of spring break!

The trouble with asking for feedback
Turns out, it is hard to cater to 20 different students all at once. When I asked for feedback on the amount of lecture review versus problem solving preferred, I got back a uniform distribution of the entire spectrum of choices. They did all agree, however, that I ought to make fewer mistakes, So there is at least that bit of feedback on which I can act.

Areas of improvement
Names: I’ve never been good with names, but that is no excuse to not even try. I still don’t know names, for the most part. Knowing names is a key part of engagement in teaching.

Blackboard organization: It occurs to me that my blackboard organization is sloppy, or at least, non-ideal for notetakers. The tradeoff that I am concerned about is that more time spent writing things on the board means less time to explain and interact with students.

The Torch or the Firehose
One last note. Professor Mattuck put together a guide on teaching recitation at MIT, and it’s absolutely fantastic. It’s a great read and points out common pitfalls. It also inspires better teaching. MIT could really benefit from closer attention to excellent teaching.

Hello again!

It’s been a pretty long time since I last really blogged.  It’s hard to imagine that I blogged ridiculously personal yet mundane things for some 6 years about my pre-college life.  And then was so embarrassed that I shut up for a long time.

Anyway.

This is an interesting way to apply for an internship at Khan Academy (or any job, for that matter).  It is very well formulated and concise, clean with minimal external links.  The only downside is that it is a bit over-the-top for my liking, but perhaps that is just legitimately “selling yourself.”