Free Online Coding Courses at Stanford University
It’s great to have free online courses like these. I’ve been wanting to learn iOS development for years and now finally I have a clear path and something that challenges me. I’ll do the 3 courses at Stanford, 106A & B and the iOS development course in the coming months. It’ll be great.
I’ll post my advancement here for all to see. I was actually to lazy to do that all the time, but I’ve done it for most of the course. There’s nothing like a bit of peer pressure and exposure to fight procrastination.
- Lectures 1 and 2
…were easy on the theoretic side, but the assignment wasn’t too easy. I had to think hard about how to solve the decomposition problems in 3 and 4 for that first assignment. My solutions to number 3 and 4 of that first assignment are pretty elegant, I believe, and they work in many different worlds (all that I tested worked fine).
- Lectures 3 and 4
…were ok, but the Java textbook says pretty much exactly the same as the teacher does in his lectures. I solved the problem on paper first and it was easy.
- Lectures 5 and 6
…were also ok. The Java textbook is long to read, I think. It hold loads and loads of information, and I should soon start building myself a reference library of the programming idioms shown in there in order to keep them in my head. The assignment is difficult. I’ve taken 1.5 hours for the first two problems alone. The overall time is probably about 4 hours for all of the problems.
- Lectures 7 and 8
…were both a little technical but definitely doable. Unfortunately, the content in the course is becoming a bit too much to remember it all, so I may need to think about a way to keep all of that in my head. Maybe a digital PDF folder with the important files to look through.
- Lectures 9 and 10
…are harder to work through with the big assignment 3, the Breakout game. It’s big, but in one day I was able to set up the bricks, paddle and get the ball moving. We’ll see how it goes from here. The lecture plan is not that perfect, though, because I wanted to finish the assignment before moving on to the lecture 10, but I needed to watch the video to see how to use addMouseListeners(). On August 1, I finished the breakout game code successfully, including speeding up the ball, adding a score counter for the brick number and messages on how many turns remain before the game ends. On to finish lecture 10, and then go on! I’ve already done 1/3 of the entire course. Nice. I need to start collecting code snippets in my text expander, though.
- Lectures 11 and 12 (August 10)
…are easy to do, they’re quite manageable. But I don’t know if I’m advancing as rapidly as I’d need to in order to finish the course in 10 weeks. Let me calculate that. Since July 4, the publish date of this post, 5 weeks have passed, so half of the time is over, but I’m only at Lecture 13 now of a total of 28, so I am slightly behind. But we’ll get there, eventually.
- Lectures 13 and 14 (August 18)
Since I’ve had quite a bit of work I didn’t advance as fast as I would have wanted to, but I’m getting there, albeit slowly. I am now working on the hangman assignment and I’ve already got the console part of the program working (August 20) and I’ll try to implement the rest today as well. Then I’ll be on my way for lecture 15 tomorrow.
- Lectures 15 and 16 (August 25)
I got through the hangman code easier than expected, and I start copy/pasting code more often now from parts of programs that I’ve already used. This makes it easier to advance quickly. There are still some issues with my hangman code, because currently every guessed letter is only being replaced once and not every time it occurs in a word, but somehow I’ll solve that, too. I’m now doing the problem set 5 before moving on to the next lecture.
- Lectures 17 and 18 (August 26)
The lecture digestion is obviously speeding up. I have completed problem set 5 with ease, and I’ll have to do the midterm preparation exercises, and then I’ll go on with lecture 18. Learning how to manually, pixel-by-pixel, transform a colour image into a black and white one, was very interesting. Kudos, Professor Sahami.
- Lectures 19, 20, 21 and 22 (September 14)
I’m working on the Yahtzee assignment and my regular two-lecture-updates have become scarce because I’m jumping around a bit between lectures and not following the plan that strictly anymore. In addition to this, I’ve decided to go and take actual courses provided by the Ministry of Education for Java programming and web development, which will allow me, after 3 years, to get a diploma stating that I’m an actual Java developer, just in time for the end of my master studies at university. 2015 is going to be damn great, methinks.
Update November 17: I’ve been a bit busy and had trouble doing regular work, but I’m back now to finish the course and get on with it to start the next one soon. The Interactors program (Handout n°7) is not entirely functional in my code. I’ll try to get assignment n°6 right, though.
- Lectures 23 to 28 (April 28)
Obviously I’ve been slacking a bit here. I could have finished a lot earlier (the original courses takes about 10 weeks if you go to Stanford) but the most important thing is I never stopped and I actually got through it. I also feel pretty confident about my programming abilities, since the course has essentially taken me from nothing at all to being able to program actually useful apps and simple games. The only negative aspect here is that it’s Java, and that’s not the language that most successful apps are nowadays written in. I’d like to go on with CS106B next to learn C++ which is the language Mac OS and iOS apps are written in, so that’s going to get me a lot closer to programming for the iPhone, which is what I ultimately would like to try.
To sum up the course CS106A: It’s a WONDERFUL course, the best thing I’ve encountered to learn the basics of programming and because of the videos and assignments it actually feels like going to class. I definitely recommend this to all the people who’d like to start programming without knowing where to start. To me it has been the perfect roadmap.