Before jumping in though, let's take a step back for a moment. MIT is consistently rated one of the top universities in the world for computer science and information systems. It's courses are challenging, to say the least. But, more importantly for the current context, we should also keep in mind that its courses are geared toward students who are completing degrees in engineering, physics, biology, chemistry and the like. And this orientation is reflected in its Introduction to Computer Science class in the course's focus on scientific computing, and in the choice of topics emphasized in its problem sets and quizzes.

Working through the course on their own, many people may find this aspect of the course intimidating or uninteresting, or simply irrelevant to their own individual learning goals. The next post in this series will therefore provide alternative resources to supplement the course materials that may prove of interest to people whose primary focus is not on scientific computing.

In the previous post, I worked out a time table for completion of the course which began by assuming a person would devote 10 hours of work to this project every week, and finish the course in 15 weeks. (You can also consult that post for alternative time lines.) That ten hour weekly work load was broken down in the following manner:

• Watch the lectures (2 @ 50 mins): ~2 hours

• Textbook and background reading: ~2 hours

• Recitation/discussion video tutorial: ~1 hour

• Homework problems and exercises: ~2 hours

• Free study tutorials or reading: 1-2 hours

• Free study independent projects: 1-2 hours

With that in mind, let's set up some learning benchmarks using the course's 3 quizzes as our primary guide, with the interstitial space filled in by its 12 problem sets. To begin, let's note when the quizzes are scheduled and what topics they cover. Then we'll have a general sense of how much work-time is necessary to grasp those topics.

**Quizzes**

Quiz #1 follows the 9th lecture in the course. You can find its topic list here. It covers:

- • Basic computer science terms and definitions: syntax, semantics, straight line vs. branching vs. looping programs etc.
- • Basic aspects of Python: values, types, expressions, statements, control-flow, functions, scope.
- • Basic algorithmic techniques: guess and check, linear, bisection, approximation, Newton's method.
- • Binary representation of numbers
- • Debugging protocols
- • Orders of growth

- • Big O notation and orders of growth
- • Sort and search methods and algorithms
- • Python: values, types, (im)mutability, control flow, functions/methods, recursion, objects/classes, simulations
- • Basics of statistics: standard deviation, confidence, linear regression
- • Data abstraction, debugging

- • Call stacks, exceptions, polymorphism
- • Algorithms: divide and conquer, basing, orders of growth
- • Simulations
- • Basic statistics and computational models
- • Optimization strategies

**Problem Sets**

The course also has 12 problem sets. Here we'll simply note when each is due, and what it covers:

- 0) Due lecture 2: install python, set up IDLE, write a basic program to get user info, print out that info

- 1) Due lecture 4: simple debt calculator, bisection search

- 2) Due lecture 6: successive approximation and a word game, i.e. Newton's Method and Hangman

- 3) Due lecture 7: debugging, implementing two versions of game introduced in lecture

- 4) Due lecture 10: implementing a version of the Caesar Cipher

- 5) Due lecture 12: implementing an RSS feed filter

- 6) Due lecture 14: simulating a Roomba, using classes

- 7) Due lecture 16: simulating spread of disease and virus population

- 8) Due lecture 18: optimization, topic cont'd from previous assignment

- 9) Due lecture 20: schedule optimization

- 10) Due lecture 22: clustering to analyze census data

- 11) Due lecture 24: optimization, finding most direct route between two points

**Benchmark Summary**

Let's now cross-reference the quiz schedule with the problem set schedule, and estimate the number of hours necessary to complete those assignments on the basis of our time table above. We see that:

- quiz #1 coincides with problem set #4 and lecture 10: ~ 40-50 hours of work
- quiz #2 coincides with problem set #9 and lecture 20: ~ 90-100 hours of work
- quiz #3 coincides with problem set #11 and lecture 26: ~ 150 hours of work

Great job, will definitely start this.

ReplyDeleteI have a question

ReplyDeletedid you checked the course offered in 2005 and the 2011 is better ?

I mean this course : http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/

I think both courses are comparable and cover much of the same material. I watched the first few lectures of both, and decided that I liked the overall setup of the 2005 course more (i.e. videos, lecture notes, other class materials).

ReplyDeletejust wondering, what level of programming do you think this course would help you reach. like would you be able to program apps. i would really appreciate your reply, thank you.

ReplyDeletehey Anon, that's a good question. Speaking only for myself, after I completed this course online (and even before then) I was able to write any number of little utilities and apps that were immediately useful to me in my daily life for both work and play. I work in an office environment, and was able to write programs that cut out like 5 to 10 hours of pointless spreadsheet labor on a weekly basis.

DeleteGreat post, and thank you for investing your time to outline learning curve. I started intro in CS, but have something different in mind. Is it possible to beat uni degree not by knockout, but by scoring points. To clarify, using EDx pletform to bypass some time spend in university, self paced, and some day utilise credit transfer in some university. What are your thoughts on that.

ReplyDelete