CMU 15-112 Syllabus
Previous versions of 15-112/15-110/15-100:
S18 (coming soon), 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
|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. 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 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 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:
|Locations and Times||
|See the topic list and schedule here (includes schedule, notes, video mini-lectures, homeworks, quizzes, and tests).|
15-112 can be an intense course, but it becomes much more manageable if you use the course resources. These resources include:
Instructor Office Hours:
Edward Dryer (edryer): GHC 4003, Mon-Fri 1pm to 3pm
Jordan Stapinski (jstapins): by appointment
Associate Head TAs:
Jason Gong (jxgong) : by appointment
TA Office Hours
Saturdays 12pm-2pm, WEH 5302
Note: For week1 the review session will be on Sunday. See Piazza.
Piazza Virtual Office Hours:
* Daily (7 days/wk): 5pm - 11pm (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.
|Every required software package we use is available for free on the web. This includes:|
Note that all textbooks/resources are optional. There are no required textbooks for this course.
Solo homeworks are released every 1-2 days. See the schedule for due dates. These homeworks are used primarily to assess learning. 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 several hours to complete. We strongly encourage you to start the homeworks as soon as possible after lecture.
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.
We will take attendance during labs, recitation, and lecture, 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 during interactive activities that are also used for learning. These activities will often 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 have to miss lecture or recitation due to a university-approved event, 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.
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.
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.
Quizzes will be given once weekly. Quizzes generally cover material from the current week. Quizzes are designed to be extra hard, to demonstrate where additional study is needed.
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 in the first two weeks of the semester. If you need to acquire the form, contact Catherine Getchell, Director of Disability Resources.
For in-lecture quizzes, the extended-time quiz will be administered at a separate location at noon that same day. If you have a university-approved time conflict at that time, please let us know ahead of time and we can arrange another time on the same day as the quiz, or by prior arrangement with the ODR. For in-recitation quizzes, should they occur, the extended time will be provided immediately in the same recitation period. For midterm and final exams, the ODR proctors the extended-time sessions.
Important: to obtain extended-time, you must attend the extended-time 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 attending lecture or recitation and a quiz is commencing that you have already completed (having taken the extended-time version of the quiz that morning), you may remain in the room and work quietly on other materials or you may leave the room for the duration of the quiz (your choice).
Test Late Policy:
Unfortunately, the scale of this class makes it impossible to allow general flexible time for taking tests. Therefore, no late/make-up quizzes or tests will be administered, except in the case of medical or family emergencies or other university-approved absences. Students who fall into this category should obtain instructor approval before missing the test. Approved missed quizzes & exams will be taken in the following week.
Each homework, quiz, 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.
The lowest 2 homeworks and the lowest quiz are all half weighted.
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:
The half-weight policy (for the lowest two scores) still applies to the best-5 homeworks, but it does not apply to the best quiz (since that makes no sense with only one quiz 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 faculty) on every homework, quiz, 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:
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 solo 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. We strongly urge you not to use these grace days immediately; try to save them for unforeseen events.
After you have used your grace days, no further extensions are allowed. Therefore if you find that you have not finished an assignment by the deadline and have no grace days left, submit it anyway before the deadline; often you will get partial credit for the work you've done.
Students who have medical or family emergencies or other pre-arranged university-approved absences (such as multi-day athletic or academic trips) may request an extension from the course faculty. You should request these extensions before the assignment due date. These extensions are separate from grace days. 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).
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.
In exceptional circumstances submissions (medical emergency, etc) may be accepted past the deadline. If you are requesting submission past the deadline, do not modify your file; email Jordan (email@example.com) 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.
Regrades are handled by Jordan (firstname.lastname@example.org) on a case by case basis. If you would like to request a regrade, email Jordan. When you email, please include all relevant details (picture of the quiz, relevant file, etc). Regrades must be requested within one weeks 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, but you may not look at or copy the code.
Collaborative / Group-Based Homework Policy:
Note that some assignments (or portions thereof) will be explicitly marked as collaborative or group-based. In those (and only those) assignments, you may work with other students who are enrolled in the class, even writing code together, and certainly debugging each other's code. However, you may only work with students currently enrolled in 15-112, and you must include a list of all the students you collaborated with 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:
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.
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 Student Health Services 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 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 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.