Course Information
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.
1) Course Policies for Fall 2026 (this page may update up to the start of the course)
Welcome to 6.100! Our goal is to impart basic skills in programming and introduce some fundamental concepts in computer science. Programming and computer science are gigantic fields; we can only show you the tip of the iceberg. However, we hope you will leave with newfound confidence in solving problems computationally and understanding how computer programs work.
Lectures for the class occur from 3PM to 4:30PM in 54-100 on Mondays and Wednesdays. No recordings/Zoom options.
6.100 is a new and combined version of what used to be two half-semester subjects, 6.100A and 6.100B.
While 6.100 has no formal prerequisites, it is intended for students with at least some prior exposure to programming. Experience has shown that some students with no programming experience may find 6.100's pacing quite fast. In such situations, we recommend taking 6.100A first, which allows more time for building programming skills, and then 6.100B or an alternative in a subsequent semester.
If you feel the first few weeks of 6.100 are too moving quickly for you, please reach out soon about switching to 6.100A. Conversely, if you originaly registered for 6.100A, but feel you could be learning more, consider switching to 6.100.
2) Typical Class Flow
This is a blended learning class (students read and complete a page on our website at home and come to class prepared), with active learning during class time. Login to view: Click to see a set of slides on why we do this.
- BEFORE CLASS: Go through the page linked on our course calendar. At the bottom of the page, you may leave a comment on parts you find confusing, interesting, funny, etc. (this counts as participation!) This gives you the basic concepts for that lecture.
- IN-CLASS: Come to class prepared. We will discuss the lecture topic and do in-class exercises, showcasing key ideas from that lecture. This "in-class content" link in our course calendar is due by end of next day. (this counts as participation!)
- IN-CLASS: Some lectures will have microquizzes. They will typically start in the latter half of the class (no specific time guaranteed) and go for approximately 30-45 minutes.
3) Class Attendance and Office Hours
Our modes of instruction are through lectures, recitations, and office hours. These are available only in person; there will be no recordings or Zoom option. Experience has shown that students and staff have more meaningful experiences in person.
Some lectures days will hold microquizzes in-person, starting sometime in the second half of class time. These lectures are noted on the calendar.
Participation will contribute to your grade. If you show us that you are putting in effort into this class, then you'll get full points for this grade. These are the following ways that you can get this grade. You do not need to do ALL of these for the grade, just show effort in learning the material:
- attempt the website pages before each class time
- submit comments in the comment boxes (both before and in-class)
- raise questions or comments during class time
- do the in-class exercises during class time
4) Lectures
Class material will be presented through a mix of discussion, code, slides, and chalkboard, so be prepared to take notes!
The day prior to each lecture (with the exception of the first one), you will have access to a page on our website. This page may contain videos, exercises, and text for you to review and attempt in advance. It's ok if you don't fully understand it, but you should try it. We will begin each class with your thoughts on the code, and then develop it into further concepts and examples.
For most lectures, the course calendar lists associated sections in the textbook below. These readings can be an excellent resource for additional perspective or examples. The book is available both as a hard copy and as an e-book from MIT Libraries, with code and errata online.
Guttag, John. Introduction to Computation and Programming Using Python, Third Edition, With Application to Computational Modeling and Understanding Data, MIT Press, 2021.
5) Recitations
Recitations are held on Fridays, with times and locations posted on the main page.
These sessions are led by TAs, who will review and extend the week's lectures. Recitation attendance is expected and you will be responsible for the material covered.
Like with lectures, code will be posted on the calendar right before the first recitation. However, there is no pre-recitation code to review in advance.
6) Office hours
Our TAs and LAs staff office hours throughout the week to help with course material and problem sets.
Office hours are posted on the main course page. Office hours may be canceled some days due to holidays; these will be noted on our calendar.
When you arrive at the room, add yourself to the Help Queue in our website's menu bar. You must be logged in via your MIT Kerberos account to access the queue. If you are having trouble, speak with the TA-in-charge in the room.
7) Finger Exercises, Problem Sets, and Microquizzes
These are the assignments you will submit for grading. In all cases, only the final submission (before the deadline) counts. The pages for these assignments are linked to from the course calendar and the navigation bar.
Finger Exercises: The finger exercises are very small Python programming problems that are automatically checked for correctness by an online system. They are designed primarily to help students confirm that they understand specific programming concepts. They should take you about 10 minutes or less to do. If you are consistently taking longer than this to do them, seek guidance from staff. These exercises are mandatory, and will help prepare students for the problem sets. Students must successfully complete all mandatory finger exercises (get the green check). At the beginning of each lecture, mandatory finger exercises will be available on our website. They will be due before the beginning of the following lecture. When submitting exercises, only the final submission (before the deadline) counts.
Problem Sets: Submissions will be uploaded to the Problem Sets website. Problem Sets will take about 8 hours to complete on average. They pull together various ideas - programming syntax, programming paradigms, and computational conceps - and will be an iterative process to complete. They give you a taste of what it feels like to put together a larger project involving computation. These are extended programming tasks that exercise concepts from class on grounded scenarios., helping you develop skills in programming fluency, computational modeling, and problem decomposition.
For each pset, we will release initial code as scaffolding, along with test cases to check correctness of various components.
Problem Sets will have three grade components:
-
Autograder Score: At problem set deadline, automatically determined based on test cases you pass (depends on the problem set, typically 60% of problem set grade).
- When you submit your code file on the pset page, the server will run the same test cases and determine an autograder score.
- There will be no hidden test cases.
- You may submit as many times as you like, and we will grade your last submission before the deadline.
-
Reflection: Hand in a short writeup on what you learned in the problem set and what issues you encountered, due 1 hour after the problem set deadline (10% of problem set grade).
-
Checkoff Score: Based on code style (typically 10%) and how well you can explain your code to a staff member (typically 20%). Style guidelines are listed under the About tab.
- Checkoffs must be completed in office hours, during which a TA or LA will interview you about your code. This interview will ensure that you understand the code you wrote and that you understand key concepts that the problem set is covering. The interview typically takes no more than 15 minutes.
- Checkoffs will be given first-come first-serve by available staff. If you are still in the queue at the end of office hours when the deadline passes, you will not receive credit for the checkoff.
- Checkoffs generally start the day after the problem set is due. The window for completing a checkoff is usually (not always) 2-4 days after that.
- After you complete a checkoff, you are not allowed to re-submit the problem set or redo a checkoff.
Microquizzes: See course calendar for dates. We will hold 8 microquizzes, but no final exam. They will be held in-class using a computer.
- There are no conflict quizzes offered, but we will take the best 6 out of 8 scores to calculate the grade.
- Each quiz will be taken in-class in the last 30-45 minutes on specific lecture days (see calendar).
- If you have any conflict on a quiz day, th eofficial policy is that you will drop that quiz. If you must miss more quizzes than the allowed drops, you must speak with S^3 for support and email
6.100-staff@mit.eduBEFORE the quiz. Alternate arrangements may be made but not guarateed. - You may NOT use any course materials as aids. You may NOT use the Internet. Students may NOT collaborate with any other person. If you arranged for accommodations through MIT's Student Disabilities Service, please contact
anabell@mit.eduearly in the term.
8) Grading Policy (roughly computed as follows):
- Problem sets: 35%
- Completion of mandatory finger exercises: 10%
- Microquizzes (best 6 out of 8): 50%
- Participation: 5%
Your total numeric score is not the final determiner of your letter grade. We consider additional factors, such as the effort demonstrated, relative difficulty of quizzes across terms, and violations of any course policies.
There are two factors that guarantee the following letter grades: overall score and best 6 quiz average. If one or more criteria are not met, the grade is not guaranteed. For grades near and below these thresholds, we consider them on a case-by-case basis. Note that if you are a first-year student, you need a C or better to receive credit for the course.
- A: overall score >=90 and quiz average >=80
- B: overall score >=80 and quiz average >=70
- C: overall score >=70 and quiz average >=60
- D: overall score >=60 and quiz average >=50
- F: anything below
9) Collaboration Policy
No collaboration or Internet access is allowed during the quizzes. Students must take quizzes in-person. Any student who violates our quiz taking policies will receive a non-droppable 0 for the quiz AND drop down one final letter grade.
On finger exercises and problem sets, you may discuss solution approaches with others (including fellow students, TAs/LAs, students who have taken the course before, Generative AI), but you must think of and write your own code, and note your collaborators.
It goes without saying that copying-and-pasting or transcribing code from others is prohibited. Ideally, you would limit collaboration to a shared understanding of the problem and high-level solution strategies. Then, you would figure out on your own how to express those strategies in code.
Realistically, this is a programming class, and code snippets will naturally come up in conversation. Your responsibility is to prevent snippets from becoming wholesale chunks that deprive you of discovering how you would have constructed them. Here are some example scenarios to avoid:
- Two students work out a code solution on a board. Then they individually type the code, making their own "customizations," but the basis of their work was not independent.
- A student who has finished the pset is helping a friend. They show their screen for long enough that the friend can see the code's structure and type it up themselves.
- You're working in your dorm lounge, and get up to use the restroom. A floormate comes by and studies your code on your screen while you were away.
Here are simple fixes to avoid those scenarios:
- Draw pictures on the board instead of writing code or even too much text.
- Rather than trying to tell your friend what you did, ask them what they are trying to do and how they want to do it. Use the Socratic method. You might learn something from what they say!
- Don't leave your devices (laptop, tablet, phone) open while unattended. This is just good security practice.
You are free to seek additional resources on the Internet, but you may not copy or base your solution on any posted code (e.g., from OpenCourseWare, Stack Overflow, ChatGPT). Generative AI has been shown to help learning when used as a tutor. You may use it to help you understand concepts. You may NOT use it to generate code for you, just like you wouldn't use code that a friend has come up with.
We run code similarity software on all code handed in. Violations of this policy will result in a 0 on the assignment, and when warranted, a letter to file with the Office of Student Conduct.
10) AI
In the real world, seasoned programmers frequently collaborate and increasingly use AI tools to enhance their productivity. However, they have solid foundations that allow them to accurately judge each others' work and AI's output. Our goal in 6.100 is to help you start building those foundations, and it begins with developing independence in your own programming skills. Thus, it is important that you follow the spirit of "writing your own code."
Our policy on AI tools for course content is you should treat using them like talking with other people. You are welcome to interact with them for conceptual understanding and even to generate code examples. However, you should not ask them to solve problems that are similar to our assignments. The output of these tools can be highly variable, so it is your responsibility to stop such an interaction if it veers in that direction.
Background on policy:
Our first concern is that students are learning. We assume everyone in the class shares that goal, and will behave in a manner consistent with it and their personal learning style. Much of the learning takes place through working on the problem sets, and it can be helpful to discuss ideas with others. However, you still need to take responsibility for what you put in your own brain. Collaborative learning works best when the participants have roughly the same level of knowledge and skill, so that they can each contribute equally. When one student is consistently showing another how to do things, it is not a true collaboration. And when one student bases their solutions on others' completed work, little to no learning takes place. If students choose to lean heavily on the work of others, they will be cheating themselves of learning. Moreover, while such students may end up with excellent grades on the problem sets, they will almost surely struggle with the quizzes, which does not reflect well when considering final letter grades.
A high standard of academic integrity expected of all students at the Institute. It is essential to the learning process that you are the one doing the work. The various granularity of assessments (lecture-by-lecture finger exrecises, weekly quizzes, and every-other week problem sets) in this course to enable you to gain a mastery of the course material. Failing to do the work yourself will result in a lesser understanding of the content, and therefore a less meaningful education for you. It is important that there be a level playing field for all students in this course and at the Institute so that the rigor and integrity of the Institute's educational program is maintained.
11) Screens in class
During class, you are welcome to take notes in whatever form works best for you, whether on paper, laptop, or tablet. If you take notes electronically, it is important that you don't distract others from the material being discussed. This is particularly applicable to laptops, where your screen is easily within others' fields of view. Therefore, we insist that your screens display class material only and not other content, such as email, games, video, chat, other coursework, etc.
If others find your screen usage distracting to their learning, they have the right to ask you to stop. If you need to work on something else during class, you are welcome to step outside and complete it before returning.
12) Extensions
We typically do not grant extension requests. Instead, we offer 3 late days in the whole course. Each late day is a discrete, 24-hour extension (you cannot use half a late day). For example, submitting Problem Set 2 on Saturday 11 PM when it was due on Friday 9 PM would cost two late days.
Late days can only be applied to problem set submissions, not to checkoffs or finger exercises. Checkoffs must be completed within the posted time frame, regardless of whether you used late days on the problem set.
The course website automatically applies late days to each submission, viewable on your Scores page. Any work submitted beyond the 3 late days will not be accepted. We strongly urge you to consider late days as a worst-case backup. Your best strategy is to complete the problem sets early before work starts to pile up.
Because the website needs to accept problem set submissions up to three days after the official due date, any submission you upload during that window will use your late days. To avoid surprises, please check that your final submission is uploaded correctly, and then do not make further uploads.
Beyond the late days, any extensions we grant are only for special circumstances, and need to be supported by S^3.
13) Getting Help
If you are falling behind, please ask for help early! We do not look favorably upon last-minute requests.
Your first resource is to come to office hours. TAs and LAs can help you with code debugging and conceptual questions.
If you can't make it to office hours, or just have a quick question, post it to Piazza! Feel free to ask questions about psets, code segments, confusions from lecture or recitation, course policies, etc. Just remember to post privately for questions specific to your submissions (and include your MIT Kerberos username). All other posts should be public, so that other students can help you and be helped as well.
Finally, personal requests may be emailed to 6.100-staff@mit.edu.
If it is for extenuating circumstances, remember to speak to S^3 first, and CC them when emailing us.
Additional Resources:
If office hours aren't enough one-on-one time, consider using the HKN tutoring service. HKN is the EECS honor society that provides free tutoring for Course 6 classes. The Talented Scholars Resource Room (TSR^2) is another option for tutoring, offered by MIT's Office of Minority Education. TSR^2 is located in 16-159 and offers P-set nights, exam reviews, facilitated study groups and one-on-one appointments that are led by facilitators who are academically advanced undergraduates or graduate students. These academic resources are free of charge, and are available every semester. More information can be found on their websites. Be aware that slots fill up quickly, and it's harder to find a tutor late in the term.
Finally, we have compiled a list of Python resources that you may find helpful on the Programming Resources page. It contains links to online textbooks on Python, debugging tools, and fun online coding challenges.
14) Textbook
The textbook is Guttag, John. Introduction to Computation and Programming Using Python, Third Edition, With Application to Computational Modeling and Understanding Data, MIT Press. The book and the course lectures parallel each other, though there is more detail in the book about some topics. It is available both in hard copy and as an e-book. The Open Course Ware (OCW) site for 6.100A (was 6.0001) and 6.100B (was 6.0002) have a lot of useful material and this course will closely parallel the material covered in the OCW version. Code and errata for the book can be found here.
15) Related Courses and Variants
6.100 is a requirement for many majors, including the Course 6 degrees in Computer Science (CS) and Artificial Intelligence and Decision-making (AI+D). You may receive equivalent credit by taking 6.100A and 6.100B. You may also receive credit for 6.100A by passing its advanced standing exam (ASE).
6.100A and 6.100B have become full-semester subjects, but are still six units each. For details about these changes, see this page, which also explains that the offucial subject number is 6.1000, but we will refer to it as 6.100.
Note that 6.100, 6.100A, 6.100B are run as three separate classes. We may share teaching staff for some tasks, but for the most part each class has its own instructors, teaching assistants (TAs), and lab assistants (LAs). The content across all three classes will be closely related but not exactly the same. However, each class's course structure and policies are independent of each other. If you switch among them, make sure you understand the new policies.
There is currently no ASE for 6.100B or 6.100. However, there are a couple alternatives for 6.100B. Many degree programs accept CSE.C20 as well, and in AeroAstro, you may substitute 16.S690 / 6.S080. Policy may vary among departments, so please check individually.
16) Staff
Contact us at 6.100-staff@mit.edu with personal issues. Post other questions to the forum.