Tuesday, May 25, 2010

Random Stuff to Check Out

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:

  1. Steve Job's Stanford Commencement Speech 2005 (Stay Hungry. Stay Foolish)

  2. The Art of Teaching Entrepreneurship and Innovation

  3. Adrian Tan's NTU Convocation Speech

  4. Randy's Lecture on Time Management

  5. David Rose on Pitching

  6. How Bill Gates hopes to make a difference

  7. Nick Vujicic

  8. Barry Schwartz on Common Sense/Wisdom

  9. Pattie Maes on Sixth Sense, a next-generation Minority-Report-like user interface.

  10. Richard St. John's 8 secrets of success

  11. Anthony Robbins: The Power of Clarity & Purpose

  12. Kiran Bir Sethi teaches kids to take charge

  13. Cameron Herold: Let's raise kids to be entrepreneurs

  14. The Fringe Benefits of Failure, and the Importance of Imagination, JK Rowling

  15. Secrets of a $110 million dollar man

  16. Be lucky - it's an easy skill to learn

  17. Is Your Life Just One Big RPG? Part I, Part II, Part III

  18. Anthony Robbins: Why we do what we do, and how we can do it better

  19. Sir Ken Robinson: Bring on the learning revolution!

  20. Paul Graham: The Power of the Marginal

Note: this is an old blog entry that I moved forward in time.

Saturday, April 17, 2010

Teaching as a Learning Process

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? :-)

That said, what I do know is that if we don't try, we fail by default.

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?

Tuesday, April 6, 2010

On Wealth and Execution

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

Tuesday, March 23, 2010

On Mindsets

I'm a prof. Mine is a funny business.

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":

  1. They believe in something. Sometimes God. Sometimes other things. Mostly things bigger than themselves.

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

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

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

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

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

Thursday, March 11, 2010

On Wave and the Final Project

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

Monday, February 8, 2010

Making Connections

We had a number of folks from Government organizations and the industry come down to pitch ideas for the Final Project to the students today.

My friend, Dawn, was very kind and complimented me for saying some things after each presentation to try to "make the connections", to which I replied, but that's all very natural isn't it? Learning is all about making connections what.

I didn't think too of it because it was almost an instinct, but then thinking about it a little harder -- maybe it isn't really obvious (by the way, there's actually a term for the stuff I did. Those are called "earn my pay" moments). Hold that thought.

Then I recalled another conversation I had with another colleague about a week ago. This colleague argued that the current student feedback system and ratings were "unfair" because it is plausible that you might have a good prof, who does "the right things" to help students learn, but the students dun appreciate and he gets whacked.

Before people make an assumptions that this colleague of mine is getting low teaching ratings, let me just clarify that this colleague has phenomenally high ratings -- therefore, he is saying this without prejudice.

My view (and I think this view is shared by Yanjie) is that contrary to popular belief, students actually do know whether teaching is effective. If indeed a prof is doing the "right thing", then it is also his responsibility to explain to the students why he's doing the right thing.

Back to my original point - the point I want to make about learning is that it's not about accumulating information or data, it's about making connections.

It would be nice if students can make the connections by themselves. However, given that students don't have all that much experience and are not typically mind-readers, it is often helpful for the profs to help make those connections.

I shall illustrate this principle with the Final Project pitching session we had this evening.

Random people coming to talk about random stuff. At first sight, it may all seem very random -- but it's not.

Well, CS3216 is organized into two segments: "Ideas + Skills" followed by "Execution".

The pitching session we had this evening contributes to the ideas part of the equation.

Obviously, the quality of the pitches were not equally good, but students should always pay attention to learn what's good and also learn what not to do.

Some of the folks who came didn't have a clear idea of what they wanted to do -- but that's very normal. The following is an except of a GChat conversation with Kay Hong:
me: what do you think of tonight's session? interesting?
Tay: yup but i think some companies weren't specific with what they wanted
not sure if that's a good or bad thing
me: normal
everyone wants to get on the boat
but they dun understand the boat
dun understand where they want to go
but they think the boat's cool anyway .... and they are probably right in many cases
:-)
It's true that Facebook is old news -- and that Facebook is probably going public soon. But it's also true that there are many people out there who are still trying to figure out how to exploit social networks to improve their business.

Personally, I believe that there's still significant potential for many businesses to exploit social networks. The viral nature of human relationships (think gossip) cannot be understated.

