Yes, this page is long, but it is important to read it in its entirety, otherwise you might act against course policies, which could have serious consequences.


We encourage you to listen attentively to the lectures, but also participate actively by asking helpful questions occasionally, answering questions occasionally, and so forth. Your lecture attendance and participation are important to your success in the course and to the success of the course as a whole. Lecture participation may be partially measured using responses to iClicker questions. You must only submit your own iClicker responses — it is a violation of course policy to submit for someone else's iClicker, or to ask someone to answer questions using your iClicker.

Some of the material covered in lectures is not covered in the textbooks or precepts. Some exam questions may reward your lecture attendance.


We urge you to attend the precepts! We also encourage you to participate actively in the precepts by listening attentively and expressively, asking helpful questions occasionally, answering questions occasionally, and so forth. Your precept attendance and participation are important to your success in the course. They also are important to the success of the course as a whole, and so will be components of your participation grade.

Some of the material covered in precepts is not covered in the textbooks or lectures.

You should attend your precept, that is, the precept for which you are registered in Princeton's TigerHub system.

Concerning attending another precept instead of your precept:

Generally it is not acceptable to attend another precept instead of your precept consistently. Your participation grade will suffer if you do not participate in your precept. However, it is acceptable to attend another precept instead of your precept occasionally if a conflict with your precept arises. (Indeed you should do so.) In that case, as soon as you become aware of the conflict, send e-mail to your preceptor and the other preceptor. The other preceptor thereby will know to duplicate handouts for you, make sure you have a seat, etc. Note that this mechanism is intended to address occasional conflicts; it does not provide license to attend precepts other than your precept on a regular basis.

Concerning attending another precept in addition to your precept:

Generally it is not acceptable to attend another precept in addition to your precept consistently. After all, if even a small fraction of the course's students did that routinely, then some precepts would be very large (or even overflow) routinely. Precepts containing a large number of students are less effective than those containing a small number. However, it could be acceptable to attend another precept in addition to your own occasionally. In that case, send e-mail to your preceptor and the other preceptor the day before the precept, asking permission to attend. The preceptors then will make the decision.

Electronic Communication

These are the course's policies concerning electronic communication:

In the context of electronic communication, the phrase "any of your assignment solution" includes:

Assignment Conduct

The policies described in this section supplement University academic regulations. This course has course policies that go beyond University policies on academic conduct. Princeton's Rights, Rules, Responsibilities handbook asserts:

The only adequate defense for a student accused of an academic violation is that the work in question does not, in fact, constitute a violation. Neither the defense that the student was ignorant of the regulations concerning academic violations nor the defense that the student was under pressure at the time the violation was committed is considered an adequate defense.

If the course staff suspects that you have violated course policies concerning assignment conduct, then the course staff will investigate, make an appropriate determination, and apply a penalty. The default penalty is a 0 grade for the assignment on which the violation took place, but the course's instructor of record may adjust this penalty to as little as 0 credit for the portion on which the violation took place, or to as much as an F in the course for a particularly severe violation. Additionally, if the course staff determines that you may have violated University policies, you will also be referred to the Committee on Discipline or other relevant body. These bodies may impose additional penalties. Note that it is possible to violate the course policy without violating University policies. In those cases, the ruling on University policy does not override any penalty for the course policy violation.

This course takes policy violations seriously, and so does the University. According to the University document Academic Integrity at Princeton, plagiarism can occur when as little as "one key word" is used without citation (see the ODOC Academic Integrity page for more).

If you have any questions about these matters, please consult a course staff member.

Concerning receiving help:

In short: To help you compose an assignment solution you may use only the authorized sources of information that are listed below, may consult with other people only via the course's Ed forum or via interactions that might legitimately (see explanation below) appear on the course's Ed forum, and must declare your sources in your readme file for the assignment. Using impermissible sources is a violation of course policy. Failure to cite sources is also a violation of University policy. While citing an impermissible source may avert plagiarism, it does not avoid the restrictions imposed by course policy.

To help you compose your assignment solutions you may use:

To help you compose your assignment solutions you may use only the sources of information listed above. For example, you may not use:

There are three exceptions to those policies:

