CMU 15-112 Syllabus
Summer 2020

  1. Overview
  2. Resources
  3. Expectations
  4. Policies
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
Previous Summers:
N19, M19, N18, M18, M12, APEA-09, APEA-08
Official 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.
Unofficial Description This course is designed to help you learn how read, write, design, and debug Python programs. Towards that end, you will spend most of the time in the course developing programming as a skill by learning about various programming constructs and techniques and by constantly practicing with code.

Students who take 15-112 generally fall into one of two categories. First, you might be a CS major or a student in another technical major who needs to take a set of CS classes to fulfill requirements. 15-112 will prepare you for the technical challenge of those courses by helping you develop a robust understanding for how to work with code; this skill will be essential in future courses. Alternatively, you might want to learn how to program in depth, but then have no intention of taking further CS courses. For you, 15-112 will help you learn that essential skill, and will also introduce you to some of the big ideas in computer science so that you can bring new ideas back to your own field of study.

In this course, you will primarily do work through completing programming assignments either individually or collaboratively; these assignments will help you develop and practice your coding skills. You will also be assessed with a set of tests and exams, to help you measure your understanding of the class's various topics. We will teach you primarily through interactive lectures and recitations, where we will demonstrate how to code using instructions, examples, and live coding. At the end of the semester, you'll demonstrate your mastery of the course's topics by working on a 1 week term project, where you can develop and code a project of your own design, based on your own interests.
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

  • Describe the difference between programming and computer science by:
    • defining each and explaining where they are used
    • identifying some of the big ideas in computer science
    • recommending how programming could be applied to their core field of study or an interest area

  • Design and write a substantial (500-1500 line) program in Python to implement a project of their choosing over one week
Zoom Links and Times
Event Days Lecturer / TA's Time
    Lecture MTWRF Austin (aschick) 9:00am - 10:20am, 11:00am - 12:20pm, 1:00pm - 3:20pm
    Section A MTWRF Evan (eftippin) 2:00pm-3:00pm
    Section B MTWRF Kian (knassre) & Sara (saralian) 5:30pm-6:30pm
    Section C MTWRF Jeremy (jangel) & Kelly (kwoicik) 5:30pm-6:30pm
    Section D MTWRF Edward (elucero) 5:30pm-6:30pm
    Section E MTWRF Gabriel (gkrotkov) 5:30pm-6:30pm
    Section F MTWRF AJ (adruck) & Rebecca (rmanley) 5:30pm-6:30pm
    Section G MTWRF Katja (kbrackel) & Marco (macea) 5:30pm-6:30pm
    Section H MTWRF Katherine (katheriy) & Phi (hpnguyen) 5:30pm-6:30pm
    Section I MTWRF Emmaline (emai) & Grace (gcui) 5:30pm-6:30pm
    Section J MTWRF Ann (aazhang) & Ping-Ya (pingyac) 5:30pm-6:30pm
    Section K MTWRF Emily (ejzhang) & Taruna (temani) 6:30pm-7:30pm
    Section L MTWRF Alan (alanhsu) & Vivian (viviansu) 8:00pm-9:00pm

Zoom links for all events can be found here

Topic List
and Schedule
See the topic list and schedule here (includes schedule, notes, video mini-lectures, homeworks, tests, and exams).

Course Resources 15-112 can be an intense course, but it becomes much more manageable if you use the course resources. 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.
  • Small Groups:
    • Homework Help: Here you can ask questions to TAs directly, and they can help you understand concepts and debug programs that you're struggling with alone. Past students swear by office hours as the resource that most helped them pass the course!
    • Content Review: Recitation TAs offer small group sessions to go over personalized material. These sessions are excellent for students who are struggling and need more individual attention or a deep dive into the content.
  • Instructor Office Hours: Here you can spend time one-on-one with the professor for conceptual help, homework help, or general advice.
  • TA Office Hours: Here you can pop in over the course of an hour to ask conceptual or debugging questions while you're working on your assignment.
  • Parthean: Parthean can be used to ask quick questions and receive quick responses without attending office hours in person. Note that we do not make student posts on Parthean public; please only post private questions to the instructors.
  • Large Group Sessions: TAs run large group sessions to provide more structured review for tests and lecture material. These are offered weekly at a regular time.
  • Tutoring: Academic Development offers walk-in tutoring for 15-112. This is a good resource for students who want one-on-one tutoring outside of the course.
Office Hours Instructor Office Hours:
     Austin Schick (aschick): Mon-Fri 3:30pm to 5pm EDT

Head TAs:
     Mina Nowroozi (mnowrooz): by appointment
     Prithvi Okade (pokade): by appointment

TA Small Group
Varies depending on your individual schedule.