Is it easy therefore? Hell no. :-)

While opportunity is all around us, it takes effort to learn how to recognize and exploit them.

We'd follow up on this theme of "ideas" in a couple of weeks at a Pitching Party where the students will pitch to each other and former students will be invited back to share well.

For skills, we had the first FB assignment and the Google Wave assignment to get students up-to-speed in a hurry on their technical skills.

The FB app seminar we had last week is a combination of both ideas and skills. On one hand, the students are expected to think about existing apps to understand why they work (or FAIL); on the other hand, they get to learn some presentation and writing skills. Both of which will be helpful to them in the *real* world.

There will also be two more case studies coming up where students will be forced to think about user interaction (not just interface) design and also about team dynamics. These are not like technical skills, but soft skills that will help them execute their Final Project better.

"Execution" = Final Project. That's all.

But execution is perhaps the most important thing that I hope students learn. Ideas are cheap. Execution is what makes people rich (or helps them save/conquer (pick one) the world).

Since I'm blogging about today's pitching session before any of the students (lead by example), it might be helpful for me to provide a suggestion on what to blog about the session since the session might seem kinda random to some students (though students are free to do their own thing and surprise me -- just no gambling and no porn thank you).

Well, I'm really interested in (student) learning. I would be quite happy to hear from each student the (i) three things that they learnt today, (ii) why they think the three things are the most important among all the things they learnt today (hopefully there are more than three) and (iii) how they will APPLY these three things to their lives/final project/job moving forward. Simple? :-P

Sunday, February 7, 2010

The Answer is Yes

It's been a really busy week for everyone.

While the students were busy blogging about the Facebook Application Seminar, I have been busy working with Kok Wee and the Tutors on the grading of the FB assignment and also in preparing the Google Wave assignment.

I haven't had the chance to read through all the FB Application critiques quite as thoroughly as I would have liked, but I will re-read all of them over the next two weeks while I'm away in Bangkok.

Teaching CS3216 really keeps me on my toes because every batch is different.

Traditionally (i.e. for the last two batches), the 70% milestone points are like giveaways because every group will fastidiously ensure that they were satisfied. This year it's quite a mess and I decided to something never done before: get students to re-submit.

The nice thing about CS3216 is that it's a class I created and so I pretty much make the rules. More importantly, I get to change the rules along the way to adapt to surprises. I've never been a fan of dogma but it's not like I do stuff at whim and fancy either.

Why resubmission?

Reason is very simple: I have no intention of assessing students based on the three assignments: (i) FB assignment; (ii) FB app seminar and (iii) Google Wave assignment. These assignments are structured in so a way that students will LEARN stuff. As long as people learn, the objective is satisfied. The grades awarded are supposed to "punish" the idle ones who don't put in effort.

Most groups have put in A LOT of effort into the assignment and convinced me that they learnt something and so I felt that it would not be fair to punish them just because they were not kiasi and kiasu enough to get every single milestone point. Scoring for the milestone points is not function of intellect, it's merely a demonstration of diligence.

My hope is that everyone will finish the first three assignments reasonably well and all get reasonably high scores. The students will be assessed for CS3216 mainly on the Final Project.

I must say that I am very pleased with the FB application seminar this year. After three iterations, we've finally gotten it right (I have to admit that we really do it quite right the last two times). The presentations were nice and succinct and the critiques and ensuing discussions were good. Apparently students have been forced to think.

I tell my students that it's really fun being a prof -- because we get to do what we believe in. And it is in this spirit that CS3216 is conducted.

Henry asked if his group can do a Chrome plugin instead of the Google Wave assignment, the answer is yes.

Yecheng asked if he can swap the order of the Final Project and Google Wave assignment, i.e. do Final Project first. The answer is yes again (provided his GW and Final Project groups are the same).

Why not? :-)

Not that I'm a fan of Yes Man (starring Jim Carrey), but I think there's a cultural problem in our society where people ask too much for permission, rather than forgiveness. My policy for CS3216 is that pretty much anything reasonable and that complies with the high-level goals of CS3216 is possible - ask and ye shall receive.

If I should reject a request, it would be my responsibility to EXPLAIN why not. :-P

To conclude, learning is hard. And it is my belief that we are our own best teachers. So the whole structure of CS3216 is not so much in me trying to teach students stuff, but in me trying to encourage students to learn stuff on their own. When I see a post like this, it encourages me that I might just have done something right.

