Saturday, May 9, 2009

Reflections Two Years Down the Road

We had BBQ tonight. Since last semester, it has become somewhat of a tradition for the class to hang out and chill out at the end of a tough semester.

It was nice that most of the students turned up, except for a couple who are out of town. A few students from last batch also came -- Zongyao, Caleb and Christine. I would like to express my gratitude again to my trusty TA, Kok Wee for organizing the BQQ and also Janus for helping him. :-)

It was really nice hanging out with the students. I had a great time chatting with the students, but I unfortunately had to leave early 'ços my wife was nagging me to go pick up our two babies. :-P

Jason asked me if I was going to offer CS3216 again next year, and I said, "Yes".

This is now the second time that we've offered CS3216 and truthfully I did have second thoughts in the middle of the semester about offering CS3216 every year. I was seriously considering the option of offering it every other year instead. I discussed this matter at length with Kok Wee, my trusty TA, who was adamant that we should offer CS3216 every year. (It's nice to have a TA who really believes in the course. :-))

Last year we had about 50 students. This year, we only had 28. Personally, I am quite confident that we can sustain a enrollment of about 25-30 students a year, but one of issues that we had this year (which we didn't have last year) was the difficulty the students had in forming Final Project teams different from those for the Facebook assignment.

It was a structural problem arising from the smaller numbers. Some groups inadvertently wanted to work together with their Facebook assignment teams and with a smaller enrollment, this made it difficult for the remaining people to switch groups even if they wanted to. The same issue didn't arise when we had 50 students last year.

I didn't really like this situation because I had this idea that one of the skills I wanted the students to learn in CS3216 was how to get to know people and then form the dream teams to develop their "killer app". Because "Musical Chairs" didn't happen, I was thinking to myself that a perhaps more efficient way to run the class was to mount it every other year so that we can collect enough (say 50 students) in each course.

What made me change my mind towards the end of the course was the realization that a smaller class actually has its advantages. With fewer project teams, I have the time to talk individually to each and every group and get to know each and every student. The quality of the Final Project apps this year also turned out to be significantly higher.

It is no secret that CS3216 was inspired two years ago by the late Prof Randy Pausch's Last Lecture. In that talk, he described this class he created when he first went to CMU called "Building Virtual Worlds". It sounded really cool, but unlike Randy, I'm an animation guy, so this virtual world business was out of my league. It so turned out that I am the sort of guy who likes to build systems - and along came Facebook, so in a moment of insanity, I proposed CS3216 to my Department.

I would like to take a moment to give credit to my Department, especially my Vice-Dean Prof Khoo Siau Cheng. Randy says CMU is great. Truthfully, NUS ain't bad. Instead of telling me that I was crazy and stupid, I actually got the support of SoC and later approval by NUS to mount a new course on Facebook programming! I am blessed to work in probably one of the most enlightened faculties on campus and probably in the world. For this, I am very grateful. :-)

Truth be told, it's actually not very reasonable for NUS to have a Facebook Programming class, because that seems to make us too much of a vocational institution, which we are not. (However, as the students will attest, I don't actually teach people how to write Facebook apps (and neither did I ever have such an intention). The whole point of CS3216 is for students to figure out how to learn. Two generations of CS3216 students have thus completed the course, survived to tell the tale and learnt (albeit painfully) that picking up the technology is the least of their problems, if they truly want to do something great).

Now two years down the road with CS3216, I can safely affirm that the late Randy Pausch was truly a great educator and his demise is indeed a real loss to humanity. I just went to read the transcript for the Last Lecture again and found the following quotes I am able to relate to quite intimately after teaching CS3216:
The first assignment, I gave it to them, they came back in two weeks and they just blew me away. I mean the work was so beyond, literally, my imagination, because I had copied the process from Imagineering’s VR lab, but I had no idea what they could or couldn’t do with it as undergraduates, and their tools were weaker, and they came back on the first assignment, and they did something that was so spectacular that I literally didn’t, ten years as a professor and I had no idea what to do next.

(If you) wait long enough and people will surprise and impress you. He said, when you’re pissed off at somebody and you’re angry at them, you just haven’t given them enough time. Just give them a little more time and they’ll almost always impress you. And that really stuck with me. I think he’s absolutely right on that one.

And the course was all about bonding. People used to say, you know, what’s going to make for a good world? I said, I can’t tell you beforehand, but right before they present it I can tell you if the world’s good just by the body language. If they’re standing close to each other, the world is good.

And BVW was a pioneering course [Randy puts on vest with arrows poking out of the back], and I won’t bore you with all the details, but it wasn’t easy to do, and I was given this when I stepped down from the ETC and I think it’s emblematic. If you’re going to do anything that pioneering you will get those arrows in the back, and you just have to put up with it. I mean everything that could go wrong did go wrong. But at the end of the day, a whole lot of people had a whole lot of fun.

So today’s talk was about my childhood dreams, enabling the dreams of others, and some lessons learned. But did you figure out the head fake? [dramatic pause] It’s not about how to achieve your dreams. It’s about how to lead your life. If you lead your life the right way, the karma will take care of itself. The dreams will come to you.

