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.
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
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
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