At MIT, the one-semester intro programming class, 6.00, can be broken into two six-week halves, 6.0001 and 6.0002. My first attempt at getting credit for 6.0001, by taking an advanced standing exam, didn’t go so well.
Like many MIT freshmen, I liked being good at things, and I liked being ahead of my peers, so this came as a disappointment. I resolved to take 6.0001 the normal way and exact my revenge on the placement test that had wronged me. I took it freshman fall on Pass/No Record, and I passed. The freshman credit limit prevented me from taking 6.0002 that fall.
6.0002 is actually not required for the computer science major, and I was a comp sci major for my first ~2 years at MIT, so I didn’t take it freshman spring either. Instead, I took 6.042, a discrete math class.
Sophomore fall, still a computer science major, I took four computer science classes, none of which were 6.0002. One of the four was 6.009, the second class in the programming sequence.
Sophomore spring, I took 6.031, the third class in MIT’s programming sequence, which is also, in fact, not 6.0002. I also switched majors to aerospace engineering. I had a long list of requirements to complete to graduate on time. This list included 6.00, or alternatively, 6.0001 and 6.0002.
When my advisor asked me to make a graduation plan, at the start of my junior year, I scheduled 6.0002 for senior fall.
However, 6.0002, like doing my taxes, seemed like something to avoid for as long as possible. I considered trying to substitute another class I’d already taken. I considered pushing it to the last six weeks of senior spring. I considered just begging my department to let me off the hook. I had finished a computer science minor by accident! Isn’t that enough? Would the 6.0002 lecturers even let me take it, considering I had already taken more advanced programming classes (6.009 and 6.031)? It didn’t seem fair.
Junior fall, as planned, I did not take any programming classes. Instead, I tried to catch up on aerospace requirements that I had missed out on taking earlier.
Junior spring, I did not plan on taking any programming classes. I wanted to do research and learn about space. I was also looking forward to a fun and eventful spring rowing season.
But then, everything changed. With no rowing and no access to campus, my plans were destroyed, and I found myself with unexpected free time in the second half of the semester. I could have, of course, dedicated this time to reading the news and feeling sad, an art I had mastered during spring break.
However, a specter was haunting my graduation plan, the specter of 6.0002. Swayed by the promise of pandemic PE/NE grading, I reluctantly decided to spend the last six weeks of my junior year writing basic Python scripts in my parents’ basement.
And I passed! My junior year is over. My plans for the spring semester may have been wildly derailed, but at least I can say with confidence that I have finally, after two-and-a-half years, mastered programming in Python at an introductory level.