How to choose your first ‘online’ programming class?

(Originally published on Tumblr, long time back)

My first ever online programming class was CS101: Introduction to Computer Science on Udacity. Before CS101, I had never coded in my life.

I did have two opportunities to learn to code though, but somehow I let them pass,

-I opted for Biology instead of Computer Science as part of my High School curriculum, partly out of interest, partly because Biology students scored higher in their exams. (PS: I scored 93/100)

-I had a fantastic opportunity to learn programming language ‘C’ in my 1st year of engineering. Instead I crammed some programs and barely passed. (PS: I scored a ‘C’ grade in my ‘C’ exam)

Having established my ‘amazing’ track record with programming, it’s fair to assume that I approached CS101 with trepidation. Yes the trailer/promo of the course looked slick and inviting, the tagline was intriguing — ‘Build a Search Engine’, the professor David Evans sure looked like a bundle of raw energy but I still had my doubts.

Was I able to finish the course? Yes.

Was it a smooth, easy journey? Hell No.

I finished the course on my 3rd attempt. I stumbled on Unit-3 a couple of times. Unit-5 on hashing/dictionary implementation was very interesting but tough for me. Understanding a single ‘Page-Rank Algorithm’ took me 2–3 days. But finally I was able to finish the course.

But if everything was against me, including my own track record, how was I able to complete the course. Was it because guest appearances by Sergey Brin kept me motivated? Was it because Anna Patterson was simply amazing explaining the difference between Depth First Search and Breadth First Search? Was it because the course’s TA was super helpful and super attentive to my needs?

Yes, all the above were factors: Who doesn’t get motivated by Sergey Brin? However the following two factors predominantly outweigh others,

  • David Evans as the course teacher,
  • The ever helpful course forum.

David kept the videos interesting, had the knack of asking the right things at the right time, invited awesome guest speakers and never assumed his audience was dumb. He also made us aware of our progress, how much we had built, how much was left and the key things to be learnt in each unit. Thanks David!! Wish my every teacher was just like you.

The forums were super, super helpful. People took care of each other, no question was berated and hand-holding was available in dollops. The moment you were stuck, help appeared magically.

This brings me to a key point: How do you choose your first programming course, given a plethora of resources and options. How do you ensure that you remain on track for 5–6 weeks and complete the course.

According to me, keep the following things in mind,

1) Research your options well. When I started, there was only one introductory course, on Udacity. Every major study platform now — Coursera, Edx , Udemy etc has their own version. Simply be aware of all these courses. Because when you do your homework well and research all options, you tend to feel a little more content and satisfied. Don’t we all love our clothes a little more when our shopping research is extravagant. You will definitely stick to your ‘course’ a little longer when you are aware of the entire terrain.

2) Read reviews. You have imdb and rotten tomatoes for feature films. Similarly you now have coursetalk and class central for online courses. Bookmark them and frequent them thoroughly. Learn from the wisdom of the crowd. (P.S. Don’t worry people have positive things to say about Udacity’s CS101)

3) Read the course forums. Before starting any course, read the course forums for general complaints, people’s prior background, prof’s handwriting etc etc. You are definitely going to invest 4–5 weeks on your first programming course, don’t be stingy with this research.

4) Don’t choose a course for any specific ‘language’. Established programmers have these cult-wars where they fight for their language and it’s supremacy : Ruby better than Python, PHP a dying force, Javascript the future conqueror. Spare yourself, you are just a newbie, leave these wars to experienced programmers. Don’t start a course in a certain language because your neighbour is doing it, the returns will be great, or because glassdoor or payscale tells you to do it.

But, most importantly,

5) Follow the teacher that excites you the most. Go by your gut, be driven by your instinct. You like David Evan’s tenacity take Udacity’s CS101, you like Nick Parlante’s energy, take Coursera’s CS101, you like David Malan’s antics take Edx’s CS101. Your teacher is going to be the central part of this endeavor, he is going to drive the course, trust him, take a leap of faith with him.