CS3216 doesn't seek so much to teach as to light a fire -- to convince students that they can do more than they thought they could do (before they took the class).

Yes, it's painful lah, but as they say "no pain, no gain". The reason why CS3216 works is that there's shared suffering. When you're suffering alone trying to decipher some obscure piece of code, you start asking yourself if you're an idiot. When you're sitting in COM1 with a dozen other students, it becomes an experience. Such are the mysteries of life. :-)

I would like to wish all students a very Happy Lunar New Year. While I will not be physically around to give angbaos, those who have not already gotten my comments on your FB app critiques can look forward to CNY "good luck" comments that you will be expected to respond to.

P.S. I was "supposed" to write about the FB app seminar this week, but I decide I would read through all the critiques once more in more detail first. Akan datang.

Tuesday, January 26, 2010

On Cloud Computing

While I typically blog AFTER the students have blogged, I felt pretty inspired today and I thought I would pen down my thoughts before I forget them.

I would like to thank Simone Brunozzi from Amazon for taking time to come talk to the class about Amazon Web Services (AWS) and Cloud Computing in general.

The reason why we are deploying the class assignments on AWS and why I invited Simone to give a talk to the class is because I believe that cloud computing is future (and Amazon didn't pay me to say this). I'm saying this not because the technology is cool, but because it makes business.

Simple reason: it's annoying (and expensive) run a data center. :-P

I must admit that while I have a reasonably good idea of how the technology works 'cos my area of research is networking and distributed systems, I had never used a cloud computing service before until this semester.

I believe that it would be helpful for the students to understand how it works, because while many aspects are the same as traditional servers, there are also key differences. For example, persistent storage is something that requires a little more understanding and thought, i.e. should we put the data in S3, EBS or MySQL?

While students are expected to work mainly with EC2, I hope that the students will also use the opportunity (and free credits) to explore the other AWS services that Simone mentioned.

I'm not going to talk about the technical content of the talk since that's for the students to talk about and discuss. There are three things that I would like to highlight.

One, the conversion to cloud computing will not likely be an easy one. The reason is that people don't necessarily change just because something is better. Small companies probably don't need the full capabilities of the cloud; large companies are resistant to change.

The resistance is more often than not a human rather than a technical issue. Basically, change is scary because things can go wrong. Middle management in Asia is typically conservative.

This is the question: suppose they convince their boss to switch over to cloud computing and their company saves a lot of money, will they get a bigger paycheck? Suppose something goes wrong in the process - who's going to take responsibility?

The lesson here is that it's not enough to big something bigger and better. You've gotta convince the sucker to buy it. :-)

Next, I really really pleased by how Simone answered some of the questions. Basically, to almost all the questions of "how do we do it?", his answer was "it depends".

This underscores the importance of being flexible and understanding that life is complicated and that there are often different answers to the same question "what is the best way to make data persistent on AWS?" under different situations. In a nutshell, context matters.

Finally, I was very impressed by Simone's story about him advising the customer who had 200 EC2 instances to run his own distributed file system instead of using S3 or EBS (which would cost the customer more and increase AWS's profits).

This underscores the importance of integrity in doing business.

Many of my students will probably eventually end up starting their own businesses.

My wife does not have very many good things to say about the sorts of people she has come across in the corporate world. She said that integrity is severely lacking.

I hope that however that my students will learn from Simone's example and "do the right thing". Don't screw the customer to make a quick buck. Create value and build real businesses. :-)

Tuesday, January 19, 2010

The Paradox of Simplicity

CS3216 evolves over time.

We have had a lecture on "Principles of Software Engineering" since the first year.

The first year, it was guest lecture by Prof Stan Jarzabek. It was a good lecture -- but the non-programmers complained that it was too technical and they were completely lost.

Last year, Prof Stan was busy and so I did an abbreviated version of the lecture followed by a sharing session by three students, Zi Han, Wei Man and Justin. The sharing session was quite well-received but there were still complaints that the lecture was too technical.

So when it came to this year, I thought about what we should do and decided to keep the sharing session but do the lecture differently. Thanks Zi Han, Wei Man and Justin for coming down yesterday to do the sharing session.

What I had come to realize was that it's not very meaningful to cover the principles of software engineering that students are not likely to relate to in CS3216.