Examining and/or copying someone else's code is an egregious violation of course policies and perhaps University policy. Copying and transforming someone else's code (by rearranging independent code, renaming variables, rewording comments, etc.) is just as egregious (and perhaps moreso, because it displays intent to deceive). Some inexperienced programmers have the misconception that detecting such violations is difficult; actually it is quite easy. Not only do such violations quickly identify themselves during the grading process, but also we can (and do) use software packages, such as Alex Aiken's renowned MOSS software, for automated help.

There is one exception to that code-copying-and-transforming policy. You may adapt code from the course materials provided that you explain what code you use, and cite its source in your readme file.

For each assignment you must declare, in your readme file, the authorized sources of information that you used to compose your assignment solution.

For each assignment you also must declare in your readme file the unauthorized sources of information and help that you used to compose your assignment solution and explain in detail any violation of course policy and University policy. The penalty for course policy violations will depend on the level of severity and the level of clarity in these explanations. Declaring that "(So-and-so) offered a key insight about the challenge portion" is less severe than "I copied the majority of this assignment from (So-and-so)". Declarations such as "I got help from a friend" are less clear and detailed than either of the previous examples, to the extent that they may not even constitute a viable citation, risking rising to a violation of both course and University policies.

Concerning providing help:

In short: You may help other students with assignments only via the course's Ed forum or interactions that might legitimately appear on the course's Ed forum, and you may not share your assignment solutions with anyone, ever, in any form.

You may not provide assignment-related help to another student in any form (verbally, computer files, e-mail messages, pencil/pen on paper, marker on white board, chalk on black board, etc.) at any level of detail (code, pseudo-code, flow charts, outlines, diagrams, natural language prose, etc.) at any time (before or while the student works on the assignment solution). That policy holds even after the due date/time of the assignment, and even after the course is finished. That is, you may not provide assignment-related help to students who take the course in future semesters.

There are four exceptions to those policies:

Sharing your assignment-related code/comments with another student is an especially egregious violation of course policies. Sharing your code/comments in digital form is even more egregious. Do not give hard copy of your work to anyone. Do not e-mail your work to anyone. Do not make your work available to anyone via the web.

Any source code repositories containing your work should be configured to be private, with no additional collaborators (with the exception of a partner for partnered assignments detailed below). When you pull a local working copy of a repository onto the armlab cluster (or any shared computing environment), use the filesystem's permissions to make your files private. You can create a private directory in the CS armlab filesystem by issuing commands similar to these in a shell logged into that cluster:

      mkdir cos217
      chmod 700 cos217

Similarly, you should ensure security of your personal computer, external hard drive or flash drive containing your work, etc. with a password and enable password protection whenever you leave it unattended.

Remember that you are responsible for keeping your assignment-related work away from prying eyes. If someone else copies your work, we have no way of knowing the circumstances. In that case we will refer the matter to the Committee on Discipline, and the Committee will investigate.

Concerning retaking COS 217:

If you took COS 217 (or part of it) during a previous semester, then you may use your work on assignments from that previous semester. However you may not use:

Concerning partnered assignments:

