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.
Please come to lectures; you'll learn about generalizable concepts that will serve you well in later courses and larger programming endeavors.
Please come to, and participate in, your assigned precept; it's the best way to be prepared for the assignments and quizzes and exams. (Also, it's the primary component of your participation grade.)
Use Ed Discussion to get answers to your questions and help answer others' questions, but you may not reveal anything about your assignment solutions in public posts there.
This semester we are piloting a revised Assignment Conduct policy, but you must follow the policy: this is not a free-for-all with no rules. You must disclose all information pertaining to your code's provenance, including both human sources and generative prompts.
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 engage actively in the precepts by listening attentively and expressively, asking helpful questions occasionally, answering questions occasionally, actively participating in group activities, 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 significant 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 TigerHub.
Generally it is not acceptable to attend another precept instead of (or in addition to) 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 ofyour precept occasionally if a conflict with your precept arises. (Indeed you should do so if at all possible.) In that case, as soon as you become aware of the conflict, send e-mail to your preceptor and the other preceptor so that the latter may be prepared to accommodate you. 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.
It is also not acceptable to attend another precept in addition to your own. The course maintains an archive of video-recorded versions of most precepts on Panopto Video on Canvas. These can be watched at your discretion to facilitate reviewing material that you didn't fully understand in your own precept.
These are the course's policies concerning electronic communication:
If you have a question that you can express without revealing any of your assignment solution, then you may post it in a public post on the course's Ed Discussion forum. One of the course's instructors will respond as soon as possible. Other students also are welcome to respond if they can do so without revealing any of their assignment solutions either.
If you have a question that you cannot express without revealing any of your assignment solution, then you may post a private post on Ed. You should not, however, post your code to Ed. Instead, submit it on armlab, so that whichever instructor answers the post may reference it.
In the context of electronic communication, the phrase "any of your assignment solution" includes:
The products that you create for the assignment, that is, your source code files (including comments), DFA files, Makefiles, readme files, test files produced, etc. You may not show any of the products that you create for the assignment, modified versions of them, or any parts of them, on Ed.
Descriptions of those products in the form of pseudo-code, flow charts, outlines, diagrams, natural language prose, etc. You may not describe the products that you create for the assignment, or any parts of them, on Ed.
Design decisions that you make in the process of creating those products, that is, your decisions about how to express your program as files, your files as functions, your functions as statements, etc. You may not describe your design decisions or suggest design decisions on Ed.
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 in Section 2.4.8:
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 or University policies concerning assignment conduct, then the course staff will draft a submission to the Committee on Discipline or other relevant body such that they will investigate the concern. If found responsible by the appropriate due process, in addition to whatever sanctions are imposed at the University level (e.g., warning, probation, or suspension) the default penalty within the course will be a 0 grade for the assignment on which the violation took place, but the course's instructor 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 constellation of violations or a particularly severe or eggregious case of misconduct.
This course takes policy violations seriously, and so does the University. According to the University's Rights, Rules, Responsibilities, plagiarism can occur when as little as "even one phrase" is used without citation (see the ODOC Academic Integrity page for more).
To help you understand course material or compose an assignment solution you must adhere to the following rules:
man
pages
from the armlab cluster). These sources should be acknowledged
in your readme
file, but do not have to be cited
specifically (e.g., with a page number or URL) unless copied
verbatim.readme
file.readme
file.Below are some additional details to the summary list above. If you have any questions about these matters, please consult a course staff member.
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.
For each assignment you must declare, in your readme
file, the sources (both authorized and unothorized) of
information that you used to compose your assignment solution. For
materials directly from our course, acknowledging the general
category of source is acceptable: you do not have to specify
which page of the textbook or precept handout you used,
unless it is copied exactly. For external resources, you must
identify the book or website and indicate how you came upon it. For
human sources, you must identify the person by name. For AI
interactions, you must explain the interactions, e.g., by listing
your prompts or summarizing your iterative "conversation".
Identifying unauthorized sources of information with
sufficient clarity and detail will help the course staff and the
Committee on Discipline determine the severity of the violation. For
example, declaring that "(So-and-so) offered a key insight about the
challenge portion" is less severe than "I copied the
foo
function verbatim from (So-and-so)" which
is likewise less severe than "I copied the majority of this
assignment from (Some URL)". Declarations such as "I got help from a
friend" are less clear and detailed than the previous examples, to
the extent that they may not even constitute a viable source
citation, risking rising to a violation of both course and
University policies.
Sharing your assignment-related code/comments with
another student is an especially egregious violation of the policy
not to provide any assistance for which receiving said assistance
woudl be a violation. To prevent accidental sharing, 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, e.g., with a command such as chmod
700 myCopy
. After completing the course, if using your
assignment solutions as part of a portfolio, you may add
interviewers or similar parties to your repository as collaborators
so that they may view your code. The repositories must still remain
private to arbitrary GitHub users, however, to shield them from
current students.
In prior years, we have forbidden students from using AI while
writing their programming assignments. However a large number of
students still did so, and this put honest students at a
disadvantage. So this term we will permit all students to use
generative AI tools such as large language models (e.g., ChatGPT,
Copilot, Claude) in preparing their programming assignment
solutions. You must include a description of how you used generative
AI in your readme
file and you must keep complete
records of your engagement for possible review after the
fact. Scrubbing your history of your interactions will be considered
prima facie evidence of a violation of this policy.
Do not treat this as an opportunity to abdicate your responsibility to do the programming assignments in this course! You should still spend time and thought on understanding the problem, developing the intuitions on how to solve it, and designing your solution. There is value in the struggle of learning to solve problems yourself, and we strongly encourage you not to obviate this struggle with AI in a way that results in no such value (like lifting weights with a forklift). But perhaps AI might allow you to bypass some of the less productive struggles of wrestling with syntax, producing repetitive boilerplate, and being stuck without even a hint of a possible direction to take. In summary, if you choose to use AI, use it to assist your efforts, not to outsource them. And once you've solved a problem, be reflective on whether you have improved your skills via the process, or if you'd still be just as reliant on the AI tool as before. The goal is still that students will use the assignments to improve their own capabilities as a programmer (designing, implementing, testing, and debugging) to prepare for future courses and projects, even if they use AI as part of accomplishing that.
To help assess your learning and growth in the context of this AI allowance, the grade components for assignments are now separated into two different assessments. The first, as has always been the case, is the assignment submission itself, which will be assessed for correctness, efficiency, and style based on the course's requirements. The new second component consist of assignment quizzes, which will be administered in lecture the day before most assignment's code due dates. These quizzes should be very straightforward if you are familiar with the assignment's premise and solution and have learned the key things the assignment was supposed to have you wrestle with and learn but perhaps will be quite difficult if you have not put any thought into the assignment.
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:
Feedback that your grader gave you on your work on assignments from a previous semester. For example, you may not look at your old grade reports or codePost annotations.
Your work on an assignment from a previous semester if you worked with a partner on that assignment during the previous semester.
Your work on an assignment from a previous semester if you are working with a partner on that assignment during this semester.
Your work on an assignment from a previous semester if you violated course policies or University policies on that assignment, as determined by the course's instructors or the Committee on Discipline.
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:
Please be sure the file has thetouch joestu.partner submit X joestu.partner
.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!)
Conduct during exams and quizzes 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 may adjust this penalty to as little as 0 credit for the portion of the exam or quiz on which the violation took place. The presiding Committee may impose additional penalties.
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
NETID.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 a COS 217 faculty instructor.
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 have questions about how your assignment has been graded, we encourage you to ask your preceptor in office hours or via email. If you believe that your assignment has been graded incorrectly, you must submit a brief regrade request on codePost. 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 Assignment Quizzes 20% Assignment Submissions 25% Midterm Exam 20% Final Exam 30% Attendance and Participation 5%
Assignment 0 is not weighted much towards your grade (1%), but ensures you have a suitable setup for subsequent assignments. The file submission portions for each of Assignments 1 through 6 are equally weighted (4% each). The quiz portions of each of Assignment 1-5 are equally weighted (4% each). There is no quiz for Assignment 0 and Assignment 6.
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 entities who can grant deviations from the above-stated policies are the faculty in this term's COS 217 course. 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 graduate 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.