Introduction to CS and Programming using Python
If you are a current student, please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.csail.mit.edu) to authenticate, and then you will be redirected back to this page.
1) Course Policies for Fall 2020
This subject is aimed at students with little to no programming experience. It aims to provide
students with an understanding of the role computation can play in solving problems. It also
aims to help students, regardless of their major, to feel justifiably confident of their ability to write simple programs that allow them to accomplish useful goals.
The class will use the Python 3 programming language.
Lectures will be held online, on Zoom. They will be held in real-time during the scheduled lecture hours, 3pm to 4:30pm Boston time -- the link to the session will be available on the homepage. Be sure to log in to Zoom using your MIT kerberos/Touchstone account otherwise you will not be able to view the broadcast. We ask students to keep microphones muted and video turned off during the live broadcast (to limit noise and increase bandwidth). You may type a question in the chat and a staff member or the instructor will do their best to answer it in a timely manner. We will make the video recording available after the live broadcast, linked through the calendar on the homepage.
- 6.0001 (6 units): first half of term, with 4 microquizzes.
- 6.0002 (6 units): second half of term, with 4 microquizzes.
All course material is linked from this site. The amount of work 6.0001 and 6.0002 require is equivalent to a 12 credit, full semester class.
- Provide an understanding of the role computation can play in solving problems.
- Help students, including those who do not necessarily plan to major in Course VI, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals.
- Position students so that they can compete for UROPs and excel in subjects, like 6.009.
3) Lecture Attendance and Office Hours
A significant portion of the material for this course will be presented only in lecture, so students are expected to regularly attend lectures or view the videos. Some lectures days will hold microquizzes over a 12 hour time period. These lectures are noted on the calendar.
Optional recitations will be held on Fridays. These recitations will clarify material covered in lecture that week. You may attend any recitations you like.
We will hold office hours during times marked on the main course site using Zoom. We have two options for engagement with TAs during office hours.
- For short/quick questions, you may join a collective OH Zoom room with many students at the same time. Quick questions can be posted in the chat and everyone will be able to see them. Alternatively, you can "raise your hand" and a TA monitoring the collective OH Zoom room can call on you (again, the question and answer will be heard by everyone). We hope this room mimics our IRL OH room where students "eavesdrop" on other conversations.
- For longer/personal/private/checkoff questions, students sign up via the office hours queue and paste a link to their private Zoom room so that a TA can join in and chat. You can set up your Zoom profile here.
4) Finger Exercises, Problem Sets, and Quizzes
Each problem set and most finger exercises will involve programming in Python 3.
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. 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 have two grade components:
- Autograder Score: Automatically determined based on test cases you pass (depends on the problem set, typically between 5 and 7 points)
- Checkoff Score: Based on a checkoff for code style (guide available under Help) and how well you can explain your code to a staff member (depends on the problem set, typically between 3 and 5 points)
Checkoffs for a problem set can only be done during scheduled office hours on Zoom, generally for the 7 days following the due date of the problem set (fewer days at the end of the term). Checkoffs must be done within that time frame, regardless of whether you used late days on your problem set. Checkoff deadlines can be found on the course calendar. Late days cannot be used to obtain a late checkoff. During a checkoff, you will go through your code with a TA or LA. They will ask you simple questions about your code and determine a score based on code style and understanding of the pset and code. Please allow for 10-15 minutes to complete your checkoff.
Problem Sets Buddies: At the beginning of 6.0001 and at the beginning of 6.0002, you may designate whether you'd like to be randomly assigned a partner to work with on problem sets. Here is how it works:
- We will open up a form until the Friday of the first week of class. In the form, you may check a box that says you'd like to be randomly assigned a pset buddy. Whatever decision you make will be valid for the entirety of the class. You may change your decision at the start of 6.0002.
- Buddies are chosen at random, but with consideration to coding experience and timezones.
- A different pset buddy will be assigned for each problem set.
- Your buddy's name and email address will show up on the problem set page.
Pset buddies both hand in the same code.
Checkoffs must be done individually.
Ways to work together:
- both have Spyder open and dictate to each other while screensharing
- have one person type wile the other dictates and send the file back and forth
- look into https://repl.it/repls/multiplayer where you can edit the same piece of code together
- use google docs (with an even-spaced font like courier new) to edit and copy-paste into your own editors to run
Microquizzes: See course calendar for dates. We will hold 4 microquizzes, but no final exam. There are no conflict quizzes offered, but we will take the best 3 out of 4 scores to calculate the grade.
Each quiz will be available starting from approximately 4pm (Boston time) on specific lecture days (see calendar) for 12 hours. Once you start the quiz, you will have to complete it within 30-45 minutes, depending on the quiz. Questions will be randomized between students, but the difficulty will be the same. You may use lecture notes and python code provided in class. You may NOT use the Internet and students may NOT collaborate with any other person. The work submitted must be the student's own work. If we believe that you used other supplementary material or that you had help during the exam, that is grounds for a zero on the exam. If you arranged for accommodations through MIT's Student Disabilities Service, please contact
email@example.com early in the term.
5) Grading Policy (roughly computed as follows):
- Problem sets: 45%
- Completion of mandatory finger exercises: 10%
- Microquizzes (best 3 out of 4): 45%
- Problem sets: 45%
- Completion of mandatory finger exercises: 10%
- Microquizzes (best 3 out of 4): 45%
We offer late days. At the beginning of the term, all students are given 3 late days (24 hour extensions) to use in 6.0001 and 3 late days (24 hour extensions) to use in 6.0002. Late days can only be applied to problem sets, not to checkoffs or finger exercises. Late days are discrete (a student cannot use half a late day). The staff will keep track of late days and feedback for each problem set will include the number of late days the student has remaining. For example, turning in Problem Set 2 on Saturday 7PM when it was due on Friday 5PM would cost two late days. You can use as many late days as you want on a problem set, but you will be responsible for handing in the following problem set on time. Any additional late work beyond these late days will not be accepted. To avoid surprises, we suggest that after you submit your problem set, you double check to make sure the submission was uploaded correctly. We strongly urge you to see the late days as backup in case of an emergency. Your best strategy is to do the problem sets early before work starts to pile up.
Late days reset at the beginning of the 6.0002 material. Under special extenuating circumstances, supported by S^3, we may grant further extensions.
7) Collaboration Policy
The following applies to students who are not problem set buddies (as chosen by the system for a particular problem set). Students may collaborate on the problem sets, meaning you're free to seek help from LAs/TAs, the internet, or your friends (whether or not they are taking this course). If two or more students choose to solve a problem set together, they are required to write code independently and note all of the collaborators. Students cannot use the exact same code (for example, by dictating to each other). Students are not permitted to look at or copy each others code or code structure. Students are not permitted to share/send code to others. Our official collaboration policy is that two students may discuss a solution together, but the code must be written separately by each student. No plagiarism or copying of OpenCourseWare solutions, or any other solutions, is allowed. We will be running code similarity software on all code handed in. Violations of this policy will result in a 0 on the problem set.
Background on policy: Our first concern is what the students in the class learn. We assume that everyone in the class is here because they want to learn, and will behave in a manner consistent with that goal and their personal learning style. Much of the learning takes place while working on the problem sets. Working with other students on problem sets often enhances the learning process. Keep in mind that collaborative learning works best when the students working together have roughly the same level of knowledge and skill so that each participant in the collaboration can contribute more or less equally to solving the problem. When one student is consistently showing another how to do things, it is not a true collaboration. When one student bases their solution on the completed work of another or on a solution from a previous year, little to no learning takes place. If students choose to lean heavily on the work of others, such students will be cheating themselves and will learn less. Moreover, while these students may end up with excellent grades on the problem sets, they will almost surely struggle with the exams, which account for the majority of the final grade
8) Getting Help
We strongly encourage you to seek out help throughout the term. Ask questions early and often rather than waiting until the last minute. If you need lots of help with your code, or would like someone to look over your entire code file, consider coming to office hours.
If you can't make office hours, or just have a quick question, post it to the forum! It is Q&A style and we'll be using to enable both staff and students to help answer questions. On the forum, feel free to ask questions about psets, code segments, confusions from lecture or recitation, course policies, etc. We prefer that you make your posts public so that others can benefit from them as well. If your question is specific to your code or a grade you received, then please post privately.
- During the 6.0001 half of the semester, please use the 6.0001 forum.
- During the 6.0002 half of the semester, please use the 6.0002 forum.
If you need to privately contact the staff - for example, to arrange a meeting - you can email the TAs and professors at
firstname.lastname@example.org . Please keep Python and homework questions off of this list, as we'll simply request that you post them to the forum instead.
If you're finding yourself falling behind and office hour help isn't enough one-on-one time, consider using the HKN tutoring service. HKN is the Course 6 honor society that provides free tutoring for Course 6 classes. Sign up for tutoring sooner rather than later, as slots fill up and it's harder to find a tutor late in the term. Seminar XL is also another alternative for MIT tutoring services, offered by the Office of Minority Education. More information can be found on their website.
We have created an MITx page for this course. The link is available from the class Stellar page. MITx contains supplemental material and practice exercises that will help you do better on the regular assignments and quizzes, so we advise that you take full advantage of it. However, this material will not substitute going to the physical lectures or turning in your quizzes and assignments. Before being able to access the site, you must install or update your personal certificates -- instructions available here. We have compiled a list of other Python resources that you may find helpful in the Additional Python Resources document on Stellar. It contains links to other online textbooks on Python, debugging tools, and fun online coding challenges.
The textbook is Guttag, John. Introduction to Computation and Programming Using Python, Second Edition: With Application to 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.0001 and 6.0002 have a lot of useful material and this course will closely parallel the material covered in the OCW version.
Contact us at
email@example.com with personal issues. Post other questions to the forum, and
make your post private for personal questions.
What do I need to hand in for this class?
This website is the hub for this class. All links are on the navigation bar on the top of the page.
- Problem Sets
- Finger Exercises
- Microquizzes (on dates specified on calendar)
My grade is missing (problem set / checkoff / microquiz / exam).
Make a private post on the forum. Enter your Athena kerberos username, problem set number, and an explanation of what the issue is.
I have special accommodations paperwork.
Give your paperwork to the instructor and contact
firstname.lastname@example.org make arrangements.
Can I get grad credit for this class?
We don’t assign any extra work for grad credit. We suggest that you petition your department for credit in the class as-is.
I registered late for the class. How do I hand in work missed?
Make a private post on the forum. Include your Athena username and details of when you joined the class. No extensions will be given for problem sets missed -- you will have to use your late days. Missed finger exercises will be noted by the staff.
Can I have an extension for this problem set?
We grant extensions in special circumstances. We only consider requests that come from S^3.