TA Office Hours
Mon-Fri 9pm - 10pm EDT.
Large Group Review Sessions
These are review sessions where TAs will do prep for the weekly test and go over any difficult homework problems for the week.
Saturdays 8:00pm-9:30pm EDT

Parthean Virtual Office Hours:
   * Daily (7 days/wk):  5pm - 11pm EDT (on most days)

Academic Development Walk-in Tutoring
This is a great resource provided not by 15-112 but rather by Academic Development in support of 15-112.
  • Hours TBA
Every required software package we use is available for free on the web. This includes:
  • Python version 3.7.7, which can be freely downloaded from
  • Visual Studio Code, a free IDE (code editor) for Python.
  • We may also use Brython, which is a version of Python that runs in web browsers.

Assigned Work: Homework:
  • Collaborative Homeworks:
    Collaborative homeworks are released every one to two days. Collaborative homeworks are learning exercises and an opportunity for you to gain confidence in the day's material with a group. Though these assignments are collaborative, we expect you to write and submit your practice solutions by yourself and without any external resources.
  • Solo Homeworks:
    Solo homeworks are released every one to two days along with the collaborative homework. These homeworks are used primarily as learning exercises. They are where you flex and reshape your brain. As the name implies, these homeworks should not be done collaboratively; see the collaboration policy for more details.
These assignments contain a mix of coding exercises (reading, debugging, and writing code) and written exercises. They generally assess the material taught the day they are released, and take one to two hours to complete.

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 your TA, by automated graders, and at times by your instructor.

Writing Sessions
Writing Sessions are designed to ensure that you're deeply internalizing the material from the collaborative and solo homework assignments. You will sit for a timed and proctored writing session each day after the homework deadline.

Within the allotted time, you will solve a selected subset of the solo and collaborative homework problems (or similar exercises) without access to any notes or other supports. You will share your screen with your TA proctor who will grade you as you write and discuss your solution with you immediately after the session.

Term Project
The Term Project will take place over one week 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.

We will take attendance during small groups, recitation, and lecture to ensure that all students are attending and learning. You must have your video on during your scheduled lecture/recitation to be marked as attending. Of course, you should also be engaging with the material and focusing on learning!

If you have to miss a required course event due to a medical or family emergency, please contact the relevant lecture instructor or recitation TA before the class time to be excused from lecture/recitation that day.

Excessive absences without approval may result in a lower letter grade regardless of a student's numerical average in the course.
Final Exam:
There will be a final exam given in class as noted in the course schedule. This exam will cover material from the entire semester but will focus on the materials from after the midterm exam.

Midterm Exam:
There will be one midterm exam given in class as noted in the course schedule. The exam will cover the material on the course schedule up to and including animations.

Tests will be given once weekly. Tests generally cover material from the current week. Tests are designed to be extra hard, to demonstrate where additional study is needed.

Extended-Time Policy:
We gladly accommodate students with university-approved extended time (as approved by the Office of Disability Resources (ODR), as explained here). If you are eligible for university-approved extended time, please deliver the appropriate form to the instructors as soon as possible, since accommodations do not apply retroactively. If you need to acquire the form, contact Catherine Getchell, Director of Disability Resources.

Extended time events such as tests, midterms, and finals will be proctored separately from the standard-duration events. We will be in contact before each event about scheduling its extended-time version. Extended-time writing sessions will still be taken one-on-one with your TA at your scheduled time.

Test Late Policy:
Unfortunately, the scale of this class makes it impossible to allow generally flexible time for taking tests. Therefore, no late/make-up tests or exams will be administered, except in the case of medical or family emergencies. Students who fall into this category should obtain instructor approval before missing the test. Approved missed tests & exams will be taken in the following week.
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 and the term project with earnest effort.
  • Taking all the tests, midterms, writing sessions, 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. You should not expect that all lecture or recitation materials will be given to you in written form (including the online class notes we provide). Note that missed tests and exams may not be made up in general (though certain exceptions are permitted -- see the relevant sections below).
Any material covered in lecture, in recitation, in assigned readings, or in homework assignments may be included in any future homework assignment, test, or exam.
 Course Component    Weight 
Writing Sessions5%
Midterm Exam20%
Final Exam20%
Term Project20%

Each homework, test, midterm, term project, and final will be graded on a standard scale:
   A: 90 - 100
   B: 80 - 89
   C: 70 - 79
   D: 60 - 69
   R:  0 - 59

The same scale will be used for final grades, though the instructors may choose to change the scales at their discretion. You are guaranteed that your letter grade will never become worse as a result of changing scales.

Half-Weight Policy:
The lowest 2 homeworks and the lowest test are all half weighted.


