Monday, September 12, 2011

On Sales

While CS3216 is not a marketing class, one of the key points that I would like students to take away from the course is the importance of sales.

While the hope that is that good engineers will be able to build insanely great products that will eventually "sell themselves", the road to success is hard and often times all we have are not a real product, but a dream.

To get to the actual product, we might first have to sell that dream.

First, come the idea and then comes the execution. Sales is part of that execution.

I would like to put on record my gratitude to Yanjie for taking time off to teach a Presentation workshop last Saturday. Sadly, attendance wasn't that good.

I would like to take this opportunity to highlight two classic TED talks that I think all the students should watch and understand:



In addition, Yanjie highlighted the following clips during the workshop:






I hope that the students who missed the workshop will check out these video clips.

This Friday evening, we will be holding our customary Final Project pitching party. The party serves as an opportunity for the class to come together to celebrate the completion of half the course and also to come together to share their ideas on what they think would make for a good Final Project.

This pitching session is also about community. Many ex-students of the course will also come back and hang out. To listen to what the new batch of students have to say, to share their two cents or perhaps just for some free food and fellowship on a Friday evening.

Finally, I would like to take this opportunity to thank my trusty TA Kok Wee and the tutors Eldwin, Zhao Cong and Haocong for the work that they have put in thus far to keep the course running like clockwork. Another 7 more weeks and we'd be done with yet another offering of CS3216.

Time really flies. Hard to believe that this is already the fourth year.

Monday, September 5, 2011

On Ideas

I would like to congratulate my students on surviving the first 25% of the course with the completion of the Facebook application assignment and also the FB/iPad Application Seminar.

CS3216 follows a tried and tested formula: the first six weeks is about honing technical skills and developing ideas.

Clearly the two programming assignments, Facebook and Mobile-Cloud applications, are designed to help students pick up technical skills (both programming and design) in a hurry and I think we have done well with the FB/iPad app assignment.

At the same time, the students are also expected to apply their technical skills to explore some new ideas and hopefully, the feedback that they will be getting will be helpful to them.

I personally think that most ideas are not *completely* original. Most ideas are inspired by other ideas. Hence, it is also important for students to look around to see what's already available. Obviously, the FB/iPad app seminar was designed to do this.

Tonight, we will have having another activity that is designed to achieve the same goals. We have invited external folks to come pitch possible Final Projects to the students. In this way, the students will get a sense of what the "market" cares about.