Software engineering is a complicated process and mostly relates to big systems. In CS3216, the focus is more on ideas and ideas, and while it would be preferable if students produce world-class and easily maintainable code, we have to be realistic about what can be accomplished in 13 weeks.

In this light, I decided to simplify and to focus on what is most likely relevant to the students here and now. I decided that it is important to talk about stuff that the students can relate to immediately even in their first assignment.

The simplification is evident on the number of principles we discussed in the lectures. Two years ago, there were six principles; last year, there were five; this year, I only talked about three of them. So much for dumbing down.

Some students seem to think that the stuff I mentioned: (i) modularity, (ii) abstraction and (iii) design for change are quite straightforward -- and they are right. It's mostly common sense actually.

The irony of life however is that many things are pretty simple and straightforward. Strangely enough, people often fail to do what is simple and straightforward.

For example, the following lecture on Time Management by Randy Pausch says pretty obvious things:

How many people can actually do it? Personally, I can't even manage some of those things.

In this sad state of affairs however is opportunity. Basically, this suggests that many people already know how to significantly improve their lives --- they just have to DO IT. :-)

Truthfully, one of the reasons why the lecture was the way it was is because of what I'd heard about how some of the groups are doing -- some groups were struggling to distribute the work, some groups didn't know how to start and others didn't know what to do with the non-programmers. It's a learning process for everyone. :-)

Sleep matters. Finally, I'm not always serious about everything I said in class. While it is true that people can do a lot more things if they don't sleep, I am not advocating that students should deprive themselves of sleep.

In fact, research has shown, and as Li Yen has kindly highlighted, sleep deprivation hurts performance.

In fact, it's more than just sleep. Some amount of balance and moderation is necessary for life in general. Many people focus exclusively on their careers to the detriment of the other parts of their lives (family, health, friends, etc.).

While I don't believe in well-roundedness and advocate focussing on developing one's strengths, I do believe that some amount of balance is necessary in leading our lives.

Our lives are pretty short. I should know. I actually feel quite old already. :-)

Wednesday, January 13, 2010

On Success

Further on the question of success, I chanced upon the following Anthony Robbins video. Title says "Wealth Mastery" but Anthony Robbins deals with the issue of what it means to be successful and why some folks are outwardly successful, but extremely unhappy.



We were talking about failure and celebrating failure. The following is a cool story about failure and more failure and even more failure ... and then success:


Tuesday, January 12, 2010

Hard Questions

First, I would like to apologize to the class that today's lesson ended way late.

Like I said in my previous post, CS3216 is "like a box of chocolates". I never quite know what I'm going to get. Truthfully, it's pretty scary.

The Show-and-Tell this year was much longer than either of the Show-and-Tells for years' past. The main reason is that we had a *much* larger number of musicians, singers and dancers. Also, lots of the students showed stuff on their laptops.

This year was much more show than tell and those who told, told a lot. :-) Previous years were mostly tell and not so much show.

I guess I am quite good at cutting people off if they talk to much -- but I don't know how to cut people off in the middle of a musical piece.

My consolation to the class is that future lessons, except the Facebook application seminar, are not likely to go overtime. Remember that I'm the guy with the wife and two screaming babies at home.

If I keep going home past 11 pm, it will not be long before I have my ears twisted off. I think I have nice ears. I would like to keep them attached to my head thank you. :-)

Anyhow, typically I ask students at the end of the first lecture if they have questions and I expect "normal" questions.

Today, the students asked two questions and I didn't have the time to answer them so I said I would answer them in this blog. So here I am stuck with two hard questions.

First question: What is success?

Second question (asked by Wai Hong after Show-and-Tell): What is passion?

What do you do when confronted with hard questions? You Google - and I did exactly that.

I estimate that there must be at least 300 articles on success and about 30 on passion. Those with more time than me can go count and let us know exactly how many.

So obviously, people are more interested in success.

The truth of the matter is that I don't "know" the answers to the two questions. I can only talk about my impression of what they are.

I think success is a state of mind. People can be divided into two categories by their mindset: winners and losers.

The winners aren't necessarily your billionaires and often times if they aren't quite billionaires yet, they are just on their way. But this analogy seems to suggest that success is measured in financial terms. Maybe it is. Maybe it isn't. How would I know? After all, I'm a Computer Scientist, not a philosopher.

The following quote by Ralph Waldo Emerson is pretty thought-provoking:

