15-112 Syllabus



Previous Iterations of the Course

This is a well established course at Carnegie Mellon University. You can find the course website for previous iterations of this course at the following links. Former course websites can provide excellent sources of old quizzes and exams to study from.

Qatar: S26, F25, S25, F24, S24, F23, S23, S22, F21, S21, F20, S20, F19, S19

Pittsburgh: S26, F25, S25, F24, S24, F23, S23, F22, S22, F21, S21, S20, F19, S19, F18, S18, F17, S17, F16, S16, F15, S15, F14, S14, F13, S13, F12, M12, S12, F11, S11, F10, S10, F09, APEA-09, S09, F08, APEA-08, S08, F07

Course Description and Learning Outcomes

Official Course 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-121 or 15-122. Students seeking a more gentle introduction to computer science should consider first taking 15-110.

Unofficial Course 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:

  1. 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.
  2. You might want to learn how to program in depth, but have no intention of taking further CS courses. 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; these assignments will help you develop and practice your coding skills. You will also be assessed with a set of quizzes 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 3-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
  • Design and write a substantial (500-1500 line) program in Python with minimal guidance

Lecture Schedule

There will be four classes each week:
Sunday, 11:30 p.m. - 12:45 p.m.
Tuesday, 11:30 p.m. - 12:45 p.m.
Wednesday, 11:30 p.m. - 12:45 p.m.
Thursday, 11:30 p.m. - 12:45 p.m.

Classes on Sundays and Tuesdays will consist of lectures where we learn and practice different concepts. There will be short individual and group activities during the lectures. Wednesdays will be for recitations. Thursday's class will have a quiz at the beginning of the class and then lecture and exercises. The weekly quizzes will test topics that are covered in the readings, lectures, and exercises.

Grading and Submission

Grading Policy

 Course Component   Points   Notes 
Quizzes10%Lowest three quiz grades are dropped.
Exams 60%
Homeworks15%Submission score * Interview Multiplier
Term Project10%
Participation, Attendance, and Prereading5%See participation policy below.

Letter Grade Assignment
The course uses the standard grade percentages as follows:

  • [90, 100]: A
  • [80, 90): B
  • [70, 80): C
  • [60, 70): D
  • < 60: F

Final Grade Policy
You must receive a 60% or higher (calculating using the appropriate weightings above) on in-class assessments in order to receive a D or higher in the course.

You must receive a 65% or higher (calculating using the appropriate weightings above) on in-class assessments in order to receive a C or higher in the course.

Homework Late Submission Policy
In an ideal world, we would be able to support varying submission schedules so that all students could work at their own pace. Unfortunately, this is impossible. We need you to submit assignments on time so that we can promptly give feedback to all students, to support the learning process.

However, we understand that life can sometimes get in the way. Therefore, we provide 3 grace days for homework assignments. These can be used to submit homeworks up to 24 hours late with no penalty. You may only use one grace day per homework. We strongly urge you not to use these grace days immediately; try to save them for unforeseen events. Grace days can also be used to reschedule your weekly homework interview. See the homework interview section below for details.

Once you run out of grace days, late submissions will receive a score of 0.

Class Participation

Participation Policy
The Participation, Attendance, and Prereading (PAP) grade (worth 5% of your semester average) will be updated at mid-semester and at the end of the semester before the final exam, and depends on several factors relating to your accountability, engagement, and participation. The course requires you to attend and actively participate in all the lectures, recitations, required events, and mentor meetings. You are also expected to carefully read the course notes and other assigned readings and complete pre-reading checkpoints.

Pre-reading
Each week, you will be assigned a specific subset of the course notes in CMU CS Academy (including code snippets and walk-through videos) as required reading in preparation for the following topics. Most of these notes contain checkpoints that must be completed prior to the checkpoint deadline. The pre-reading checkpoint assessments will typically be due on Sundays before class. You should regularly read the course schedule and any course announcements, as there will be a few exceptions.

Successfully completing prereading assignments on-time will constitute 50% of your PAP grade.

Lecture Attendance and Mentor Meetings
Lecture and mentor meeting attendance will constitute 50% of your PAP grade.

You are expected to attend all lectures and recitations, and arrive on-time. Students who do not attend, or arrive late, will be marked absent. Each absence will remove 2 points (out of 25) from lecture attendance.

