CMU 15-112: Syllabus
Fall 2020

15-112 will be taught entirely online this semester. While this will no doubt impact all of us in many ways, please bear this in mind:
  • We are fully committed to giving you a world-class learning experience, worthy of CMU's proud tradition, and worthy of your considerable time and financial investment.
  • We are also fully committed to your health, well-being, and happiness, understanding all the challenges we face this semester.
  • Our general philosophy for both of these goals is to rely on people rather than technology. We are all in this together, and we will thrive as a supportive learning community. This means that you will work closely with classmates, with TA's, and with the course faculty all semester. You are never alone, not even when working on "solo" assignments. You always have many, many people who are here for you.
  • These times also call for flexibility on everyone's part. We ask you to please be creative in how you adapt to these challenges. We assure you that we will be as well. We stand ready to change any course policies should we feel that you would benefit from those changes.
Unless otherwise stated, all times in all course-related documents and correspondence will be in Pittsburgh time (EDT). Note that Autolab in particular may show times in your local time, but our course website uses Pittsburgh-time.
Previous versions of 15-112/15-110/15-100:
S20, F19, S19, F18, S18, F17, S17, F16, S16, F15, S15, F14, S14, F13, S13, F12, S12, F11, S11, F10, S10, F09, S09, F08, S08, F07
Description A technical introduction to the fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. Starting from first principles, we will cover a large subset of the Python programming language, including its standard libraries and programming paradigms. We will also target numerous deployment scenarios, including standalone programs, shell scripts, and web-based applications. This course assumes no prior programming experience. Even so, it is a fast-paced and rigorous preparation for 15-122. Students seeking a more gentle introduction to computer science should consider first taking 15-110. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course.
Learning Objectives At the end of the course, students should be able to:
  • Write clear, robust, and efficient code in Python using:
    • sequential, conditional, and loop statements
    • strings, lists, tuples, sets, and dictionaries
    • objects and classes
    • recursive approaches
    • graphics and interaction
  • Develop programs to effectively solve medium-sized tasks by:
    • employing modular, top-down design in program construction
    • demonstrating an effective programming style based on established standards, practices, and guidelines
    • proactively creating and writing test cases to test and debug code
    • applying computational problem-solving skills to new problems, especially in the student's home academic discipline
    • explaining and analyzing the efficiency of algorithms, particularly by predicting the Big-O running time of small pieces of code
  • Design and write a substantial (500-1500 line) program in Python with minimal guidance
Topic List
and Schedule
See the topic list and schedule here (includes schedule, notes, video mini-lectures, homeworks, quizzes, and tests).
Office Hours:

Instructor Office Hours:
     David Kosbie (koz): Tue/Thu 12pm (noon) to 2pm
     Mike Taylor (mdtaylor): Wed/Fri, 12pm (noon) to 2pm

TA Office Hours:

Mon Tue Wed Thu Fri Fri
7-10pm 8-11pm 7-9pm,
8-11pm 9-11am 4-8pm

Important note: During collabs (thus, during weekends), please use your collab group and your collab TA as your first go-to resource. Piazza is also always available.

Piazza Virtual Office Hours:
     Piazza is monitored by TA's daily at all (reasonable) hours of the day.
     When posting on Piazza, remember to make your post private! Public posts by students are not allowed.

Large-Group Sessions:
  • All of these sessions are recorded and available on Panopto.
  • You may not submit the hw after you attend the hw solution session.
Optional /
Advanced Talk
Standard Hw
Spicy Hw
Wed 9:30-10:20pm Thu 5:30-7:30pm Thu 8-9pm Fri 8-9:30pm Sat 8-9pm Sun 8-9:30pm

Academic Development Tutoring:
     This is a great resource provided not by 15-112 but rather by Academic Development in support of 15-112.
of Classes:
Important notes:
  • Use Autolab's Roster: Check Autolab (and not SIO) to confirm your assigned lecture and recitation times.
  • Lecture Attendance: You must attend your assigned lecture live. If you cannot do so, contact the course faculty and we will consider a one-time request to attend a different lecture on the same day or perhaps to view a recording of a lecture. These require faculty permission in email prior to your assigned lecture.
  • Recitation Attendance You must attend your assigned recitation live. Since your TA's work closely with you all semester, if you must miss a recitation, do not attend a different time. Instead, contact your TA's prior to the recitation and arrange for them to catch you up on what you missed.
  • Spicy Recitation: Each Wednesday 9:30pm to 10:20pm, we will provide one "spicy" recitation. The spicy recitation will cover more advanced topics, and is meant to provide more of a challenge to students who are already very comfortable with the core material. You are required to attend either your assigned Wednesday recitation or the spicy recitation. You may also attend both! The spicy recitation is recorded each week, but watching the recorded spicy recitation will not give you attendance credit, since live instruction is preferable.
  Days Lecturers Time