What is Success?

To laugh often and much;

To win the respect of intelligent people
and the affection of children;

To earn the appreciation of honest critics
and endure the betrayal of false friends;

To appreciate beauty;
To find the best in others;

To leave the world a bit better, whether by
a healthy child, a garden patch
or a redeemed social condition;

To know even one life has breathed
easier because you have lived;

This is to have succeeded.

I once stocked up on copies of this book called Secrets of the Millionaire Mind and I gave them away to random students who came to see me (it's a cheap paperback lah). I've run out. Sorry.

The point of giving out this book was not so as to encourage students to become more money-minded, but to highlight to them this point I'm trying to make: success is a mindset.

Sorry I like to pick on students, but welcome to CS3216. This student for example has a mindset problem because he says "I think I am a failure".

The truth of the matter is that I knew that already. Our friend submitted a seven-page personal statement and said he "already tried to make it as short as possible". After reading every single word and thinking through what sort of a person would write what I was reading, I was not surprised to read the "I think I am a failure". :-)

Fortunately, the story does not end here. This student also says, "I don’t want to be one", which I also expected.

The truth of the matter is this: CS3216 doesn't take losers. There aren't already enough places to go around. It is only right to offer the places to those who have the potential to benefit the most 'cos I don't have any confidence that I can turn losers into winners. My goal is to try to pick the winners and try to help them win earlier and bigger. :-P

This particular student has talent. He doesn't really know what it is, but it's there. He feels he hasn't quite achieved his potential and he is NOT content with status quo. That means his mentality can be "fixed" so that he falls squarely in the "winning camp".

Let's play a little game. I know what his talent is. I suspect he doesn't. At this point, all of you probably don't either - since you don't know him well enough. Over the course of the semester, why don't you guys figure it out and do him a favour and tell him? :-)

Finally, what is passion? I think passion is a deep-seated conviction that empowers folks to do stuff above and beyond what is typically known as mediocre. It's not about what you believe, but knowing WHY you believe. No one says it better than Anthony Robbins.

I believe that I have a passion for what I do. It is now 4 am. I am dead tired. Still I blog. Enough said. :-)

Sunday, January 10, 2010

A New Beginning

Tomorrow will be the first class for CS3216. Again.

Typically, if I were to be teaching a class for the third time, I would probably be able to do it in my sleep.

Not so for CS3216.

While many people have been on vacation this past month, my dedicated teaching staff have been hard at work developing the new assignments for this year. To them, I owe a great debt of gratitude. Without them, CS3216 would not be possible.

Unlike last year, we will be introducing a new Google Wave assignment. Google Wave is so new that none of us knew how it works, and much less what it is good for - but we still have to come up with an assignment.

Also, instead of deploying their homework on the SoC servers, the students this Semester will get to deploy their work on Amazon Web Services. Truthfully, we also had no idea what this was about and we had to go find out.

But such is life.

There is the saying that if we really believe in what we're doing, then we better "eat our own dog food". So we eat.

CS3216 is about learning how to take risks and work outside our comfort zones. Why would we want to do something like that? Well, because if we do not push at the boundaries, there will be no progress - and if we do not push at the boundaries aggressively enough, there will not be breakthroughs.

So every semester we try new things. We try to make it better - though we aren't necessarily sure that we will succeed.

I was chatting with Kok Wee (course TA) after we finished CS3216 last year. I told him that I thought we did well and the feedback for the module seems to indicate so too. But it's scary sometimes when things go well, because in creeps the fear of screwing up. When things are going well and swimming along, where else do you have to go but down?

To digress, I would like to take the opportunity to address the following comment by a student last year: "I strongly suggest the last project before the Final Project be scrapped. Too much time is spent to master a totally new platform to create a new app. Perhaps it is not so strenous on non-programmers but it takes a lot for programmers to pick up a totally new platform. Although the intention is to expose the students to "evolving platforms", I feel that it is way too heavy and results in a lack of time for the final project. Overall this module feels more like an 8MC module and this view is echoed by all the students of the class. It is extremely taxing on students in their 3rd or final years where they are also pursuing their FYPs or design projects which also require an immense amount of time. While those modules are appropriately awarded with 8 or 12 MCs, this isn't. Although the student is already spending the majority of time on this, it does not translate to better scores, instead, it drags down the students' overall score as the other modules are severely affected."

