MIT Introduction to Computer Science and Programming
“MIT 6.00 — Introduction to Computer Science and Programming” is one of the best introductions to programming I’ve seen, and I guess I shouldn’t expect less from the Massachusetts Institute of Technology. 24 video recordings of Computer Science lectures (totalling roughly 20 hours) by Professors Eric Grimson and John Guttag, current and former heads of Electrical Engineering and Computer Science at MIT. The course focuses on, quite simply, teaching you how to think like a programmer and solve problems computationally. Historically, LISP was the language of choice for Computer Science introductions at MIT, but was since replaced by every imperative programmer’s new darling, Python.
To quote the overview given in the first video, the course revolves around:- Computational thinking
- Understanding code
- Understanding abilities and limits
- Mapping problems into computation
I highly recommend watching this if you’re new to programming, a hobby programmer, or even if you’re pretty well-versed — I’m sure there are nuggets of useful information inthere for everyone. Give Lecture 1 a look; if you like it, I’ve embedded the entire course after the jump, but it can also be found on the official course website, along with assignments, exams and solutions.
Lecture 1: Goals of the course; what is computation; introduction to data types, operators, and variables
Lecture 2: Operators and operands; statements; branching, conditionals, and iteration
Lecture 3: Common code patterns: iterative programs
Lecture 4: Decomposition and abstraction through functions; introduction to recursion
Lecture 5: Floating point numbers, successive refinement, finding roots
Lecture 6: Bisection methods, Newton/Raphson, introduction to lists
Lecture 7: Lists and mutability, dictionaries, pseudocode, introduction to efficiency
Lecture 8: Complexity; log, linear, quadratic, exponential algorithms
Lecture 9: Binary search, bubble and selection sorts
Lecture 10: Divide and conquer methods, merge sort, exceptions
Lecture 11: Testing and debugging
Lecture 12: More about debugging, knapsack problem, introduction to dynamic programming
Lecture 13: Dynamic programming: overlapping subproblems, optimal substructure
Lecture 14: Analysis of knapsack problem, introduction to object-oriented programming
Lecture 15: Abstract data types, classes and methods
Lecture 16: Encapsulation, inheritance, shadowing
Lecture 17: Computational models: random walk simulation
Lecture 18: Presenting simulation results, Pylab, plotting
Lecture 19: Biased random walks, distributions
Lecture 20: Monte Carlo simulations, estimating pi
Lecture 21: Validating simulation results, curve fitting, linear regression
Lecture 22: Normal, uniform, and exponential distributions; misuse of statistics
Lecture 23: Stock market simulation
Lecture 24: Course overview; what do computer scientists do?
Thank you, MIT, for making your courses open like this.
For more information, see the course website. You can find more OpenCourseWare on the OpenCourseWare website.