16 Oct 2013
Shortly before the end of my internship at BillPin, I was introduced to Calvin Cheng. I was told that Calvin is a founder of several successful startups, which is a pretty amazing thing. I had a great chat with Calvin, and it’s really nice to see that there are people in Singapore who are passionate about up and coming technologies (some would say it’s already proven, depending on who you ask) such as Scala. I also found out that he organizes weekly sharing sessions on Fridays, inviting speakers to give a talk on their own expertise, mostly to do with an area in computer technology.
With some of my colleagues, I sat in for a sharing session on AngularJS; it was ok, most of the things I’ve learnt from my work. So it was then that I discovered that Calvin is really technical, discussing some AngularJS details with the speakers, and editing some code for one of his products to use better AngularJS practices, kind of like a mini code review session. I was like, wow. It’s quite rare to see someone in a leadership position care about all these nitty gritty details and understand that such details are one of the key difference makers.
Somehow, one thing led to another, and I was invited to be the speaker for a sharing session on algorithms. I gladly accepted this opportunity, seeing how I’ve enjoyed some really good algorithms modules taught by Steven Halim, one of my mentors at NUS. (Side note: If you are a CS student at NUS, I highly recommend you take his modules)
So the sharing session happened on a sunny 11 October afternoon. The slides can be found here:
It was really challenging to prepare for this. But the main challenges are as follows:
To address these challenges, I decided to focus on a few things:
As with a lot of things in life go, you may start out thinking like this:
“Hey, I’m on a beach, the ocean seems pretty nice… how nice would it be if I could just go into the ocean…”
But for all you know, when you do actually go in, you may be heading straight into this:
And that was exactly what happened to me. I still feel quite apologetic to those who attended the session and expected something more.
First, let us take a look at an overview of what I decided to cover:
You can probably tell that I didn’t finish on time, given this long list of topics. In fact, I greatly exceeded the time allocated and I stopped at the end of the NP-Completeness portion. So it is to my horror that I discovered that I was already 45 min into the session when I reached the section on Breadth First Search… Soon, I started seeing people leaving (due to time constraints), and everything just went downhill. Thanks for those who stayed till the end.
Some key mistakes:
So if you are a really smart CS student and wondering why your lecturer cannot go faster, it’s really not that your lecturer doesn’t want to go faster, but that he/she cannot go any faster. You can only cover 1 or maybe just 2 topics in detail within a span of 1 to 2 hours. Trying to do more will be suicide. This is speaking from my very disastrous experience.
Some reasons for the choices of topics:
I promised to upload the slides somewhere, so here’s the link again:
which is, kind of abusing Github. Actually, nah. That is to be followed up in the next post.
On a serious note, I think the slides may make for some ok reading. Come to think of it, I was reading through it all the while I was preparing them, so maybe it seemed natural to me that I wouldn’t exceed the time limit. Ah well. Verdict: TLE. Time to think of better algorithms to get AC.
On closing, if you do know of good talks on algorithms that take up 1 hour or less, preferrably not in some really specialized area, I will be interested to know more.
Big thanks to Calvin for giving me this opportunity. I sure hope I didn’t decrease everyone’s interest in algorithms.
Big thanks to Steven for sharing his knowledge with the world, and kindling my interest in algorithms.
And to those who came down for the session; I truly appreciate it.
Disclaimer: Opinions expressed on this blog are solely my own and do not express the views or opinions of my employer(s), past or present.