Basic Course Information and Schedule
Please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.mit.edu) to authenticate, and then you will be redirected back to this page.
Table of Contents
1) Description, Prerequisites, and Major Requirements§
From the subject listing and schedule:
Introduces fundamental concepts of programming. Designed to develop skills in applying basic methods from programming languages to abstract problems. Topics include programming and Python basics, computational concepts, software engineering, algorithmic techniques, data types, and recursion. Lab component consists of software design and implementation.
An understanding of the basics of programming and the basics of the Python language are necessary prerequisites to this course. 6.100A (or 6.100A Advanced Standing Exam), 6.100B, or 6.100L can serve as the prerequisite.
This prerequisite is strictly enforced. If you have not met the prerequisite for this course, you will not be able to submit assignments in 6.101.
Course 6 and Institute Requirements
6.101 is a prerequisite for 6.102 and a co-requisite for 6.121.
6.101 is required for 6-3, 6-4, 6-7, and 11-6 majors. It can be used as an option to satisfy one of the degree requirements for 6-2, 6-9, or 6-14; and it can also fill one of the requirements of the Minor in Computer Science.
6.101 satisfies the Institute Laboratory requirement.
2) Required Materials§
There is no required textbook for this class. Everything you need will be made available through this web site throughout the semester, through the course readings, recitation materials, and assignment writeups.
If you are looking for additional materials, the following are books/resources that others have found useful in the past:
- Debug It!: Find, Repair, & Prevent Bugs in Your Code, Paul Butcher, The Pragmatic Bookshelf, 2009
- Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems, David J. Agans, AMACOM, 2002
- Why Programs Fail (2nd edition), Andreas Zeller, Morgan Kaufmann, 2009
3) Weekly Schedule§
3.1) Weekly Components§
A typical week in 6.101 consists of several components, described below. These times may shuffle around a little bit for holidays and exams (see the calendar for the specifics), but a typical week consists of the following components:
Programming Assignments ("Labs")
A new lab will release each Friday afternoon and come due the following Friday afternoon (with late submissions accepted until Sunday night for partial credit). Note that the labs are substantial programming assignments, and we expect that, in the average week, the average student will spend 8-10 hours working on the lab. As such, we strongly encourage you to start early!
For the labs released before the first midterm, a brief checkoff conversation is required to get credit for the lab. You can complete your checkoff during any open lab hours time between the lab's due date and the following Wednesday.
Each lab will have an associated reading designed to introduce concepts relevant for that lab. This reading will release on the Wednesday before each lab, and it will contain exercises that will be due on the Monday before the associated lab is due.
Each lab will also have two associated recitations:
A "midpoint" recitation on Wednesday, designed to reinforce relevant ideas from the readings and provide additional examples related to the lab.
A "wrap-up" recitation on the Monday after the lab has come due, to recap the lab with a focus on the big ideas we hope you take away from the lab, including an opportunity for feedback and discussion about code style and organization.
- Section 0: 9am-10am in 36-156 with Adam
- Section 1a: 10am-11am in 36-156 with Adam
- Section 1b: 10am-11am in 36-155 with Karen
- Section 2a: 11am-12pm in 36-155 with Karen
- Section 2b: 11am-12pm in 2-190 with Rob
- Section 3a: 1pm-2pm in 3-270 with Rob
- Section 3b: 1pm-2pm in 36-112 with Max
- Section 4: 2pm-3pm in 36-112 with Max
- Section 5: 3pm-4pm in 36-156 with Hope
Open Lab Hours
At multiple times during the week, we will have open lab hours, which are a time to come and get help from course staff as you are working through the lab. These are intended to be a time to get conceptual questions answered, get help with making a strategy for tackling a lab, get help with debugging your code for a lab, or get specific feedback about your code after a lab is done, among other things.
This semester, we are offering open lab hours at the following times and locations:
- Tuesday 7-10pm in 34-501
- Wednesday 7-10pm in 34-501
- Thursday 7-10pm in 34-501
- Friday 10am-1pm in 34-501
- Friday 2pm-5pm in 34-501
- Sunday 1pm-4pm in 34-501
Please also note that, when lab hours are busy and a lot of people are asking for help, we may prioritize helping students who have completed the relevant readings and participated in the relevant recitations.
We will also offer additional open lab hours until the first midterm exam, on Mondays from 7-10pm in 34-501. These times will not be available after the first midterm.
Instructor Office Hours
Additionally, each section instructor will offer at least one hour of office hours each week for conceptual help. Unlike open lab hours, these times are not intended for specific help with your code for a lab, nor for checkoffs, but rather for conceptual questions.
Instructor office hours are available at the following times or by appointment (e-mail your recitation instructor):
- Hope: Wednesdays 4-5pm in room 36-156
- Max: Thursdays 12-1pm in room 24-326
- Adam: Wednesdays 1-2pm in room 38-559
- Rob: Thursdays 11am-12pm in room 32-G718
- Karen: Mondays 1-2pm in room 32-G534
The following diagram shows a typical week (with surrounding weeks greyed-out around it) to illustrate the flow of the course. Note that labs released after the first midterm will not require checkoffs.
4) Midterms and Final Exam§
6.101 will have two midterm exams, held on Wednesday evenings during the semester from 7:35-9:25pm:
- Wednesday, 11 October
- Wednesday, 15 November
We will have a final exam during the final exam period.
Please plan your schedules, including holiday travel, around these dates. We will send instructions for requesting conflict exams in the time leading up to each of the exams.
The Registrar will schedule the final, usually by the third week in the term. It is important that you plan to be available for all of the week days from Monday, 18 December, through Friday, 22 December, as our final exam or conflict final exams may be scheduled on any of those days.