Blogging is stressful. I do it because I always believed in walking the talk.
It didn't take me too long to realize that students (children) don't do what we say, but do what we do.
For teachers to have the moral authority to preach, they unfortunately will have to practise what they preach.
It turns out that I can sorta write, so writing is not entirely stressful. The reason why blogging for this class is stressful is because there is this pressure to "say something smart".
The problem is that this is the fourth time that I'm teaching this course and the third time I'm writing a blog because of this class. I don't actually read through what I wrote in the past (really don't have that sort of time or energy), but it also means that I risk repeating what I said in the past.
Fortunately for me, something struck me while I was reading the class blogs and it's something that I think is extremely important: finishing strong. NUS does have its fair share of good and talented students. Yet, one quality that I have found that is often lacking is the tenacity to see something to the end.
It is quite common to find students get excited about something and work very hard at it (especially in CS3216).
The problem with life is that most things that are worth doing, are, well, HARD. While things can look really good at the beginning, things get more dreary and more painful as time goes on. There are also often problems. Sometimes, many, many problems.
And often times, people end up going through motion towards the end, or perhaps they just give up.
Three things I would like to say on this topic of "Finishing Strong":
Life is more often a marathon rather than a sprint and so there's a need to conserve energy for the long haul and also manage morale. People often give up because they under-estimate how long it takes.
Only the paranoid survive. It is easy to get lulled into complacency. The job is never finished until we are past the finishing line. We should not celebrate prematurely and let our guard down. I'm teaching CS1101s for the sixth time (and teaching CS3216 for only the fourth time). I almost have Scheme coming out of my ears and I can probably teach CS1101S backways. Nevertheless, if you ask my tutors, both classes are treated as "fresh enemies" and not a single stone is left upturned to make sure that nothing goes wrong (as best as we can help it).
We don't always do things because it "feels good". To finish strong, sometimes we need to appeal to our conviction that we need to do some things just because "it is right" not because we "feel like it". If you asked me, I'd really rather be on a beach sipping pina colada than writing a blog, but we do what we need to do.
For the information of the new batch of CS3216 students, I blog because I think it's important to lead by example. Also, over the years, I have found blogging to be a very effective way for students to reflect upon what they really learn in the class, and also for me to understand how they think and to engage them.
In ordinary times, I would probably be responding to every single blog and most posts that students make. But these are not ordinary times. Even if I don't sleep I probably couldn't manage. >.<
What can assure every single student however is that I will be reading every blog post they make religiously and I mean it. :-)
Then I have a final confession to make.
I really don't know HTML5 and CSS3 even as we speak. :-)
This is probably very shocking because people will be wondering HOW it is possible that students are expected to learn about HTML5 and CSS3 if the prof has no clue.
It turns out that if we go back in time 3 years ago when I first started this course, I had no clue how to build Facebook apps either.
We are working with pretty bleeding edge stuff in CS3216 (and thanks to Facebook's capriciousness in how they change their APIs without telling anyone, there will be quite a lot of bleeding over the semester).
If we wait till the prof figures it all out before we conduct this course, this course would never exist.
Obviously, I have also figured out a way to conduct CS3216 without knowing a whole lot. The truth of the matter is that it is possible for me to conduct such a course because the course is not about *stuff* to being with, but about learning how to learn. :-)
I think that honesty is a virtue and it's important for us all to know what we know and more importantly, what we DON'T know.
Sadly, profs really don't know everything and don't have all the answers.
In fact, not all questions have answers. Though the process of formal education has this nasty tendency to persuade students otherwise. :-'(
As they say, in teaching, you tell them what you want to tell them, you tell them and then you tell them that you told them.
Parents send their children to university, hoping that they will get an education. What exactly is that?
IMHO, there are only two things that matter in education (might add more to the list if I figure out more things later): MINDSET and VALUES. The world is changing too fast for *stuff* to matter too much and learning *stuff* is really the easy part.
My goal as a prof is to help students succeed (whatever that means). Success doesn't always mean getting rich, though often it might. I am absolutely convinced that having the right "growth" mindset and the right work ethics is pre-requisite and enabler for success.
Much of CS3216 is structured around creating the environment within which students can build up that mindset. Much of it involves some amount of shared suffering. Suffering, as it turns out, builds character. >:-)
The other key element is values. By this I mean honesty and integrity. Those who are driven and highly motivated often do succeed, but without the right moral compass, we might just have another Enron on our hands, which is obviously NOT a good thing.
To conclude, I would like to share a short speech, given by Caleb Chao, who was SoC Valedictorian last year, and also one of those students crazy enough to have taken CS3216 in his freshman year when the course was first offered 3 years ago.
I have a habit of posting random stuff in the IVLE Discussion Forum for CS3216 in past classes. One student suggested that instead of posting them in IVLE to post them on this blog. I will still continue to post random stuff in the IVLE Discussion Forum this year, but what I will also do is to continue adding stuff to this list as we go along. Thanks to the Internet, there is so much knowledge and wisdom out there that's accessible with a click of a button. It would be criminal not to learn from them. :-)
Anyhow, here some of the interesting stuff to read/check out:
As students are "forced" to reflect on what they have learnt this past semester as their swan song, I thought that it would be helpful for me to do the same -- but more than that, I decided that I would reflect not only on the current semester, but on the three-year journey that is CS3216.
At the heart of CS3216 is my belief that Singapore is much too mediocre a society and what we really lack are peaks. By mediocrity, I don't actually mean bad. Mediocre actually means "average" and in the context of Singapore, it's a pretty high average.
However, what I had come to realize by observing what's been happening in recent times is that a high average isn't going to cut it. Not by a long shot. :-(
The world at large is getting increasingly complex. We are slowly but steadily running out of oil. China is fast becoming bigger and more unstable. US is fast moving towards implosion and bankruptcy. The picture really isn't pretty.
In this light, what I felt what that what Singapore really needs are peaks.
I also had a very dim view of the old farts like myself. I've missed my chance to be a Page or Zuckerberg. The future really belongs to the youth of today and the leaders of tomorrow. Education is the answer. Then the question was: how in the world do we go about creating those peaks?
Then I watched The Last Lecture and decided that maybe Randy Pausch knew what he was talking about and saw that Facebook was like the best thing since sliced bread and created CS3216 - because I thought, maybe if we did something different, some good might come out of it.
Now that I have the whole system up and running, I can obviously tell a story about how brilliant I was when I "conceived" of CS3216. However, the truth of the matter is much less glamorous. I hardly knew what I was doing and I was mostly making things up as I went along. :-)
What I DID know however was that what I really wanted to do was to help facilitate the formation (not creation) of those peaks that we need so badly. The idea is that the peaks were already there, but we just haven't quite been able to bring them out or the systems and structures we have in place were perhaps and impediment.
I really didn't know but as Randy says, "Wait long enough and people will surprise and impress you."
Because I didn't really know what I was doing, I ended up talking to a lot of people, mostly successful people --- and it wasn't too long before it became conclusive that there is no "formula" for success. The unfortunate corollary of this finding is that we can't really create peaks the way we used to train engineers.
What I did find however was that successful people tend to think differently from the regular folks. It's really not about IQ. It's all about mindset.
I think Anthony Robbins articulates this in a way that I cannot possibly:
"Guess how many emotions people typically experience? Less than 12 and half of them make them feel like sh*t".
Along the way, I have indeed found that notwithstanding differences in natural talent (or what's typically referred to as "Nature"), that people are products of their own experiences (or "Nurture"). Nurture is not just about how many tuition teachers one has had in the past. It's *much* deeper and more profound.
Much of this I sort of figured out along the way as a scientist observing the world and the people that run around in it. In recent times, I've come to learn about this thing known as "Neural Linguistic Programming" and I'm in the midst of figuring out how it all works. :-) It's nice to have someone else work out the theory for you instead of having to start from first principles.
The theory here is that most people typically have a lot of potential to do a lot more, except that they are "programmed wrongly". Well, it turns out that I'm a Computer Scientist. If it's just a buggy program, then I'm right at home. Debugging is probably no sweat lah. Just have to figure out how the heck to load the darn thing into memory without frying someone's brains. :-)
Teaching CS3216 has been really rewarding for me because I've also actually gotten a lot smarter about a whole bunch of random things along the way. It's sometimes not even clear to me (like it's not clear to the students) that I've actually been teaching, but I've definitely learnt a lot.
It's funny, but I came up with this conjecture earlier this evening that maybe CS3216 is just a class I created for myself to learn stuff I wanted to learn..... and along the way, I just sort of collected some students to learn with me? :-P
I really like to learn stuff. I hope that to a small extent, some of the students this past semester have also started to appreciate the value of keeping their eyes open and learning random stuff. :-)
The motto for CS3216 is "make a difference". Now that the course is coming to an end and we're moving on to bigger and badder things next year, it might be timely for me to share my views on this matter.
I think it's HARD to actually make a difference. Like I said during the Last Lecture, most people are a lot less important than they think they are and our existence in this world is really quite transient. What is a 100 years in the face of eternity? Anyone knows his/her great-grandfather?
Does it therefore mean that we should therefore give up and life an "ordinary life"? Well, that's a choice that each and every person must make for himself/herself.
What I do think however is that to stand a chance at making a difference, we first have to BELIEVE that WE CAN MAKE a DIFFERENCE.
At the very least, we can try (though I also say "Do or Do Not, There is no Try".... maybe I'm a bit schizophrenic :-P).
Trying doesn't guarantee success. Sometimes the Gods will seem to conspire against us. What can mere mortals do? :-)
To conclude, I shall leave the students with one (hard) question that they should attempt as homework: WHAT IS THE MEANING OF LIFE? Not to worry. It's not graded - at least not by me. ;-)
This question doesn't have a model answer I think. Because everyone is built differently, it's likely that the answer will be different for each student. But this is actually an important question because the answer will reveal the sort of person we are and also be a guiding force to our short existence.
To make the point more poignant (sorry this is a bit morbid), imagine yourself lying in your deathbed with hours left to go and someone asks you: "what the heck have you been doing with your life?" What will your answer be?
I haven't blogged for a while and I realized that many students haven't blogged as well - but we'd talk about that later.
I also wanted to do an experiment to test if students would blog if I didn't blog. Sad to say, not many did. :-(
What came to me earlier today is something quite philosophical, and thats the question: what is wealth?
I recently get in touch with Nipun Mehta who has an interesting perspective on this question:
His solution is the "gift economy", which attempts to "redefine wealth as contributions, not possessions".
While interesting, and perhaps noble, such a definition is a little too abstract for me. So I approached this question from a more basic angle: if I can have an infinite amount of anything I want, what would it be? Money?
Sometimes when you ask questions the "right way", you the get the "right" answers.
My answer was pretty obvious: TIME.
If only I had more time. I have so many thing I have to do. I have so many things I wanna do. I never seem to have enough time to do them all. :-( Simple as that. Instead of a daily struggle to pay the bills, mine is a struggle to stay afloat.
Let's try to get everything squared away without blowing anything up yeah?
If you will think a little deeper. There are two things that the world cares about: energy and money. To some extent, the two are actually interchangeable. Energy is money, albeit in a different form.
Why do we need money or energy? Basically to buy time.
Because we have money, we can take a plane or drive a car instead of walking on foot. That saves us hellaluvalot of time.
Because we have money, we can go to the restaurants, we don't need to hunt down the animal, skin it and cook it ourselves.
Because we have money, we can hire a maid to take care of the housework so that we don't have to do the laundry.
Because we have money, we might be able to pump ourselves with more advanced medical treatments so that we don't die so early and have more time.
You get the point. But suppose we all agree that wealth is really time, then there are two obvious corollaries:
One, life is very fair, because regardless of king or pauper, we all have the same amount of time everyday: only 24 hours. No more. No less.
Two, what should we do with our time?
I am not about to suggest that there is a model answer to the second question. To each his own. I am merely sharing a perspective.
The second point I want to touch on in this blog entry is execution, which coincidentally is the theme for the second part of CS3216, if people still remember.
It turns out that CS3216 is not the easiest class to teach. Because of the way it is structured, there are a lot of random variables.
I don't know beforehand who I can get as speakers. I don't know who will turn me down. I don't know who will agree to come talk to the class, but have to cancel and/or reschedule.
I don't know whether the new Google Wave assignment will work out. I didn't even know what Google Wave was about when we started. Thank God it worked out. :-P
Because I am teaching this class for the third time, I am obviously much smarter than when I started, but there are (always) surprises.
For example, while I had expected all the teams to do well for the milestone portion of the Facebook assignment, some teams blew up on and I had to make up some new rules to remedy the situation and to put the course back on track.
Now that we're nearing the end of the semester, I must say that I'm quite pleased to see how things have turned out and as far and I'm concerned, we're pretty much cruising to the end.
There's still the poster session next Wed, but it's quite manageable.
The only other loose end that I need to tie up is the Blogging King/Queen business. As it turns out, this current batch of students dun really like to blog and dun blog consistently. This is very different from the last batch -- but why am I surprised? :-)
Upon careful deliberation, I hereby declare MYSELF the Blog King for this batch 'cos I think I have blogged much more consistently and conscientiously than any of the students.
Because there can only be one, and I'm the one, this means that the no one gets a free A by blogging for this batch. At least not the way it was envisioned at the start of the semester. Sorry.
Am I upset that blogging didn't quite work out this semester? Actually, no 'cos the point of the class is not about blogging. Everything that's done for CS3216 is supposed to go towards promoting learning. While the blogging component this year hasn't been quite so successful, some good has come out of it and that's about as good as it gets.
In case people are wondering if this means it's the end of blogging for the rest of the semester. The answer is no. However. more will be revealed at the Last Lecture on Monday. Akan datang.
People should not forget that I'm the evil prof. >:-P
To conclude, the point I'm trying to make about execution is that it involves focussing on the big picture and high-level goal, without losing sight of the details and begin able to adapt to unexpected events and being able to improvise as you go along. Yeah, it's a mouthful. Go chew on it. :-)
In theory, profs are supposed to teach. What does that really mean? Some people think that teaching is about imparting knowledge. Others talk about teaching critical thinking.
Personally, I look at my job a little differently. I think it's about helping people (students).
I think teaching is about helping students lead better lives, helping them figure out what the heck they ought to be doing with their lives (though I often fail in this department because it sometimes takes longer than the window during which I'm teaching the students) and last but not least, to help them achieve their full potential. This is all very general and unfortunately has little to do with CS.
Notice that I didn't say "helping students succeed" above. The reason is that it's hard to define "success". Some would equate success with wealth; others might have other view. Few would argue with "leading better lives". :-)
So now here's the problem: if I'm supposed to help my students succeed, then I better an idea about what it takes to succeed. Even a moron can tell you that nature and nurture both play a part, so a "nature vs nurture" discussion won't be helpful.
I guess I am fortunate to have met quite a few people in my life thus far, many of whom I would consider to be "successful" people. While I am not actively looking at wealth, most of them also turn out to be relatively wealthy, or I predict will soon be quite wealthy.
If people haven't seen this clip, Richard St. John's 8 secrets of success, they should. In any case, the point of this clip is that one obvious approach to understand what leads to success is to "study" successful people.
That's pretty much what I did.
More specifically, I tried to figure out the key difference between the sample set of "successful" people and the "other" folks (I hesitate to call them "unsuccessful").
What I found is that it's a zoo out there. Among the successful people, there are folks who are highly qualified and went to the top Ivy League schools. There are also some who don't have much of an education.
The one common thing that I have observed however is that they typically have what I would describe as a "winning mindset":
They believe in something. Sometimes God. Sometimes other things. Mostly things bigger than themselves.
They like themselves. I don't mean that they are narcissists who look in the mirror everyday thinking "I'm so smart. I'm so good looking..." Nope. These folks accept themselves for who they are, warts and all.
They accept personal responsibility. Singaporeans like to blame Government, blame father, blame mother, blame anyone and everyone except themselves when things go wrong. It's always the system is wrong, because there's streaming, too focussed on grades.
Bill Gates apparently said "life is unfair get used to it". People need to quit complaining and actively take action to improve their own lots in life.
They have a Can-Do spirit. Truthfully, there are very few things that cannot be done in Singapore. More often than not, Singaporeans fail even before they start because in their infinite wisdom they have already decided it would fail in their heads --- and many a times, it's because the understanding is flawed.
They seek continual growth. Success does require a certain amount of effort and hard work even for the truly gifted. Being gifted only means you put in less than the rest to get to the same place. Doesn't mean that you can put in no effort.
They don't carry baggage. This is related to the first point about liking themselves. Some folks have this need to prove themselves. That's a no-no.
Some people will say that actually, this need to "prove oneself" might help some people succeed.... well, there's some truth to this, but I think the Star Wars analogy is appropriate. These urges to "prove oneself" is a Dark Side power. Sure, some people might succeed from the apparent drive that stems from these urges, but it's likely to lead to other problems eventually like arrogance and stuff.
Think the Force. Yoda? The little green man? We want balance. Those who have such issues please acknowledge and go deal with your baggage. Unfortunately, this is really harder than I make it sound. However, people please try.
In CS3216, I try to do achieve three goals:
1. Teach stuff. Actually, I don't really teach lah. The way we try to nail this is to design good assignments to have students teach themselves and each other. I also try to get real experts in stuff I something about but not a whole lot to give a more *authentic* perspective on what I think matters.
2. Teach thinking. This happens at the project meetings. Every project is different and basically, I try to walk through how to approach the projects as problems with the students.
3. Reinforce/Fix Mindsets. This is most ambitious, but I also think the truly important and transformative one. I mentioned this briefly earlier this evening to a group of students and someone asked, "So what's your conversion rate?"
I felt like a website for about 2 seconds and then I said,"30%?". Truthfully, I humtum one. I actually don't know for sure. Maybe I'm just generating leads?
Not everything in life that has value or meaning can be captured with a KPI/web metric. :-)
I was just reminded by my trusty Tutor, Yanjie, that I have not been setting a good example for the class because I haven't blogged for a while.
Fair enough, so I blog. :-) [May this serve as a gentle reminder to the students that while they were exempt from blogging last week because they were expected to be working on their Final Project Proposals, they are expected to resume with their weekly posts this week.]
After reading some of the feedback from the midterm survey, perhaps I can take the opportunity to explain again why students are asked to blog: (i) because it "forces" reflection, which will help in learning (causes pain because learning takes effort); (ii) it helps many students improve their writing skills (yes, writing can be improved simply by writing more); and (iii) it helps me figure out what students are learning or are not learning.
Students who don't think blogging is of value to them or who have no time to blog, don't have to blog. Maybe they will take a minor penalty in the final grades for the class, but in the grand scheme of things, it probably doesn't matter. Students should just have the guts to do stuff they wanna do and find value in doing. :-)
Just one perspective to consider: suppose you decide not to blog because you don't like to write (which typically suggests that you don't write very well) then you have basically given up an opportunity to practice and improve your writing. Just think about who is paying the tuition. :-) Anyhow, just did my first video conferencing lecture on Monday, "live" from Sydney! I thought the audio quality (barring a short period of static) was pretty good. The visuals however probably weren't too great.
I shan't go into too much detail about the talk, since the students are likely to say more. I would like to highlight three key points.
One, the Google Wave Active Robot API is really quite intriguing. Why? Because why Waves were in the past confined within the browser, the Active Robot API allows robots outside the browser to interact with Waves which are these logical conversations "somewhere in the cloud".
It seems to me that some interesting things can be done with Robots now (though I'm not entirely sure what) and I would like to encourage students to think of Waves not so much as this page in the browser but as "conversation objects". The Wave is really some abstract object and not just a browser-thing. Students should spend more time thinking through and try to understand what a Wave is.
Two, the principles of Wave-y extensions are pretty interesting and might perhaps be applicable to user interface and interaction design at large, instead of just Waves. Two key points raised: don't modify stuff by removing/reformatting the text. If you need to modify stuff, give users the choice. :-P
Three, lag is a huge problem for Wave at this point. That said, I believe that when the lag gets engineered away, there will indeed be some things that can be done better in Wave than in other media. One function that seems to be missing in Wave at the moment is search. There's a search facility to search in the Waves, but what I mean is that each Wave should have a in-page search facility to search within a Wave when the Wave gets long. Otherwise how to find stuff?
Hmm, just realized that maybe a Wave robot can do exactly that -- which in a way highlights an important feature of Wave over something like Gmail, it's pretty easy to extend. :-)
Alright, so much for Waves, some words of advice on the Final Projects since this week is the week where I meet with the various groups to do sanity checks:
Please do something you really believe in. I'm proud to say that after two years of CS3216, I've finally "figured it out" and I finally have the confidence to say that "students can do anything they want" (and still be reasonably sure that things will turn out okay). This is the chance for you to do something that you've always wanted to do but never found the time to do. This is the chance for you to do more than just another class project. This is the chance to work with perhaps the most motivated and talented students NUS has to offer on something that can make a difference. I think it would be criminal to settle for anything less.
Think Big, Take Small Incremental Bites. It's good to have a vision, but it also important to be grounded in reality. You have to learn to phase the implementation of the problem into small bit-sized chunks and nail them one at a time instead of trying to swallow the whole thing and choke. To do well for the Final Project, it's not about doing A LOT A LOT of work. Small projects, executed well can also find phenomenal success. However, it requires students to do a significantly larger amount of thinking than other class projects where the perimeters are much more clearly defined. Depending on the nature of the project, the considerations are different. Understand the problem; focus your energies on what matters most.
Deploy Early. The merits of deploying a working prototype early (within the next two weeks) cannot be overstated. In addition to being able to gather valuable user feedback early, it improves morale significantly and will allow students to avoid running into conflicts with the projects from other classes.
Have Fun! There are few things you will remember about school in a couple of years after you finish school. Believe it or not, many of you will remember the nights you spend with your friends in COM1. Remember you only live once. :-)