Are iTunes U ready?
I didn’t know what to expect from the Programming Methodology course (CS106A) offered by Stanford on Apples iTunes U at first. Would it be far to technical given my experience (and the entry criteria of the University)? Would it be boring? Would I even learn much, will I be wasting my time?
Following the first lecture video with Mehran all of these questions were answered, no prior knowledge is assumed, Mehran is truly one of the most engaging lecturers you will ever come across and yes, you’ll learn a lot! The course is based around the Java programming language which shields you from a lot of things like memory management and is an ideal language for a beginner. There are around 28 lectures (at approximately an hour each) with lots of problem exercise’s and a number of larger projects that gradually increase in complexity. It took me around 12 weeks to complete the course, including reading the accompanying book, in-between full time work (7-7 everyday) and the gym 3-4 time a week. With less commitment outside of the course I’d guess you could get through the material much more quickly than this. That’s not to say you should rush, this was easily my favourite of the three Stanford courses I took and you should make sure you fully understand the material before moving on to the next lecture or you’ll find yourself coming unstuck further down the line.
So was it useful, did I learn much? Well, I went from almost no programming knowledge at all (at least no Java at this point), to writing a full breakout game, consisting of over 200 lines of code, from scratch. Make of that what you will. You can see a quick clip of my breakout game from my youTube Channel below:
OK so it’s not quite the next Angry Birds, I clearly still have a long way to go. When doing some research on how best to approach learning Objective-C, the same question kept on coming up, “Do I need to learn C or C++ first?”. Most of the responses, particularly on StackOverflow were mixed with some saying yes and others disagreeing. This didn’t really help and it was clear I was going to have to make my own opinion. Sticking with the principle that I’d adopted from the start, in wanting to have a true understanding of programming, I felt more knowledge was better than less and moved onto the next in the series of Stanford courses, Programming Abstractions (CS106B), which is based around the C++ language.
Boy, was this course a step up from the cosy days of Mehran and CS106A. I guess this is one of those make or break courses. I questioned in my first blog how I would know if I was cut out for being a programmer. If you make it to the end of this course and you understand the content, you’ll have answered that question. I’ll admit that maths has never been my strong point and that some of the more detailed algorithms expressed as mathematical functions within the accompanying text book went over my head at times. This coupled with me personally finding Julie Zelenski the lecturer particularly difficult to watch, made for a tough course. That said, I came out the end of it with a much stronger understanding of programming in general, vectors, queues, maps and stacks, along with the whole header/implementation file concept (useful for Objective-C). This course takes much longer that CS106A, mainly because the projects are much bigger , adapting to a new programming language when you’ve just spent 12 weeks using Java, along with getting used to a new development environment (going from Eclipse to Visual Studio).
Finally, to crank things up a notch I worked my way through the Programming Paradigms course (CS107) ran by Jerry Cain. Jerry engaged me immediately, focusing on the C language, Jerry takes complex topics and breaks them down into easily digestible chunks. This course delves much more into the mechanics of programming, computer architecture, bits, bytes and even assembly language. Any grey areas you might have had on ‘pass by reference’ or ‘pointers’ are completely irradiated here as the covers are lifted. I found myself watching some of the lectures a couple of times and although there’s no accompanying book with this course, Jerry’s projects are tricky, not to mention his Mid-term and final exams!
Only now, 12 months later, with a fairly strong knowledge of programming did I feel the time was right to start picking up Objective-C, which I’ll talk about in my next post.