Lecture 1 Tu/Th David Kosbie (koz) 9:50am - 11:10am
Lecture 2 Tu/Th Michael Taylor (mdtaylor) 3:20pm - 4:40pm
Lecture 3 Tu/Th Elena Swecker (eswecker) and Prithvi Okade (pokade) 10:00pm - 11:20pm

  Days TA's Time
    Section S0 W/F Grace K. (haeunk) and Joe (jritze) 8:00am - 8:50am
    Section S1 W/F Tate (tmauzy) and Sai (ssagiraj) 8:00am - 8:50am
    Section S2 W/F Michelle (mling2) and Elena (eharllee) 8:00am - 8:50am
    Section A0 W/F Ping-Ya (pingyac) and Bradley (bradleyz) 9:20am - 10:10am
    Section A1 W/F Ishaan (ijaffer) and Jason (jledon) 9:20am - 10:10am
    Section B0 W/F Andrew (andrewh1), Asad (asadalis), and Kaitlynn (kecooper) 10:40am - 11:30am
    Section B1 W/F Alan (alanhsu) and Jake (jzych) 10:40am - 11:30am
    Section B2 W/F Brittney (bsidwell) and Sean (yizes) 10:40am - 11:30am
    Section C0 W/F Vivian (vbeaudoi) and Allison (ahunter2) 12:00pm - 12:50pm
    Section C1 W/F Sara (saralian), Rahul (rjogleka), and Terry (tyf) 12:00pm - 12:50pm
    Section C2 W/F Rebecca (rmanley) and Crystal (crystal3) 12:00pm - 12:50pm
    Section D0 W/F Patrick (pbhuang) and Anjali (athontak) 1:20pm - 2:10pm
    Section D1 W/F Phi (hpnguyen) and Shivank (shivankj) 1:20pm - 2:10pm
    Section E0 W/F Mihika (mbairath) and Grace C. (gcui) 2:40pm - 3:30pm
    Section E1 W/F Namrata (npadmana) and Amy (agermer) 2:40pm - 3:30pm
    Section F0 W/F Max (mdunaevs) and Anita (anitama) 4:00pm - 4:50pm
    Section F1 W/F Alex (alexx) and Steven (stevenl2) 4:00pm - 4:50pm
    Section G0 W/F Kian (knassre) and Lauren (lsands) 5:20pm - 6:10pm
    Section G1 W/F Dina (drazek) and Leo (lnicolus) 5:20pm - 6:10pm
    Section H0 W/F Skylar (skylarm) and Emily (ejzhang) 6:40pm - 7:30pm
    Section I0 W/F Mira (mmookerj), David (dsyou), and Natalie (ntedesch) 8:00pm - 8:50pm
    Section Z0 W/F Elisa (ezm) and Sean (yizes) 9:20pm - 10:10pm
