CMU 15-112 Syllabus
- Fast Info - office hours, grading, locations
- Overview - what 15-112 is
- Requirements - what you need to do
- Resources - how to get help
- FAQs - everything else
|Previous versions of the course:
15-112: F18, S18, F17, S17, F16, S16, F15, S15, F14, S14, F13, S13, F12, S12, F11
15-100/15-110: S11, F10, S10, F09, S09, F08, S08, F07
Summer: APEA-18, M18, M12, APEA-09, APEA-08
Instructor Office Hours:
Kelly Rivers (krivers): GHC 4109, Tu/Th 12:30-2pm
Michael Taylor (mdtaylor): GHC 4126, W/F 12:30-2pm
Arman Hezarkhani (armanh) and Chaya Wurman (cwurman): by appointment
Associate Head TAs:
Austin Schick (aschick) and Kyle Chin (kdchin): by appointment
TA Office Hours:
TP Season TA Office Hours:
Piazza Virtual Office Hours:
Piazza is monitored by TAs 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.
Scheduled weekly by recitation TAs.
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.
Final grades will be calculated as follows:|
Autolab's course grade score will be updated throughout the semester to estimate your final grade based on your current scores. To estimate your final grade based on the full grading scale, you can fill in this spreadsheet.
Midsemester and Final grades will be assigned using a standard scale:
A: [90 - 100]
B: [80 - 90)
C: [70 - 80)
D: [60 - 70)
R: [00 - 60)
Note that graduate students will be assigned +s and -s according to the following scale (generalized across letter grades):
The course 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.
Note: the class will also meet during the scheduled Friday lab session from weeks 1-3 only. These labs take places in the Gates 5th floor clusters. You may attend lab in any of the three cluster rooms.|
|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.|
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:
One: 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.
Two: 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 individually and collaboratively; 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:
All course content is included on the schedule here.
Checks are released on Sunday mornings and are due on Tuesdays before 10:30am (before lecture). These assignments consist of reading the course notes for the week and completing a set of simple exercises to test your understanding of the notes. We will teach lecture assuming that everyone has read the notes, so you should complete the checks on time!! Checks should take two hours or less to complete each week. You are allowed to work on them collaboratively if you wish. The homework assignment will be locked for you until you complete the check each week, so get it done early!
Homeworks are released on Tuesdays before lecture and are due on Sundays at 5pm. These assignments contain a mix of coding exercises (reading, debugging, and writing code) and written exercises. They generally assess the material taught the week they are released, and take several hours to complete. We strongly encourage you to start the homeworks early- Tuesday after lecture is best, and Thursday at the latest!
Homeworks should mostly be completed individually; read the Collaboration Policy for more detail. Some problems on homeworks will be marked as collaborative; on these problems (and these problems only), you may work on code with other students, as described in the Collaboration Policy.
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.
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.
Attendance & Participation
We will take attendance during lecture and recitation, to ensure that all students are attending and learning. You must be physically in the classroom during your scheduled lecture/recitation to be marked as attending. Of course, you should also be engaging with the material and focusing on learning!
Attendance in lectures will be taken using online forms or during interactive activities. These forms and activities will usually require using a laptop of phone. If you do not have a laptop, tablet, or internet-accessible phone, please contact the course instructors so that you can be excused from lecture attendance. If you are missing your laptop/phone on a specific lecture day, or if the form does not load for you, you may approach the instructor personally at the end of class to be marked as attending.
If you have to miss lecture or recitation for an approved reason (see FAQs), please contact the relevant lecture instructor or recitation TA before the class time to be excused from lecture/recitation that day.
Quizzes will be given about once weekly, generally at the beginning of lecture on Tuesday. 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 two midterm exams given in class, as noted in the course schedule. Each exam will cover material presented in the preceding weeks (with Midterm 2 focusing mostly on material not covered in Midterm 1). Midterms also test for fluency, though to a lesser extent than quizzes.
There will be a standard 3-hour final exam during the final exam period at the end of the semester. This exam will cover material from the entire semester. The final exam is built to allow enough time to attempt all problems.
|This Alternative Minimum Grading (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 the normal grading scale (see top of page), we will separately compute your grade using the following scale. Students do not sign up for AMG grading. 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 AMG score, first use the following to compute your raw score. If the resulting score is higher than a C, set it back to a C.
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:
Programming is like writing- to learn how to program, you must practice writing code yourself.
Therefore, we have a set of strict rules regarding what kind of collaboration is
allowed, what counts as overcollaboration, and what counts as cheating.
This section is long, but you should read all of it thoroughly, as we take collaboration and cheating very seriously in this course. To begin, here's a summary:
For all homework assignents, students are encouraged to talk to each other about high-level concepts regarding the problems. This includes:
Certain actions on homework assignments are considered overcollaboration; this means that a student might have attempted to collaborate with good intentions, but ended up collaborating at a level that became unhelpful for learning. Overcollaboration on homework assignments can include:
Certain actions within the course are considered cheating- that is, presenting work not written by yourself as if you wrote it, providing work to others, or receiving unauthorized help.
Cheating on homework assignments can include:
Penalties are decided by the course instructors, and can vary based on the severity of the offense. Possible penalties include:
Penalties may also be accompanied by a letter to the Dean of Student Affairs, again at the instructors' discretion. This can lead to university-level penalties, such as being suspended or expelled.
Programs are naturally structured, which makes them much easier to compare than hand-written work, and easier to compare than typed essays. We run an automated plagiarism detection system on all assignments to detect copied code. Here is a video demonstrating how it works.
In short: if you copy code, we will be able to tell. Don't copy code!
Your first year of college is a time when you do a lot of learning. Sometimes, you might make bad decisions or mistakes. The most important thing for you to do is to learn from your mistakes, to constantly grow and become a better person.
Sometimes, students panic and copy code right before the deadline, then regret what they did afterwards. Therefore, you may rescind any homework submission up to 24 hours after the grace-day deadline with no questions asked. Simply email the course instructors and ask us to delete the submission in question, and we will do so. Deleted submissions will not be considered during plagiarism detection, though of course they will also not be graded. However, it will always be better to get a 0 (or partial credit) on an assignment than to get a cheating violation!
|Extensions:||In general, due to the scale of the class, we cannot give individual extensions on assignments or assessments.
However, there are a few exceptions.
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 an ideal world, we would be able to support varying submission schedules so that all students could work at their own pace. Unfortunately, given the scale of the course, 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 2 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. Note that grace days may not be used on checks.
Once you run out of grace days, a late penalty of 25% will be applied for every hour that you submit late. In practice, this means that any assignment submitted after 8pm on Sundays will automatically get a 0. Submit your work on time, even if it isn't complete!
Additionally, no late/make-up quizzes or tests will be administered, except in the cases covered under the Extensions policy. Approved missed quizzes will be excused; approved missed exams will be taken in the following week.
|Regrade Requests:||We occasionally make mistakes while grading (we're only human!). If you find 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 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.|
|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, which may involve the use of computers to write programs or phones to submit quiz responses.
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 device as distracting not only for the user, but also for the students surrounding them.
|We gladly accommodate students with special needs (as approved by the Office of Disability Resources (ODR), as explained here). If you are eligible for accommodations, please deliver the appropriate form to the instructors in the first two weeks of the semester. If you need to acquire the form, contact Catherine Getchell, Director of Disability Resources.
Extra time: students who receive extra time on assessments will need to request proctoring from the ODR for each quiz and exam. The course instructors will send you a list of examination days at the beginning of the semester so that you can request proctoring in bulk. Extra-time assessments must take place on the same day as the in-class assessment.
Important: to use extended-time, you must attend the ODR-proctored quiz or exam 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 extended-time). If you are in lecture during a normal-duration quiz when you plan to take the extended-time quiz, you may remain in the room and work quietly on other materials (without electronics), or you may leave the room for the duration of the quiz.
|Auditing:||We have found that students who audit 15-112 do not tend to succeed, as they generally cannot dedicate the needed time to the course. Therefore, auditing will only be allowed in exceptional circumstances, and must be approved by the course instructors first.
If you wish to take 15-112 but don't want or need a full letter grade for it, you may take the course as Pass/Fail instead. This is a great option for graduate students who want to learn how to program but don't want to risk their GPAs! (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. 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.|
|Recording:||Students may not record audio or video of lectures or recitations without explicit permission in writing from the instructor. 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 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.