Syllabus found here: https://www.cs.cmu.edu/~15122/syllabus.shtml
There is no textbook. Lecture notes can be found here: https://www.cs.cmu.edu/~15122/schedule.shtml
C0 is a safe variant of C augmented with contracts, specifically designed for 15-122. Directly from the Syllabus, C0 provides garbage collection (freeing students from dealing with low-level details of explicit memory management), fixed range modular integer arithmetic (avoiding complexities of floating point arithmetic and multiple data sizes), an unambiguous language definition (guarding against undefined behavior), and contracts (making code expectations explicit and localizing reasoning).
The end of the course transitions from C0 to C, and we use
valgrind
to ensure proper memory management.
You have your choice of environment, as long as it’s compatible with Andrew Unix
Homework is 45%, exams are 50% (10 midterm 1, 15 midterm 2, 25 final), and 5% is classwork/participation. From the syllabus: All you need to earn the 5% grade for this portion of the course is to accumulate 50 points overall
Each recitation where you attend and participate is worth 1 point.
Each lab is graded on a 0-3 point scale, assigned as follows:
There will be one activity worth 1 point during or after each lecture
Homeworks and exams will be graded within two days typically. Grades are posted here. Evaluation is based off of correction and elegance. There are no late days for written assignments, and every student has 3 late days total to use on programming assignments, with each assignment being allowed one late day maximum. No late days can be used on the last programming assignment.
First, ask TAs at office hours. If that doesn’t work, fill out this form (no batch jobs): https://forms.gle/fwZxq9j6zXqFo7ke9. All regrade requests must be filled out within 3 days of the grade being returned.
Class is uncurved.
From the syllabus: students who are unable to demonstrate a basic proficiency with the C language in the last few programming assignments will receive a D in the class
Don’t cheat. Don’t copy code, no collaboration.
If you have copied code, or have another reason to do so, you may ask to have a code submission deleted no questions asked. Deleted submissions are not considered during academic integrity checks, but receive grades of 0.
From the syllabus:
You are allowed to clarify the writeup of homework assignments with other students, but not work on a solution or brainstorm answers with them. You are welcome to freely discuss course material (lecture notes/slides, practice exams, lab handouts, recitation handouts, blank writtens and programming writeups) as well as to review graded assignments with students taking the course in the current semester. You may give or receive help with computer systems, compilers, debuggers, profilers, or other facilities (as long as answers and/or code are never visible).
You are not allowed to refer to solutions and/or code written by past or present students, or found on the web, not even to “double-check” your own solution. You may not post code from this course publicly (e.g., to Bitbucket or GitHub). You are not allowed to use any materials from previous iterations of the course, including your own. You may not discuss or receive any help on homework assignments with students who have previously taken the course (excluding current TAs).
We will be using the MOSS system to detect software plagiarism. Whenever a programming assignment is similar to a homework from a previous course edition, we will run MOSS on all submissions from that edition as well. All solutions from the Web are also in MOSS — you should assume that if you were able to find it, we have already found it.
If you are uncertain whether your actions will violate this policy, please reach out to a member of course staff to ask beforehand.
Delete all your old stuff. Self-plagiarism is a thing.