Starting from week 3, you will be assigned to one CA mentor. You should meet regularly with your mentor (once a week), and respect the pre-arranged meeting schedule. Not attending, arriving late, or requesting last minute time changes will result in you being marked as a no-show. Each no-show will remove 5 points (out of 25) from mentor meeting attendance.

Course Assessments

Homework

  • Homeworks are typically due on Tuesdays at 9pm. These assignments generally contain a coding exercises (reading, debugging, and writing code). They assess the material taught the week they are released, and take several hours to complete. We strongly encourage you to start the homeworks early- The day they are released is best, and within two days of release at the latest!

  • You may collaborate with classmates (students in 15-112 this semester) when working on your homeworks, but everything you submit should be typed and understood by you.

  • You should not us AI on the homeworks, because then you won't learn the things the homeworks are designed to help you learn.

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

  • 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 CA.

Homework Interviews

After submitting the homework, the course staff will conduct interviews to evaluate your understanding of your solutions. The interview will be carried out every week at the same time and it will be scheduled at the beginning of the semester. Each interview will take at most 15 minutes. You will receive an interview score in the range 0 to 1.02. That score is multiplied by your score on the programming portion of the homework in order to determine your final score for that homework.

For example, if you receive a 99/100 on the programming portion of the homework, but your interview goes badly and you get a 0.4, then your final score for that assignment is:

99 * 0.4 = 39.6/100

The rubric for evaluating the interviews with a grade score between 0 (no show) and 1.02 is as follows:

  • 0.3: Explanation does not show much, if any, understanding of what is going on.
  • 0.55: Explanation does not show a solid understanding of what is going on.
  • 0.70: Explanation is not fully satisfactory.
  • 0.85: Very few misunderstandings in the explanation.
  • 1.0: Clear and didactic explanation. (Most students who solve the problems themselves, and understand their solutions well, are expected to get this score.)
  • 1.02: Amazing explanation that goes above and beyond expectations.

The course staff might also ask for small variations of a problem to gauge understanding. In particular, we encourage you to not be afraid to say wrong things, you can always correct yourself!

You should strive for a clear, concise, and didactic explanation of the solution logic and answers to course staff questions. Think that you are explaining your solution to someone who is one month behind you in this course.

Note that if you are getting too much help with the homeworks, to the point that you are not able to properly explain it or answer questions about it during the interviews, you will consistently loose your homework grade. So make sure you are actually understanding what you are doing, and not copying it.

We recognize that life comes up, and a student may need to reschedule their interview. Therefore, if you need a one-off interview reschedule due a conflict, you may do so by filling out the interview reschedule form form. We will contact you to give you a new slot on Sunday between 1:00pm and 2:30pm, or Sunday after 5:15pm. The timing of your reschedule will be determined by the course staff and cannot be negotiated. (So don't delay your interview if you aren't available during all of the specified slots.) You must submit the form by 3:00 PM on the day of your scheduled interview. Note that moving your interview costs you one homework grace day, even if your code submission was on time. If you do not have any grace days remaining, then you cannot reschedule your interview.

If you use a grace day on your homework submission, and your scheduled interview is on Wednesday, then you can delay your interview without any additional penalty beyond the grace day you are already using. Fill out the interview reschedule form and we will contact you to give you a slot on Thursday evening, Sunday between 1:00pm and 2:30pm, or Sunday after 5:15pm. The timing of your reschedule will be determined by the course staff and cannot be negotiated. (So don't delay your interview if you aren't available during all of the specified slots.) You must submit the form by 3:00 PM on the day of your scheduled interview.

Rules of Conduct:
  • You cannot consult extra material, it is only you and your brain.
  • You can ask clarification questions, but we might not answer if they give away the solution.

You have limited time to convince us that you know what you are doing, so prepare in advance.


In-Class Written Assessments

  • Quizzes will be given weekly at the beginning of lecture on Thursday. Quizzes generally cover material from the previous week and the previous homework. Quizzes are designed to be time-intensive, to test for fluency and demonstrate where additional study is needed.

  • There will be three exams given in class, as noted in the course schedule. Each exam will cover material presented in the preceding weeks (i.e., focusing mostly on material not covered in previous exams). Exams also test for fluency, though to a lesser extent than quizzes.

Making Up Quizzes
No late / make-up quizzes will be administered. Your three lowest quizzes will be dropped, so if you miss a quiz then it will likely just be dropped.