Semester Grade Cap Policy
In all cases, your semester grade is capped at 10 points above the highest score you receive on the course's proctored events -- that is, on your semester test average, on midterm 1, or on the final exam. For example, if your raw semester average is 83, but your highest proctored score is a 65, 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%
Midterm Exam 10%
Best Test 5%
Best 5 Solo Homeworks 15%
Best 5 Writing Sessions 5%
Term Project 25%

The half-weight policy (for the lowest two scores) still applies to the best-5 homeworks, but it does not apply to the best test (since that makes no sense with only one test counting towards the AMG).

Unlike the Standard Grade, effort is heavily factored into your AMG score, and in fact you cannot qualify for AMG unless you put forth sustained effort (as judged by the course instructor) on every homework, test, and exam. If you miss multiple lectures/recitations, miss multiple assignments (including checks), or are penalized for a cheating violation, you will be disqualified from AMG status.

In any case, if you qualify for AMG status and your AMG score is 70 or higher, you may qualify for a C as your semester grade. Once again, the highest grade possible via AMG is a C.
Learning how to program is exhilarating, but also challenging. To succeed in this course, you will need to do the following things:
  • Participate. To learn, you must engage with the course. This includes attending and engaging with all lectures and recitations, and reading all the assigned material. Note that, because most material is introduced in lectures and recitations, attendance is required; repeated failure to attend and participate in lectures and/or recitations (as measured by test completion and recitation roll call) may result in a lowered semester grade.
  • Practice. Programming cannot be learning merely by observing; you must practice to master this skill. This includes attempting all of the solo homeworks. This also includes engaging fully with the term project in the last week of the semester and doing your best to create a project you can take pride in.
  • Test Yourself. At some point, we will need to assess your knowledge. Therefore, you will need to take all the tests, midterms, and the final.
  • And above all, you will need to support a positive course culture. In all course activities you should follow the course collaboration policies (more below); in general this means submitting work that you yourself have generated and which you understand. When working collaboratively you should support your teammates and attempt to work productively. When you find yourself struggling or falling behind, you should seek help early instead of submitting work late. And of course, you should treat all classmates and course staff with respect.
In exchange, the course staff will do their best to support you in your learning process. We promise to do the following things:
  • Provide Appropriate Instruction. We know that many students only take 15-112 because it is a requirement, and that many other students enter the course with prior programming experience. We will seek to provide instruction that is accessible for students at all levels, with remedial and advanced content for those students who need it. We also promise that all assessed material will be taught adequately in lectures and recitations.
  • Provide Support. We will provide extensive office hours, supplemental learning sessions, and one-on-one tutoring as needed, and we will sincerely attempt to help when you struggle with the learning process.
  • Provide Feedback. We will attempt to provide you with appropriate feedback in person and on assessments. We will do our best to return feedback to you quickly (and to always return feedback within a week), and will seek to make that feedback accurate, detailed, and helpful.
  • And above all, we will also work to support a positive course culture. We will work to provide consistent instruction across sections and to be fair in grading, so that all students have equal opportunity. We will respect your time by avoiding last-minute schedule changes, by starting and ending class on time, and by releasing assignments as early as possible. We will find ways to help any student who needs assistance. And of course, we will treat all students with respect.

There are no grace days throughout the semester - however, students who have medical or family emergencies may request an extension. Extension requests are processed by Katherine ( and are handled on a case by case basis. You should request these extensions before the assignment due date. Additionally, if a religious day you observe conflicts with an assignment date, let us 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).

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 a few seconds after submitting.