15-112 can be an intense course, but it becomes much more manageable if you use the course resources well. These resources include:
  • Course Notes: The course notes (on the schedule page) are full of useful information and examples that can help you approach the assignments! When you don't understand a concept, try reading the notes and watching the associated videos first.
  • TA and Faculty Office Hours: Office hours let you ask questions to TA's and professors directly, and can help you understand concepts and debug programs that you're struggling with alone. When Faculty OH begins, we will provide a zoom link and a form link. You can hang out in Faculty OH even if you don't have a question. When you do have a question, fill out the form to get on the queue. As for TA OH, when you do have a question, please make sure to be prepared to ask it as efficiently as possible. During busy TA OH, to provide the fairest help to the most students, TA's can only spend five minutes with each student.
  • OH Queue: Use the OH Queue to sign up for help at TA's office hours!. OH Queue is used only for TA office hours. You must create a zoom call and paste the link into the comment field so that TA's can find you!
  • Piazza: Piazza can be used to ask quick questions and receive quick responses without attending office hours in person. Questions on Piazza should be specific and include all needed information (so if your code has an error you don't understand, include the relevant part of the code and the error message). Note that we do not make student posts on Piazza public; please only post private questions to the instructors.
  • Large-Group Sessions: TA's run large-group sessions to provide more structured review for quizzes and lecture material. These are offered weekly at a regular time (see schedule above) and include:
    • Optional/Advanced Lectures
    • HW Solution Sessions on Sunday and Monday
    • Quiz Reviews
  • Recitation TA Study Sessions: When possible, your recitation TA's may offer extra study sessions, providing extra support for students as appropriate.
  • Tutoring: Academic Development offers tutoring for 15-112. This is a good resource for students who want one-on-one tutoring outside of the course.
Every required software package we use is available for free on the web. This includes:
  • Python version 3.x (3.7 or later), which can be freely downloaded from
  • We will also use the 15-112 Web IDE, built using Brython, which is a version of Python that runs in web browsers.
  • We may also use one or more free IDE's (code editors) and other free software packages.
Participation with earnest effort in this course is required and consists of the following activities:
  • Attending and participating in all the lectures, recitations, and required events.
  • Carefully reading the course notes and other assigned readings.
  • Thoughtfully completing the homework assignments, collabs, and the term project with earnest effort.
  • Taking all the quizzes, midterms, and final.
Attendance is required (if not always strictly recorded). Repeated failure to attend lectures or recitations may result in a lowered semester grade regardless of your numeric average. You will be responsible for all materials presented in lectures and recitations. Note that missed quizzes and exams may not be made up in general (though certain exceptions are permitted -- see the relevant sections below).

Non-responsiveness: The previous section concerns participation. Here, we discuss non-responsiveness, where a student fails to even respond to faculty and/or TA emails. Given that we are entirely remote this semester, it is impossible to teach this course effectively to a non-responsive student. As such, non-responsiveness will be handled swiftly, with these consequences:
  • First offense: warning from TA, cc'ed to course faculty.
  • Second offense: 10-point deduction on the most-recent quiz.
  • Third offense: 10-point semester deduction.
  • Fourth offense: course failure.
Any material covered in lecture, in recitation, in assigned readings, or in homework assignments may be included in any future homework assignment, quiz, or exam.
 Course Component   Weight   Notes 
Quizzes (about 7) 10%Lowest 2 quiz grades are half-weighted.
Solo Homeworks (about 10) 15%Lowest 2 homework grades are half-weighted.
Group Collabs (about 10) 20%Lowest 2 collab grades are half-weighted.
Midterms (3) 15%Lowest 1 midterm grade is half-weighted.
Term Project (1) 20%
Final Exam (1) 10%
Solo Participation 5%lecture attendance, recitation attendance, viewing grading feedback, ...
Group Participation 5%group collabs attendance + teamwork, ...

Midsemester and Semester grades will be assigned using a standard scale, as will each homework, collab, quiz, midterm, term project, and final, as such:
   A: 90 - 100
   B: 80 - 89
   C: 70 - 79
   D: 60 - 69
   R:  0 - 59

Note that graduate students will be assigned +'s and -'s according to the following scale (generalized across letter grades):
   B-: [80-83)
   B:  [83-87)
   B+: [87-90)

The course instructors may choose to change the scales at their discretion. You are guaranteed that your letter grade will never be lowered as a result of changing scales.
Semester Grade Cap Policy
Note: due to this semester's special circumstances, we have relaxed the grade cap from 10 points to 20 points in the following policy: In all cases, your semester grade is capped at 20 points above the highest score you receive on the course's proctored events -- that is, on your semester quiz average, on midterm1, midterm2, midterm3, or on the final exam. For example, if your raw semester average is 83, but your highest proctored score is a 55, then your semester score is capped at 75 and you would receive a C as your semester grade.
Alternate Minimum Grading (AMG) Policy
This AMG policy is available to everybody, but is designed specifically for those students who struggle in the first part of the course and then through sustained hard work and dedication manage to elevate their performance in the latter part of the course to a level that merits passing with a C, even if their Standard Grade might be lower than that.

In addition to Standard Grading as described above, we will separately compute your grade using an Alternate Minimum Grading (AMG). Students do not sign up for AMG. Every student will be considered both for Standard Grading and AMG, and their semester grade will be the higher of the two (where the highest grade via AMG is a C).

To compute your Alternate Minimum Grade, first use the following to compute your raw score:
 AMG Course Component  Weight 
Final Exam 40%
Best Midterm Exam 25%
Best 5 Quizzes 10%
Best 5 Solo Homeworks 10%
Term Project 15%

Unlike the Standard Grade, effort is heavily factored into your AMG score. To qualify for AMG you must put forth sustained effort, which means meeting the following requirements:
  • You cannot miss multiple lectures/recitations
  • You cannot miss multiple assignments or quizzes
  • You cannot violate the Academic Integrity Policy or any collaboration guidelines
Solo homeworks:
Solo homeworks are generally due Friday at 8pm Pittsburgh-time. Unlike collabs, homeworks are entirely solo. See the "Academic Integrity" section below for more details. That said, you always have access to extensive help provided by the TA's and course faculty.

We are experimenting with different assignment formats, so it is absolutely critical that you read all instructions for every assignment! Based on feedback from prior semesters, we want to allow you to choose the 'spiciness' of your assignments, i.e. you may choose to solve larger, more challenging problems instead of multiple smaller problems that you may be less interested in, or you may choose many smaller problems to increase your understanding of core concepts if you do not feel ready for the larger, more complex ones. Each assignment may have special instructions, but here are some details:

  • Homework grades are capped at 100 points. Except for questions labeled "Bonus" or "Extra Credit," solving additional problems (whether spicy or non-spicy) after you have earned 100 points will not benefit your grade, though you may find the extra practice useful.
  • "Bonus" or "Extra Credit" questions are meant to be very challenging. These questions are typically worth very few points, and should be attempted only for the sake of challenging yourself further. These points are exempt from the 100 point limit, however (e.g. if your base score is 99 and you solve a 3 point bonus, you can get a 102).
  • Read everything carefully! If you lose points for not following instructions, you cannot get them back by telling us you didn't see them. We'll point you right back here.
We encourage you to do the spicy problems if you are able! When assigning final letter grades at the end of the semester, we will consider all edge cases, and we will be more likely to move you to the next letter if we see you have regularly completed the spicy problems. Completing more challenging problems will also increase your chances of being hired as a 112 TA!

Programming assignments will be graded based on style (modularity, effective use of data abstraction, readability, commenting, etc.) and functionality (correctness and efficiency of the program on all possible test inputs). Your code should be properly annotated with comments that are well-placed, concise, and informative. Your assignments will be graded by TA's, by automated graders, and at times by the course faculty.

Term Project:
The Term Project will take place over three weeks at the end of the semester. You will design and build a program of your choosing with the guidance of a mentor TA. More information can be found in the Term Project Assignment writeup.
Assessments: Quizzes:
Quizzes will be given most weeks, generally in lecture on Tuesday. Quizzes generally focus on material from the previous week and the previous homework and collab, though any prior material may appear as well.

Midterm Tests:
There will be 3 midterm exams, weighted as indicated above, given in class as noted in the course schedule.

Final Exam:
There will be a final exam, weighted as indicated above, during the university-assigned final exam period at the end of the semester. Note that the final exam is optional this semester. Specifically, we will provide a poll that must be completed by all students before the final exam date (the exact deadline for the poll will be made very clear when we post the poll), and students wishing to take the final must explicitly fill out the poll and indicate that they will opt-in to taking the final. Students who do not submit this poll on time, or students who fill out the poll but do not opt-in, will not take the final, and instead will then have their weighted midterm average count as their final exam score. Students who do opt-in must then sit for the final exam, and whatever score they receive on the final exam counts, even if it is lower than their weighted midterm average (even if they skip the final and thus score 0 on it). Also note that students who do fill out the poll indicating that they do not opt-in, but then still sit for the final exam, will still have the final exam count as usual, though with a deduction for not opting-in as required.
Quizzes and exams (and possibly other activities) will be computer-proctored and generally administered in-lecture.
Do not attempt to access any assessments until instructed. Assessments will include specific procedures for you to follow. In addition:

  • The proctoring environment (generally, Zoom) must be full-screened and in the foreground at all times.
  • All notifications, pop-ups, alarms, etc. must be disabled. You may be able to find a Chrome extension to assist you with this.
  • No phones, notes, tablets, scrap paper, or other items may be out while taking the assessment, except as required by the assessment procedure itself.
  • When you finish, make sure you submit the assessment, but do not close the proctoring window. The testing/proctoring environment must remain full-screened and foregrounded until the end of the assessment. You may not use your laptop or phone for other purposes until everyone is finished.
  • When the proctors signal that time is up, you must stop working immediately. Continuing to work on any assessment will lead to an automatic zero and/or an academic integrity violation.
  • If you encounter any technical difficulties, or if your testing environment freezes, notify your proctor immediately. It is easy for us to distinguish true accidents, and we will respond fairly to those, so do not panic.
If you have any technical difficulties that prevent you from taking quizzes or exams in our normal proctoring environment, the course faculty may elect to instead give you an oral exam in whatever format is most appropriate.

This testing protocol is new for this semester, and subject to change. Any instructions given by the faculty or the assessment itself will take precedence.
We begin this unusual semester by choosing to trust each of you. Do not be one of the few who loses that trust. If you cheat, expect to be caught, and expect significant consequences. Use common sense and understand these rules.

Unless otherwise noted, all homework exercises are solo, meaning that you must not collaborate with anyone in any way. Examples of cheating on homework include:
  • Claiming or submitting as your own any work or code you did not fully author, explicitly or implicitly, no matter how small.
  • Discussing any part of the homework with anyone else (besides current 112 TA's and course faculty), no matter how briefly or casually.
  • Looking at any part of anyone else's solution, no matter how briefly or casually.
  • Showing anyone else any part of your solution, no matter how briefly or casually.
  • Asking any questions about the homework online anywhere except our own course piazza, or posting any part of the homework or any part of your solutions online in any way. In particular, this disallows stackoverflow, chegg, and all other such sites.
  • Attempting to 'hack' or decompile the autograder to produce your solutions or otherwise compromise the autograder's operation.
Homework Help:
Remember: you always have access to extensive help provided by the TA's and course faculty. We strongly encourage you to use this support!

Collabs are collaborative (in fact, you are required to collaborate). But that collaboration is limited to your assigned group for that collab. Within your group, you must collaborate honestly and earnestly. Everyone must try hard. Nobody must copy (visually, verbally, electronically, or in any other way) other group members' work (unless the collab explicitly tells you do that). Also, you must not work with anyone outside of your group. This for example disallows posting to online sites for help with collabs. And again, of course as always, you have piazza and your assigned Collab TA, so the TA's and course faculty are always here to help you.

Term Project:
The Term Project has its own policy, allowing for certain kinds of productive collaboration basically so long as it is carefully and properly cited and otherwise follows the rules as clearly described in the term project writeup. Still, you will only be graded on your original contributions, and those must be truly and entirely yours.

Assessments (Quizzes and Exams):
Examples of cheating on assessments (Quizzes and Exams) include:
  • Referring to any external resources (phones, computers, websites, notes, books, etc) while completing the assessment.
  • Copying any part of an answer from another student's work, even if it is very small.
  • Taking any quiz/midterm/exam papers out of the assessment room, or copying them so they are available outside of the online quiz/midterm/exam environment, say to provide them to students who may take the assessment later.
  • Discussing any part of the assessment in any way with any student who may take that assessment (or one very similar) at a later time (say, in a later lecture or lab, or at the Office of Disability Resources (ODR)).
  • Continuing to work in any way on the assessment for any duration after the proctors announce the stop time.
  • Attempting to gain access to any assessment prior to its release, outside of your assigned testing time, or outside of a secured testing environment.
Retaking Course / Reusing Prior Material:
If you are repeating 112, your prior work in this course is treated just as anyone else's work -- that is, you may not consult it. This is to promote the best possible learning, and using your prior homework answers or term project solutions will only hurt in that regard, and so is entirely disallowed. This will be treated as a cheating violation.

Plagiarism Detector:
Programs are naturally structured, which makes them much easier to compare than handwritten work or typed essays. We run an automated plagiarism detection system on all assignments to detect copied code. Here is a short video demonstrating one of several detection methods we use. In short: if you copy code, including work from prior semesters, we will be able to tell. Don't copy code!

Penalties are decided by the course faculty, and can vary based on the severity of the offense. Possible penalties include:
  • Receiving a 0 on the assignment/assessment.
  • Receiving a -100 on the assignment/assessment.
  • Receiving a full-letter-grade deduction in the course.
  • Automatically failing the course.
Note that offenses can be severe even if the assignment/assessment is worth very few points. For example, cheating during a proctored assessment is always severe.

An assignment or assessment that has received a penalty is not eligible to be half-weighted or dropped. Penalties may also be accompanied by a letter to the Dean of Student Affairs, again at the faculty's discretion. This can lead to additional university-level penalties, such as being suspended or expelled.

  • When we say "do not copy" we always mean visually, verbally, electronically, or in any other way.
  • Copying and then significantly modifying is still copying.
  • If a project or assignment allows you to use external resources, you must include crystal-clear citations. These can be simple comments in your code including the source's URL.
  • You will not receive credit for work that is not yours, of course, but by citing, you are also not claiming someone else's work as your own. Be clear. Phrases like "inspired by X" almost always mean "copied from X and then changed a little," in which case the citation is inaccurate.
  • Our rules should be clear, but if you are unsure whether taking a certain action will be considered an academic integrity violation, simply ask the instructors first, or don't do it. Asking first is harmless. If you commit a violation and then tell us you weren't sure about the rules, we will point you here.

To end this section on a more positive note, you should know that we put a high premium on honesty. Of course, it's by far the best to always be honest and not have an Academic Integrity violation in the first place. That said, if you do get into an Academic Integrity situation, then the sooner and more completely you tell the entire truth, by far the better it is for you and for everyone else involved. The bottom line: If you regret a lapse in judgment, it is always better to let us know right away, to come clean and be honest and truthful. You will feel better about it, as will we, and it will probably result in a better outcome for you as well.
Extensions: Here is this semester's Extension Request Form. That said, in general, due to the scale of the class, we cannot give individual extensions on assignments or assessments. However, there are a few exceptions:
  • Medical Emergencies: if you are on campus and you are feeling sick, contact Student Health Services! Students who have prolonged absences due to medical treatment may obtain extensions from the instructors at their discretion, or by request from Student Health Services, any medical professional, or an advisor, housefellow, etc. While we do not need medical specifics, please provide some form of documentation (such as a receipt from Student Health Services) that indicates you are receiving treatment.
  • Family/Personal Emergencies: if you are having a family or personal emergency (such as a death in the family or a mental health crisis), reach out to your academic advisor or housefellow immediately! They will help support you in your time of need, and will also reach out to all of your instructors (including 15-112 instructors) to request extensions for you.
  • University-Related Absences: if you are attending a university-approved or clearly university-related event off-campus (such as a multi-day athletic/academic trip organized by the university), you may request an extension for the duration of the trip. Note that we will consider most job interview trips to fall in this category. If possible, you must provide confirmation of your attendance, usually from a faculty or staff organizer of the event.
  • One-Time Multi-Day University-Related Event: if you are deeply involved in a event involving some university-related club or organization that you are in, where it will take nearly all of your time over multiple days, and this is a one-time deal for the semester, then we will consider granting an extension on that week's homework.
Please note that extensions must be requested before the assignment/assessment deadline. Additionally: if a religious day you observe conflicts with an assignment date, let the course instructors know in advance; we may be able to provide extensions or move assignment dates in some cases (though in general we urge you to start the assignment early instead).
Late Policy: In general, all solo homework is due at the assigned date and time. However, we understand that life can sometimes get in the way. Therefore, we provide 2 Grace Days for homework assignments. These can be used to submit solo homeworks up to 24 hours late with no penalty. You may only use one grace day per homework. You do not submit a request to use a Grace Day -- you simply submit your homework after the posted deadline, and autolab automatically counts that as a Grace Day if one is available for you. We strongly urge you not to use these grace days immediately; try to save them for unforeseen events. Note that grace days may only be used on solo homeworks, and may not be used on collabs, quizzes, or exams.

Important note: if you are out of grace days, then any late submissions to Autolab will receive 0 points.

Additionally, no late/make-up collabs, quizzes, or exams will be administered, except in the cases covered under the Extensions policy. Approved missed quizzes will be excused; approved missed exams will be taken at the earliest possible date as approved by course faculty.
Regrade Requests: We occasionally make mistakes while grading (we're only human!). If you believe that you found a mistake which you would like us to correct, please submit a regrade request using this form. Regrades must be requested within three weeks of the time when the contested grade was released. Note: regrade requests will result in the entire problem being regraded, not just the possibly-incorrectly-graded part.
Formatting Errors: Misformatted homework in general cannot be graded by our autograder, and as such may receive penalties, which can range from -5% to not being accepted at all. Therefore, be sure to submit your homework early (you can submit repeatedly, we only grade the last submission) to be sure you do not have obvious formatting errors. Errors can be detected by checking your Autolab grade and feedback a few seconds after submitting.
Recording: Students may not record audio or video of lectures or recitations or any other faculty-led or TA-led course events without explicit permission in writing from the instructor or the TA in the instructor's absence. Exceptions will be granted in accordance with university guidelines for accessibility concerns, but even then such recordings may not be shared publicly or privately.
We gladly accommodate students with disability-related needs (as approved by the Office of Disability Resources (ODR), as explained here). If you are eligible for accommodations, please ensure that the Office of Disability Resources has sent us your Summary of Accommodations Memorandum within the first week or two of class. We will contact you within a few days of receiving this form with any relevant instructions for using your accommodations in 15-112.

At the guidance of the University, we can only provide disability-related accommodations which have been explicitly approved by ODR and are on the most recent Summary of Accommodations Memorandum we have received. If you require accommodations that have not been approved by ODR, you should contact them as soon as possible. Also according to University guidance, we cannot retroactively apply your accommodations if we receive them from ODR later in the semester (for example, a modification on an assignment due before we received official approval of your accommodations).

Extended Time: students who receive Office of Disability Resources (ODR) approved extended-time on assessments will be accommodated by the 15-112 staff. Due to the current pandemic and remote-learning situation, it is unlikely that you will be able to schedule extra-time assessments directly through ODR. Instead, the course faculty will email you with instructions for scheduling your assessments upon receipt of your memorandum. In order to meet the logistical challenges of additional proctoring, we ask that you schedule extra-time assessments with us at least five days in advance. Extra-time assessments must take place on the same day as the in-class assessment unless otherwise approved by the course faculty.

Important: to use extra-time, you must sign up for and attend the extra-time quiz or exam time, and not the normal-duration quiz or exam. You do have the option of attending the normal-duration quiz or exam, but then you will have to complete it in the assigned time (without extra-time). If you are attending lecture during a normal-duration quiz when you plan to take the extended-time quiz, you may either exit the lecture and rejoin once the normal quiz time is done, or you may ask to be placed in a breakout room with anyone else who (for any reason) is not taking the quiz.

We are here to help. If you have any questions or concerns relating to 15-112 and how we can best accommodate you during this unusual semester, please contact the course faculty and we will work together for your success.
Auditing: We have found that students who audit 15-112 do not tend to succeed, as they generally cannot dedicate the requisite time and focused discipline to the course. Therefore, auditing will only be allowed in exceptional circumstances, and must be approved by the course instructors first. Rather than auditing, in some cases you may take the course as Pass/Fail instead. This still is not ideal basically for the same reasons, but history suggests that it is a better option in some cases (say, for graduate students who want to learn how to program but already have an over-full load of graduate courses). Note: you may not take the course Pass/Fail if you plan to use 15-112 as a prereq.
Waitlist: If you are on the waitlist, don't panic!. Most waitlisted students get into the course eventually. Just be sure to fully participate from day one as though you were enrolled. Attend lecture and recitation, submit the assignments, and stay involved. If you are still not enrolled at the beginning of the third week, contact the course instructors and they will help you find a section with open seats.
Diversity: It is our intent that students from all diverse backgrounds and perspectives be well-served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity: gender, sexuality, disability, age, socioeconomic status, ethnicity, race, and culture. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In addition, if any of our class meetings conflict with your religious events, please let us know so that we can make arrangements for you.
Well-being &
We care very much about your well-being and happiness. Yes, CMU students (and faculty) work hard, sometimes very hard. But we must keep our balance and always attend to our well-being and happiness. That comes first, academics follow. So be sure to get enough sleep, eat right, exercise regularly, and attend to your well-being and happiness. Here is a list of ideas that might help.

Also, please know that we do care about you and take your well-being seriously. We want to help you learn while minimizing stress. Towards this end, we are working to reduce the workload of the course as much as is possible, while still meeting the learning goals of the course. If you have any ideas or feedback towards reducing the workload or student stress, or improving the course in general, please let us know!

Finally, if you are feeling overly stressed, or anxious, or unhappy about your performance or your general experience in this course: please come talk to us. We will listen. We are here for you and we will try to help.

Addendum: Here is a great summary of many CMU Student Support Services.