Making Up Exams
If a student misses a scheduled exam, no make up exam will be given. Instead, the student can take the exam during the final exam slot at the end of the semester.

Retaking Exams
During the final exam slot, students may retake one exam. There are numerous reasons that a student might want to retake an exam; here are some examples:

  • The student missed an exam due to illness, family emergency, university sponsored trip, oversleeping, etc.
  • The student performed poorly on an exam and wants to try and do better.
Important notes on retakes:
  • When a student retakes an exam, the score on their retake replaces their original score for that exam.
  • The retake exams are new exams on the specified topics.
  • A retake exam replaces the earlier score for that same exam. For example, if a student retakes Exam 2, then the score is used to replace their original score for Exam 2. They cannot retake Exam 2 and have it replace the score for Exam 3.
  • Students must sign-up for retake exams. After the grades for Exam 3 have been released, a sign-up form will be sent. Students who do not sign-up before the deadline will not be permitted to take any retakes during the final exam slot.

Electronics During Assessments
Students may not have any electronic devices on them, or near them, during any assessments. This includes phones, watches, calculators, etc. All electronics (and other personal belongings) should be placed at the front of the room prior to the start of the assessment. Any student found with electronics on them or near them will receive a -100% on the assessment and an academic integrity violation will be filed with the University.

Academic Integrity

This course has a rigorous academic integrity policy and it is strictly enforced.

Refer to the course academic honesty policy.

Resources

