Let me start by saying the courses I’m reviewing are currently still open for enrollment, so head over to Fundamentals of Computing path from Rice University on Coursera if you’d like to join, and if you’re on the Eastside of the Seattle Area, come join my study group!
Background Knowledge: Where I was with MOOCs Before This Coursera Course
Prior to recently, any Coursera course I was interested in wasn’t available while I was available for it. That has all changed. As anyone who has read my blog before knows…
…I haven’t had a great deal of love for MOOCs and other online learning modules such as Treehouse, Udacity, Udemy, Codecademy, and the likes, because I continuously felt like everything was dumbed down to make it accessible to everyone including people who may not be able to continue grasping the content once they got tougher or had to apply it to any independent project because of all the hand-holding. That is, they intentionally avoided causing situations where people would think, failed to teach them any actual skills and instead set people up to be great typists, or were structured so bizarrely that the independent work paired with the content was inappropriate either due to providing no challenge and just regurgitating what was just learned or due to not working on content recently learned to help solidify student independence.
So between slow pacing, bad pedagogy, and redundancy, I inevitably said books were the way to go and abandoned everything else.
I’m not taking that back, by the way, I still think books are amazing and so much more efficient than certain MOOCs. I even continued to find them better than the MIT opencourseware, but that might have been due to a number of MIT’s classes I was interested in required fancy hardware I didn’t have access to, so I had to walk away with my head hung in shame.
The Course: Fundamentals of Computing
I had asked a friend about her recommendations for basic CS books to read up on. While she has an undergrad degree from University of Waterloo, she’s generally very supportive of my independent-study approach to my career change. That said, she did think that basic CS such as algorithms, data structures, etc was best handled through a class of some sort and recommended the Fundamentals of Computing path from Rice University on Coursera.
Dictionaries, tuples, etc were new, but not so novel I couldn’t read briefly about them and apply them, so so far this hasn’t been an issue. If you have a fairly solid background in another language, I encourage you to do the same.
I hadn’t very high hopes after my previous encounter with MOOCs, and after the first week being incredibly easy and simple (much like the first week of class in undergrad where you get a syllabus and rules handed to you), I still believed this might be the case. Then came week two.
I had used the Coursera forums to set up a study group with a couple people in my area, and while working on the project spent some quality time in a Starbucks with my classmates. I legitimately felt like I was back in college again. I was thinking about problems that were challenging to me, collaborating with my classmates, and as is my favorite part of programming, celebrating resolving puzzles and testing to make sure it still functions in fringe cases and bug free.
The setup was very typical of MOOCs, but also included some elements often neglected. All three of the classes have the same basic requirements.
- Weekly video lectures, around an hour in total.
- Homework (some basic coding questions, math questions, etc)
- Mini-projects (make a program! This week, we made 2048)
The weekly video lectures are well done. In most MOOCs like Treehouse, these are usually high quality though sometimes redundant. From MIT’s Open Courseware, they were slow and involved a lot of the professor stumbling in the middle of a lecture hall and not the best sound quality or video quality. Here, there is minimal wasted time (and any waste is usually entertaining, nerdy jokes), easy to view in double time, and the lectures are concise but give you the necessary information interlaced with Udacity style mini-quizzes. The professors know what they want to tell you, and they tell you it concisely.
Homework is beneficial but not excessive. It reviews concepts or has you review math that you likely haven’t done in over a decade if you’re the same age as most MOOC users, and helps you get in the right mindset for the mini-projects.
Mini-projects can be simplistic depending on whether or not you’re trying to program without eating lunch (whoops!), but they’re challenging enough that you feel as though you’d applying your learned skills in a unique problem that you need to solve. I currently feel like there’s a bit too much hand-holding, but part of machine grading is that you need certain structural elements present in order to assess whether or not it meets the requirements, so to some extent this is unavoidable in some of the classes, especially when trying to accommodate so many mooching students.
MOOCs have an important place in the accessibility of education, in my opinion, but a lot of them have a long way to go to being actually beneficial. Fundamentals of Computing from Rice University is an example of the practice done very well without dumbing everything down.
I have to say I currently love it. I’m not sure if it’s because the forums are so active with students collaborating or study groups make me happy, but I’m pretty certain it’s because I’m learning a lot and enjoying it.