Submission Issues:
In exceptional circumstances (medical emergency, etc) submissions may be accepted past the deadline. If you are requesting submission past the deadline, do not modify your file; email Austin ( immediately with an explanation of your situation and, if possible, the file you need to submit. There is no guarantee that late submissions of this nature will be accepted.

Regrade Requests:
Homework and Test regrades should be submitted via this form and are handled on a case by case basis. Regrades must be requested within one week of the time when the contested grade was released. This deadline does not apply to exams, as they are returned on a more variable basis.
Collaboration and Cheating Policies: Solo Homework Policy:

Unless otherwise noted, for homework assignments, students are only permitted to talk to the course staff about the assignments. Each student must develop their own solutions to the homework. Consulting another student's solution is prohibited, and submitted solutions may not be copied in whole or in part from any source.

Specifically: do not look at other students' code or written answers, and do not show them your code or written answers, until after the assignment deadline has passed and the assignment has been submitted and graded.

And: do not email or otherwise electronically or physically transfer your code to other students, and do not receive such transmissions from other students, until after the assignment deadline has passed and the assignment has been submitted and graded.

In particular, this precludes students helping each other debug their code (since you may not even look at their code). Of course, students may (and should!) seek debugging assistance (and any other help) from the course staff, who provide extensive support to all students via email, office hours, review sessions, and 1-on-1 tutoring by appointment.

Also, if you find a reference (say, in an optional textbook or some online source) that contains code or a written solution that is identical or overtly similar to an assigned problem, then you are required to not look at that code or written solution! You may still refer to supporting figures and explanatory text separate from the problem solution, but you may not look at or copy the code.

Collaborative Homework Policy:

In these (and only these) assignments, you may work with your group of four collaboration partners which was declared at the beginning of the week, even writing code together, and certainly debugging each other's code. However, you may only work with your collaboration group, and you must include a list of these group members at the top of your submitted file. Also, even when working in an approved group, you absolutely may not copy solutions from anyone or anywhere. In all cases, you must be intellectually involved in the authoring of everything you submit.

Retaking Course / Reusing Prior Material Policy: 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 answers will only hurt in that regard. So do not refer to your prior work, and solve everything from scratch. This will result in your best learning experience.

Autograder / Decompiling Policy: Any attempt to decompile solutions, or object code that may help produce solutions, or in any way to extract solutions from the autograder, or to "hack" the autograder in any way, will result in your failing the course.

Plagiarism Detector Policy: In addition to manual checks on homework and exam submissions, we will also routinely use an automated plagiarism detector. Here is a video demonstrating how it works (AVI or MP4).


Homeworks or portions thereof that are deemed overly similar (as opposed to mostly identical) will face these consequences:
  • 1st event: no penalty (just a warning).
  • 2nd event: will be treated like a cheating violation, which will generally result in letter-grade drop at the semester and a letter to the Dean of Student Affairs.
  • 3nd event: fail the course and another letter to the Dean of Student Affairs.
By contrast, homeworks or portions thereof that are mostly identical (even if they were edited and are somewhat different) are not "overly similar", but are an immediate cheating violation, and will face these consequences:
  • 1st event: letter-grade drop at the semester and a letter to the Dean of Student Affairs
  • 2nd event: fail the course and another letter to the Dean of Student Affairs
Finally, regarding proctored events (tests, exams): any copying or collaboration of any kind (no matter how seemingly minor) on any proctored event will face these consequences:
  • 1st event: fail the course and a letter to the Dean of Student Affairs
These are the general rules, and while we do not anticipate exceptions, we respect that they may occur, and so the faculty reserve the right to make appropriate adjustments as the particulars of any case require.

Online "Help" Policy:

Generally: Students may not post any course content, nor any questions related to any assigned material, to any online venue

Why? There are many online 'help' resources, and while some may be legitimate, many are basically providing a homework outsourcing service, or otherwise violating the spirit (and often also the letter) of our course policies on cheating and collaboration. Importantly, we cannot control the quality of 'help' students receive from such sources, and experience indicates many 'answers' from such sources are of very low quality. Finally, given the truly extensive support this course provides through daily office hours, private and small-group tutoring, email-based help, collaborative assignments, and so forth, not to mention the support of the broader CMU community of learners, there is no compelling reason students should need any external sources. Posting course content online to seek help may result in failing the course on the first offense.

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.
Family/Health/Personal Emergencies: We understand that some of you may have emergencies occur during the semester that will disrupt your ability to focus on learning. If you have a family/personal emergency or if you are too sick to engage with the course, please let us know. We will need to confirm the emergency (with an email from your academic advisor for family/personal emergencies or a note from your healthcare provider for illness); once it's confirmed, we're happy to arrange extensions for assignments and tests until you're ready to rejoin the course. Note that we must be notified about emergencies before work is missed to provide extensions.

Recording (audio or video): Students may not record lectures or recitations without explicit permission in writing from the instructor. Violations will result in your failing the course. Exceptions will be granted in accordance with university guidelines for accessibility concerns, but even then such recordings may not be shared publicly or privately and must be deleted at the end of the semester.

Electronics: Research has shown that devices can greatly detract from student learning. Therefore, students may only use electronic devices during course events to attend those course events. Outside of this one (important) usecase, students should only use electronic devices with explicit permission from the instructors. Notes may still be taken, of course, but should be done with pen and paper. This policy is meant to help all students focus, as electronic devices are distracting for the user and result in worse outcomes.
Catastrophic Tech Failures: In the case of a catastrophic tech fail (a Zoom crash or a loss of internet resulting in a timeout) during a proctored event immediately stop taking the assessment and contact Prithvi ( who will handle scheduling your makeup. The makeup will either be at a later session the same day or an oral exam with a faculty member.

If there is a tech failure during a course event like lecture, recitation, or small groups try to rejoin as soon as possible. If you feel that you missed too much of the event due to the tech fail contact Prithvi ( who will direct you to a later session.
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 two-page one-stop-shopping summary of many CMU Student Support Services.