MIT 6.100A: Introduction to Computer Science Programming in Python
6.100A, formerly 6.0001 (the number most search results still use), is MIT's half-semester introduction to programming in Python for students with little or no experience. The 6.0001 lectures on OpenCourseWare are among the most popular free programming courses anywhere.
Fennie is independent and not affiliated with MIT. This is an unofficial study guide.
What makes it hard
The pace, not the content: MIT compresses a typical intro course into half a semester, so recursion and object-oriented programming arrive within weeks of your first loop. Self-learners on OCW most often stall at the problem sets, which require writing real programs rather than filling in blanks.
What you'll cover
- • Python fundamentals
- • Branching and iteration
- • Functions and abstraction
- • Recursion
- • Lists, dictionaries, and tuples
- • Object-oriented programming
- • Testing and debugging
The 6.100A study guide
How to study for MIT 6.100A, step by step.
- 1
Code along with every lecture
In 6.100A on campus or working the 6.0001 lectures on OCW, pause and type the examples yourself. Watching Python is not learning Python, and the half-semester pace leaves no room for passive viewing.
- 2
Treat the psets as the course
The problem sets are where the learning happens; the lectures just set them up. Do every one completely, even self-pacing. Skipping psets cuts the value of the course drastically.
- 3
Practice daily through the compressed schedule
Recursion and object-oriented programming arrive within weeks of your first loop. Short daily coding sessions keep the concepts compounding instead of collapsing.
- 4
Give recursion and OOP extra reps
These are the two ideas that arrive fastest and stick slowest. Write several small recursive functions and toy classes beyond what the psets require before moving on.
Today
Today's 6.100A plan
What a Fennie Daily Plan looks like for 6.100A. Yours is built from your own syllabus and adapts every day to your deadlines and progress.
First plan free, no card required. Fennie is independent and unaffiliated with your school.
FAQ
Is 6.0001 the same as 6.100A?
Yes. MIT renumbered 6.0001 to 6.100A when EECS overhauled its course numbers in 2022. The OpenCourseWare version is still published under 6.0001 (and 6.100L for the full-semester pace).
Is 6.100A hard for beginners?
The material is beginner-targeted but the half-semester pace is intense. Students and self-learners who write code daily keep up; watching lectures without doing psets doesn't work.
How long does 6.0001 take to self-study on OCW?
Most self-learners take 6-10 weeks at a few hours per day, including the problem sets. The psets are the course; skipping them cuts the value drastically.
More MIT courses
6.006: Introduction to Algorithms
6.006 is MIT's core algorithms class, covering sorting, hashing, trees, graph algorithms, shortest paths, and dynamic programming, with emphasis on both rigorous analysis and Python implementation. Its OpenCourseWare lectures are a global standard for learning algorithms and prepping technical interviews.
6.046J: Design and Analysis of Algorithms
6.046J, renumbered 6.1220 in MIT's current catalog but still searched overwhelmingly by its old number, is the advanced algorithms course following 6.006: divide and conquer, randomized algorithms, amortization, network flow, approximation, and complexity. The OCW lectures are a staple for advanced self-study.
6.042J: Mathematics for Computer Science
6.042J, now numbered 6.1200J, is MIT's discrete math course for CS: proofs, induction, number theory, graph theory, counting, and discrete probability. Its OCW versions, with full lecture videos and the famous free textbook, make it one of the most-used discrete math resources in the world.
6.1010: Fundamentals of Programming
6.1010, formerly 6.009 (the number much of the internet still uses), is MIT's second programming course, where Python fluency from 6.100A gets turned into real software through substantial weekly labs: audio processing, image filters, graph search, interpreters. It's the bridge between knowing Python and engineering with it.