Two things: (i) this student is referring to the Microsoft WPF assignment we had last year, which we have replaced this year with the Google Wave assignment. Google Wave is really just JavaScript, so life will be better this year (not only for the students, but for the teaching staff). (ii) We will continue to emphasize to the students to try to moderate the size of their projects and to avoid building the mother-of-all-projects project to take over the world. Instead, we hope that the students will deliver small but cool projects.

Sometimes, small is beautiful.

Sometimes, when we do something right/well, there are fears of not being able to reproduce past success. I would be honest and admit that these fears are quite real to me.

CS3216 really has a lot of random uncontrolled factors. Like Forrest Gump says, "it's like a box of chocolates." I have no idea what we're going to get.

However, there is also the theory of "Do or Do Not, There is No Try." Sometimes we might have concerns, but what really matters is whether we believe in what we do.

I believe. And fortunately for me, I have a dedicated TA and four brilliant Tutors, who are all ex-students of this class, and who share the same belief.

One lesson on risk management is to find the right people who BELIEVE in the same vision. I am fortunate to have found the right people and with that, we press on with CS3216 for yet another semester.

To conclude, I would like to address the issue of blogging.

It's clear to me that some students are going to find blogging a pain/chore -- and like Randy Pausch says, "if there's an elephant in the room, address it".

CS3216 is about learning. The sad thing about learning is that students can go through motion the entire time they are in college, get good grades and learn absolutely nothing. This statement might seem like nonsense, but it's true.

How does blogging help in the learning? Well, we have to go back to the psychology of learning.

The thing about blogs is that there's some ownership. When a student blogs, it makes a statement about who he/she is. Very few people want to make a statement to others that "I'm a loser".

In this light, when "forced" to blog, students will spend a lot more effort thinking about what to say and how they want to say it. It is not so much the blogging that the learning takes place, but in the agonizing over what to write where people will learn something.

They are forced to take stock of what they have heard/seen and draw conclusions. That's important. Many people go through life not thinking hard about what they have seen or heard.

I am one of the weird profs who tell my students that school is overrated (fortunately, parents don't believe that - or I'd be out of a job :-P).

Well, school is overrated, because learning is EVERYWHERE. To think that learning can only take place in school is completely misguided.

That said, given that we have job to educate our students, we should try to earn our pay.

In addition to "forced" thinking, there are two other key advantages of blogging.

One, it is important to learn to communicate in ANY job. Writing more through blogging is one way for students to practise this skill. We're not looking for Shakespeares in CS3216. People just have to express what they say in clear and concise manner.

Foreign students might find blogging even more of a pain 'cos they have to write in a foreign language. All the more better write more to improve your command of English.

Two, the blogs actually allow me to figure out exactly what people are learning and how much they are learning. Blog comments also provide me with a way to ask questions and challenge assumptions and/or clarify ideas. Students can also interact with each other and learn from their friends through the blogs.

There are many good things going for blogs - but there's no free lunch. Blogging every week requires effort and discipline.

As it turns out, I believe that teaching also requires some leadership by example.

If I am to inflict such pain on my students, I jolly well demonstrate that I can take the same pain. In this light, I will also write a blog entry every week like the students.

However, I will probably do it AFTER I have read what the students have written.

It's not because I dunno what to say and I need to check what the students have written to check market rate and because I need to "copy" from the students. In fact, by blogging after the students, I am making my life much harder 'cos the expectation is that I have to say smart things that none of the students have said. :-)

Actually, if students expect me to say "smart things," I suspect they will be sorely disappointment. My talent lies in stating the obvious (did I say school is somewhat overrated? :-)).

But more seriously, I don't want to write first because there's still a very bad culture in Singapore where students tend to think that there's some "model answer" and that the prof knows the "right answer". I suspect that if I weigh in prematurely on issues, students will end up worse off because they will be circumscribed by what I say.

To understand my concerns, see this entry. I would like to clarify that students won't "score more points" if they agree with me. No one has any need to rewrite *any* blog entries. :-)

What exactly students think doesn't really matter. What matters more is how and why they think the way they think. I'm am actually more impressed with students who come up with views contrary to mine that are backed with with good ideas and thorough arguments.

Anyway, my closing remark to the new students is this: don't complain about this blogging business. Just do it (Nike style). If you struggle with it, good for you. You're learning something and getting smarter.

I'm ready for CS3216. Are you? :-)