Some of the assignments will allow you to work with 1 partner. You may choose to work alone on some or all of the partnered assignments (though we don't recommend it), to work with the same partner on multiple assignments, or to switch partners between assignments, as you see fit.

Only one partner should submit the final version of the assignment. If the other partner has submitted along the way before the final version, that partner must retract those submited files using the unsubmit command. Failing to do so may waste grader time and resources and incur a penalty.

You must "declare" your partnership upon submission. To do so, as part of your final submission create and submit a ".partner" file named with the pattern NETID.partner (where NETID is the armlab login of the partner who is not issuing the submit command). Thus, if you are submitting assignment X for you and your partner joestu, joestu would issue no submit commands and you would issue these commands in addition to the other file submissions:

        touch joestu.partner
        submit X joestu.partner
Please be sure the file has the .partner extension (that's how we recognize it) and that you have used your partner's actual netid (don't submit, literally, netid.partner nor a .partner file with your partner's email alias instead of their netid).

Both partners for an assignment will receive the same grade on that assignment. Following from this, both partners must use the same number of late days. (See the full lateness policy below.)

As far as fairness and joint effort are concerned, the overarching principle is that each partner is responsible for equally sharing in all elements of the assignment. This precludes "divide and conquer" approaches to the assignment. It also requires introspection to prevent a situation in which you are "carrying" your partner or allowing yourself to be "carried".

We believe that the COS 126 partner collaboration policy is a good guideline with lots of good advice. COS 217 allows more leeway in terms of making progress without both partners being present, however, so long as the above principle holds. One example that we will permit that the COS 126 policy may not have allowed is working on the assignment in office hours that only one partner can attend. (Though we do encourage you to find an office hour session you both can attend!)

Exam Conduct

Conduct during exams is covered by the University Honor Code. If we suspect a student of inappropriate conduct during either the midterm or final exam, then we will refer the case to the Honor Committee (for in-person exams) or Committee on Discipline (for remotely administered exams). If the appropriate Committee finds the student guilty of inappropriate conduct, then the standard course penalty is automatic failure of COS 217, but the course's instructor of record may adjust this penalty to as little as 0 credit for the portion of the exam on which the violation took place. The presiding Committee may impose additional penalties.

Assignment Late Submission

You should submit your work on an assignment before its due time. If an assignment consists of multiple files, then we will consider the date-time of submission of your work as a whole to be the same as the date-time of submission of the last file that you submit.

If you will be submitting after the deadline, you must submit a file named notdone for the assignment to indicate that your work is incomplete. You can create such a file and submit it for assignment X with these commands:

      touch notdone
      submit X notdone

If the deadline has passed and this file is not submitted, we may grade any submitted work as-is. When you have finalized your work, you must retract the notdone file. We may not grade your submission until you have done this. You can do so with the command: unsubmit X notdone

For partnered assignments, only one partner should submit the notdone file, but the submitting partner should submit the partner declaration file (the one named with the pattern NETIDi>.partner described above) at the same time as the notdone file. This way, we know the other partner is also accounted for.

Late assignments are assessed a penalty equal to 10% of the possible points on the assignment per day (or partial day) late. The penalties for your first four late days are waived automatically. Additional late penalties will be waived only in the case of unforeseeable circumstances, documented by your Dean or Assistant Dean for Studies. In these cases, you should discuss the matter with your preceptor as soon as possible. Please plan your work on the assignments so that travel, religious holidays, conflicting deadlines for other classes, etc. do not cause you to submit late.

Some of the assignments involve partnering with another student. For these assignments, the penalty will be applied equally to both partners. The number of free late days a partnership can use is the minimum of the number of free late days each partner has remaining. (A partner with more late days available would retain the excess for future assignments, if any, with a different partner or alone.)

You may not submit your work on any assignment after 4:59PM on Dean's Date without getting explicit permission as specified by University policies — typically from the appropriate Dean and the COS 217 instructor-of-record.


For most assignments, your feedback and grade will be released to you before the subsequent assignment is due, so that you can integrate any relevant feedback into your solutions to that next assignment. If you believe your assignment has not been graded correctly, you may submit a regrade request to your preceptor by email. This must be done before the subsequent assignment's feedback and grade is released, with the exception of the last two assignments, whose deadlines will be specified when they are released.

Exam solutions will be released once all students have taken the exam. Exam grades will be released once all exams have been graded. The deadline and procedure for regrade requests will be specified when the exam results are released, as these may depend on whether the exam was graded on paper or online and the timing for this semester.

Your final grade will be weighted as follows:

Component Approximate Weight
Assignments 55%
Midterm Exam 15%
Final Exam 25%
Participation 5%

To determine your participation grade we will consider the extent to which your involvement in the course positively affected the course as a whole. Did you attend and participate actively in class meetings? Did you participate effectively on Ed by asking helpful questions or providing helpful answers? If you can answer "yes" to those questions, then you have made the course a better experience for other students, for the instructors, and for yourself.

Conversely, we also will consider the extent to which your involvement in the course negatively affected the course as a whole. Did you miss class meetings frequently? Did you attend the wrong precept (without prior approval) frequently? Were you often distracted during meetings, or were you a source of distraction for others? Did you frequently send messages to Ed that are inappropriate, asking questions that were answered previously on Ed, or asking questions that are covered plainly in the readings? If you must answer "yes" to any of those questions, then you have negatively affected the course for all concerned.


The only person who can grant deviations from the above-stated policies is the COS 217 course's instructor-of-record, and such waivers will only be granted via e-mail or written communication. No other waiver from other sources can modify these policies. It is the student's responsibility to adhere to the policies, and to ignore any implied or explicit waiver from any unauthorized source. For example, if the student asks a preceptor, Intro Lab TA, Dean, or friend if something is permissible, any response that deviates from course policy cannot be used to justify any action that is contrary to course policy.