The first clue that CS3216 was doing something right happened when I was grading the Hello World assignment apps last year. How much can students do with a Hello World app? Well, a lot more than I had EVER imagined.

Teaching CS3216 is really challenging, but it is also intensely rewarding because I get to work with perhaps the most talented students we have on campus from all faculties. In some situations, the distinction between teacher and student isn't quite so clear.

Two groups of students this year taught me the truth that "wait long enough and people will surprise and impress you".

One group was MishMash. Jiayang tells their story here and it's true! Truthfully, when the team first did MishMash for their first assignment, it wasn't so hot. It wasn't even usable and so I must admit I was not exactly encouraging when I heard that they wanted to work on it for the Final Project.

I have to admit, I belong to the "Brutal Truth" camp. I don't tell students what they want to hear; I tell them what they need to hear. Telling students that they are doing well when they are not means that we condone low standards. That's not my style. :-P

In any case, the story has a happy ending. Instead of being discouraged by my initial comments, they decided to prove me wrong and persevered. I was quite blown away by MishMash when the Progress Report was due. While all the other teams had trouble producing a prototype, MishMash was done. Also, the improvement in the app was phenomenal to say the least. Even my student Zi Han who has really high standards for web apps had nothing but good things to say about the app. Of course, I conveyed my thoughts to the team.

The other group was MyCampus. This a group of four freshmen. They worked on this Flash-based app for their first assignment and it didn't work out very well. Then they told me that they decided to do a Flex app on xiaonei for their Final Project and I asked, "Sure or not? How much Flash do you know?" The rest, as they say, is history. :-)

Randy said that he could tell how well the BVW projects would turn out by the bonding between the students. The same is absolutely true for CS3216! Next year maybe we don't even have to bother to grade the apps. Maybe we just do a survey to ask the students how much time they spend with their teammates and how much they like each other. A similar trend was observed last year too, but these year's students seemed to like camping out overnight at COM1 a lot more. :-P

To a great extent, CS3216 has transcended from being just a class and evolved into a community. Perhaps shared suffering creates bonding? :-)

I have said a lot about how great things were, and I might have given the impression that life is a bed of roses. Truthfully life is NEVER a bed of roses. The class got random flak and naysayers: here and here. The attendance at lectures started to drop significantly last year after the midterm break (which is why I started blogs this year - which apparently "fixed it". *Evil laughter*).

I got a lot of flak from the students last year for random stuff like "changing deadlines" (actually I was giving extensions so I dun know what they were complaining about, but ah well), "poor scheduling" and for not being organized. I am pleased to say that I got a little bit smarter after last year and most of these logistics issues have been resolved.

I'm not complaining. Merely highlighting that things are NEVER a bed of roses even if things seem fine and dandy. This is especially if we try to smart and do something different and a little crazy.

So why do I do what I do (other than that I'm a little crazy :-P). It's because I BELIEVE. I believe that there is a place in NUS for a module like CS3216. There is a need to give our students a chance to do what they want to do. A chance to dream. A chance to learn what they WANT to learn.

CS3216 is infamous for its unreasonable workload. However, the truth is this: after the feedback from last year, I've fixed it!! Yes I did, believe it or not -- and I spent most of the Project Team meetings telling the students to scale down their projects. Just pick one thing and do it well..... but most of the students still went ahead and camped over. I suspect they actually enjoyed it (though they will still complain 'cos that's the way it is).

CS3216 is a head fake. It's really not about programming Facebook apps (though most students will learn some of that along the way). What is it all? If you are a student reading this blog to try to figure out what CS3216 is all about and trying to decide whether it's for you, read the blogs by the students found in the sidebar. :-)

The strange thing about CS3216 is that I don't know what the students learnt exactly. Much would depend on their backgrounds and what they decided they wanted to learn. Unlike a factory-system where we churn out a whole class of students all with the same set of skills, we instead have a whole class of students go away with different lessons. Yes, I know it sounds a little wild, but it's true. :-P

This reminds me of the conversation I had with Chris Henry on the way to the BBQ earlier this evening where we had this discussion about education, politics and "the system". I shared with him my view that this idea of The Singapore Dream is quite bogus. What Singapore Dream? Are our people so pathetic that they don't even know how to dream that they need the Government to tell them what to dream? My hope is that our people will dare to dream and we have 4 million different Singapore dreams. :-)

That is what education is about in my opinion: teaching our young to dream and helping them understand that life is about choices.

To conclude, I would like to quote from Larry Page's recent commencement address at Michigan (not what he said, but what his father said 53 years ago):
"...we are entering a changing world, one of automation and employment change where education is an economic necessity. We will have increased periods of time to do as we wish, as our work week and retirement age continue to decline. ... We shall take part in, or witness, developments in science, medicine, and industry that we can not dream of today. ... It is said that the future of any nation can be determined by the care and preparation given to its youth. If all the youths of America were as fortunate in securing an education as we have been, then the future of the United States would be even more bright than it is today."
I am really impressed that an 18-year-old could have said something like that. I believe that we have succeeded in making universal education a reality in Singapore today. The question remains: what will our youth do with their education? :-)

That, is a choice.

1 comment:

  1. haha I see that there are somethings about you that hasn't change after 2 batches of CS3216 (which is a good thing. :) )