Course Resources

  • Course Notes: There is no required textbook for this course! We will primarily use the course notes on CMU CS Academy (and occasionally this webpage) instead. The course notes 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.
  • Office Hours: Office hours let you ask questions to CAs and professors directly, and 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! You can even hang out at office hours if you don't already have a question! When you do have a question, make sure to be prepared to ask it as efficiently as possible- during busy hours, each CA is only allowed to spend five minutes with each student.
  • Discord: Discord can be used to ask quick questions and receive quick responses without attending office hours in person. Questions on Discord should be specific and include all needed information (so if your code has an error you don't understand, include the code and the error message in a private question).

Required Software
You should have a computer (ideally a laptop). However, it does not need to be very new or powerful. We recommend an Apple or Windows laptop, though common distributions of Linux will also work. Please contact us if you cannot reasonably get access to a computer. You will need to bring to lecture and recitation an internet-accessable device that is able to, at the very least, access Discord and Google Forms and respond to poll questions. A laptop will certainly work; a smartphone or table should be sufficient too. Please contact us if you cannot reasonably access a device that you can bring to each lecture. Every required software package we use is available for free on the web. This includes:

  • Python version 3.x (3.10 or later), which can be freely downloaded from python.org.
  • A code editor. If you have never used Python before, we recommend Thonny.

External Resources
Note that all textbooks/resources are optional.

Classroom Etiquette

Electronics
Research has shown that devices can greatly detract from student learning. Therefore, students may only use electronic devices in lecture during learning activities which involve those devices.

Outside of these events, 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 not only for the user, but also for the students surrounding them.

Recording
Students may not record audio or video of 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.

Attendance
Your regular, on-time attendance of class is important for your success. As such, class attendance is mandatory and graded as described in the grading policy. In addition, arriving late is not permitted. If you attempt to enter the classroom after class has started, you will be asked to leave. If you arrive late for a quiz, you will not be permitted to take the quiz or make it up.

FAQs

Extensions
In general, we cannot give individual extensions on assignments or assessments. However, there are a few exceptions.

  • Medical Emergencies: If you are sick to the point that you cannot attend class or do work, go to the doctor! If you have a short illness (such as food poisoning or the flu) you should simply use a grace day (for homework) or a dropped quiz for a quiz. Students who have prolonged medical emergencies may obtain extensions from the instructors after coordinating with the Office of Health and Wellness.

  • 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 immediately! They can help support you in your time of need, and will also reach out to all of your instructors (including me) to request extensions for you.

  • University-Approved Absences: If you are attending a university-approved 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. You must provide confirmation of your attendance, usually from a faculty or staff organizer of the event.

Please note that extensions must be requested before the assignment/assessment deadline.

Regrade Requests
We occasionally make mistakes while grading (we're only human!). If you find a mistake which you would like us to correct, submit a request using the Gradescope regrade request feature; but only after 24 hours and before one week from the grade publication.

Meanwhile, you should provide a detailed justification for your judgment. You can submit a regrade request only for clear grading errors, such as a missed page, miscalculated score, or incorrect deduction. Do not request a regrade to dispute the rubric or argue for more points.

When we receive your request, we will either regrade or meet you in person to ask for more details to make a decision. Any request sent not within this range will be ignored. Additionally, it is impossible to regrade the quiz or exam after one week, except in the case of severe medical or family emergencies or other university-approved absences.

Note: Regrade requests may result in the entire assignment being regraded, not just the incorrectly graded part.

How to do well in this course
Our goals are for you to succeed in this course and to teach you skills and concepts that will contribute to your success in life. To this end, we are providing you with lots of resources and the knowledge that comes from years of experience. Talking to some of the thousands of students who took this course before you, here's some advice that they found particularly useful:

  • Do not stress over grades: your goal is to learn new and exciting things. Good grades follow naturally from deep learning (but not necessarily vice versa). ...and employers care about what you know not what grade you got.
  • Participate: you will get a lot more from this class if you ask questions and engage with the course staff than if you are a fly on the wall — and it will be more fun.
  • Manage your time wisely: allocate sufficient time for homework and learning. Little adjustments can save you a whole lot of time later and have a huge impact on your performance. In particular, use class time to learn, review the material presented in lecture the same day, and schedule time for homework proactively.
  • Start homework early: racing against a deadline is so stressful! Starting early will remove that stress, lead to deeper learning and give you time to improve your solution if you feel like it. Get all the help you need: we provide plenty of resources to help you succeed in this course — office hours, online help 24-7, and friendly staff when you need them. Take advantage of them: they are there for you! The only thing we ask is that you plan a bit ahead: helping students takes time and there are not enough of us if everybody waits up to the deadline.
  • Make time for fun: take a break from studying at least once a day — meet with friends, go for a walk, play sports, whatever gets you to reset your mind.

Other

Diversity
It is my hope that students from a diversity of 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 students bring to this class be viewed as a resource, strength and benefit. It is my intent to present materials and activities that are respectful of diversity: gender, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, religion, and culture. Your suggestions are encouraged and appreciated. Please let me know ways to improve the effectiveness of the course for you personally or for other students or student groups.
This statement is adapted from The University of Iowa Department of Education.

Accommodations for Students with Disabilities
Carnegie Mellon University is committed to providing reasonable accommodations for all persons with disabilities. If you have a disability and have an accommodations letter from the Disability Resources office, I encourage you to discuss your accommodations and needs with me as early in the semester as possible. I will work with you to ensure that accommodations are provided as appropriate.

If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources (https://www.cmu.edu/disability- resources/students/), I encourage you to contact them directly at access@andrew.cmu.edu or through the CMU-Q Office of Health & Wellness or CaPS-Q.

The Office of Disability Resources will review the information you provide. All information will be considered confidential and only released to appropriate persons on a need-to-know basis. If you have questions regarding accommodations, you may email the Director of the Office of Disability Resources, Catherine Samuel, at csamuel@cmu.edu. Further information is also available by contacting the CMU-Q Office of Health and Wellness.

If you have approved accommodations that you intend to use for this course, please discuss them with me as soon as possible so that we can ensure that you have the support you need.

Take Care of Yourself
We all feel stress at different times and for different reasons, and when we do, it is good to reach out for support. Do your best to maintain a healthy lifestyle by eating well, exercising, getting enough sleep and taking some time to relax. Please know that you are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner, rather than later, can often help your situation from getting more complicated. If you or any of your CMUQ peers are experiencing academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support.

Our Student Affairs staff are here to help:

  • Amie Rollins, Office of Health and Wellness (CMB 1103), amier@andrew.cmu.edu, 4454-8680
  • Dr. Atorina Benjamin, Counseling and Psychological Services (CMB 1104), atorinab@qatar.cmu.edu, 4454-8525
  • Dr. Dalia Rehal, Associate Dean for Student Affairs (CMB 1093), drehal@qatar.cmu.edu, 4454-8545

Consider reaching out to a friend, faculty, staff, or family member you trust for help. If you would like to speak to a trained professional for mental health support, day or night, call our ProtoCall hotline at 5554 7913, which is staffed by trained mental health care providers.

If the situation is life threatening, please call 4454 0999 for an on campus emergency or 999 for an off campus emergency.