Ideas also need "timeliness". Sometimes having an idea is not good enough. Obviously, coming up with an idea too late is bad ('cos someone would have done it), but some ideas fail because they are "too early".

Also, it is my view that engineers should build stuff and for CS3216, instead of merely building assignments that will be graded and then thrown away, I hope that the students will take the opportunity to build something real that people actually care about.

In this light, the students are welcome to work with external partners on real problems (if they want).

Obviously, there are limits on what could realistically be accomplished in a 7-week Final Project. Still, because CS3216 students are technically capable, it is not unlikely that they would be able to put together a reasonably good proof-of-concept prototype.

Hopefully, the Final Projects wouldn't just end when the course ends. Realistically, most times, they will. But I am confident that it is certainly plausible that we might see a working product that started in CS3216 someday if we try this enough times.

To conclude, I would like to say that I think it's good to share ideas. I think most people overrate their ideas. The probability that someone will come up with a completely original idea that no one else in the world has ever come up with is very low.

And in practice, coming up with an idea is the easy part. It's the execution that is really difficult and where most fail. That said, there are also some circumstances under which some stealth is a good idea. It just turns out that it's unlikely that in CS3216, these circumstances will arise.

I hope that for the duration of the course (which only has 9 weeks left really) that the students will share and generate ideas liberally.

Monday, August 29, 2011

On Peer Teaching/Learning

Since we are having the FB/iPad application seminar this evening, it seems fitting that I take some time to explain what we are trying to do with this exercise.

This is the 4th year that we're teaching CS3216 and also the 4th time that we're doing this seminar.

Obviously, I didn't quite get it right the first year and the seminar in its current manifestation is the result of several iterations.

It turns out that the seminar is not random assignment, but it is a specially designed component for CS3216 to promote peer learning.

First, since students are learning how to develop apps in CS3216, it is natural to study existing apps in order to learn the good, the bad and the ugly.

While it is easy for me to come up with a set of lecture slides articulating what is good, bad and ugly (and I did exactly that in my first year teaching CS3216), it quickly occurred to me that such an approach made little to no sense. That list is pretty common sense. Students would listen to me lecture, agree with me and I suspect would hardly remember a thing or be able to apply what they heard.

The FB seminar is the chance for students to come together to do a case study of an existing application to figure out what is good or bad about it. We hope that the very act of coming together to discuss would promote what's called "peer learning."

Thereafter, the act of presenting what each group had figure out further promotes peer learning and also helps students practise their presentation skills. It turns out that CS3216 typically have good presentation skills which is something that is helpful to learn through demonstration.

One of the mistakes I made for the first 2 years was not to control the duration of the presentations, and students then tended to ramble on and on. The seminar ran over time and learning was not optimal.

Since last year, we introduced Pecha Kucha, and the groups were "forced" to keep their talk to just 7 minutes. It turns out that this time limit has two advantages: (i) helped to ensure that class ended on time; and (ii) students are forced to think harder about what's important. :-)

Rambling is easy. Getting to the crux of what's important is hard and promotes learning.

Finally, the students are forced to focus on all the presentations because they are required to write a critique about one of the presentations (but not their own). This final act of "forced" reflection would hopefully encourage reflection and deeper learning. Students are also required to engage each other in the blogs for a week to promote further discussion.

We have no illusions that not every student would necessary learn what they are supposed to be learning in this process, but we try. While we ideally teaching to be highly uniform, information transfer is not the same as education. The efficient transfer of information is completely useless if students cannot actually apply what they learnt.

It is much more effective if students learn less but are able to apply, and more importantly, LEARN HOW TO LEARN in the process. The following lecture by a famous Harvard prof Eric Mazur probably explains what I'm trying to say in a more articulate way (for those who have the time and patience to watch the full lecture).

Thursday, August 25, 2011

On Wealth

I'm so swamped this week, it's not funny.

It turns out that I did have something to write about but didn't quite get the chance to write about it. Until now.

It is something that I said to one student -- can't recall who now -- and it's about wealth. My point: the only real wealth that we have is our time, not money.

Case in point: Steve Jobs. He is one of the richest men in the world, but all the wealth in the world will do him no good if he doesn't have the time to spend it.

And to some extent, nature is fail. Regardless of king or pauper, we get 24 hours everyday. No more, no less.

While I'm *really* *really* short of time (at least at this moment in time), I'm really not too unhappy because I am spending my time doing things I chose to do.

This simple fact is something I am actually quite grateful for. :-)

Another interesting fact is that often times, money often used to buy time. For example, we might hire a maid to help us with household or spend money on medical treatments to expand our lifespans.

Not trying to be too philosophical here, but His Holiness The Dalai Lama, was quoted to have said the following when asked what surprised him most about humanity, “he sacrifices his health in order to make money. Then he sacrifices money to recuperate his health. And then he is so anxious about the future that he does not enjoy the present; the result being that he does not live in the present or the future; he lives as if he is never going to die, and then dies having never really lived."

Back to Jobs, it seems to me that most of you will go on to live longer lives than Jobs. But what does that mean? Do you necessarily lead better lives?

If we model life as a candle, I would prefer to burn brightly for a shorter period than to be a dim glow for all eternity, but that's just me. :-)

It is now the third week of the semester and most students should have their lives overtaken by the first assignment, and very soon the second assignment and Final Projects.

What I hope that you will keen in mind is exactly why you are investing your time in CS3216. CS3216 is not to be taken for a grade. It is to be taken to learn something that will help each of you succeed in your chosen profession, or perhaps just provide you with the opportunity to understand yourselves.

10 weeks will pass in a jiffy. It always does.

I would like to encourage you to read each others blogs and to engage each other in conversation. Much of the learning in CS3216 is also peer learning.

To conclude, I quote my wife, "You can vote for the wrong President, you cannot marry the wrong woman." :-P

Tuesday, August 16, 2011

Finishing Strong

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":
  1. 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.
  2. 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).
  3. 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.

Wednesday, August 10, 2011

Confession

It is hard to imagine that again it's the day before CS3216 starts. This is the fourth time.

Every semester I get to teach CS3216, I get ulcers. This semester is likely to be worse than normal since I also get to teach CS1101S concurrently.

How cool is that? :-)

Do I not always say "what doesn't kill you, makes you strong?"

Always good to eat your own dog food. :-)

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.


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.