Princeton University
Computer Science Department

Computer Science 333
Advanced Programming Techniques

Robert Dondero

Spring 2024


Directory
General Information | Lectures | Assignments | Project | Schedule | Policies

Lecture Policies

We encourage you to attend the lectures. We also encourage you to participate actively in the lectures by listening attentively and expressively, asking helpful questions, answering questions, offering comments on topics that you know well, and so forth.

If you must miss a lecture for a good reason, then let the lead instructor know ahead of time.

If you miss a lecture, then your best course of action is to get notes from a fellow student who attended the lecture, study the lecture material and notes, make a list of questions, and see one of the course's instructors to get answers to the questions.


Project Policies

While working on your semester-long project you may use any source of information that you want. You also may use any technologies that you want. In particular, you may use ChatGPT or other large language models. However, you must inform the course's instructors about the technologies that you use. If your use of a large language model or any other technology simplifies certain areas of your project, then we'll expect more expansive effort in other areas of your project.

If you have a question or comment about your work on your project that will be helpful to other students, then you should send it to Ed Discussion as an ordinary (public) post. One of the course's instructors will reply as soon as possible. We welcome replies from students.

If you have a question or comment about your work on your project that will not be helpful to other students, then you may send it to Ed Discussion as a private post. One of the course's instructors will answer your question as soon as possible. To facilitate the consistency of instructor replies, we prefer that you send questions or comments about your project to all instructors via private Ed posts rather than to any individual instructors via email.


Assignment Policies

You may work with one teammate on each assignment, and we prefer that you do so. If you do work with a teammate on an assignment, then we will expect you to work with the same teammate on all assignments. You may change teammates (split with your existing teammate or merge with a new teammate) only with the approval of a lead instructor.

The policies described in this section supplement the University's academic regulations, making explicit what constitutes a violation for this course. 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 or a mitigating factor.

If you have any questions about these matters, please consult a lead instructor. Violators will be referred to the Committee on Discipline for review.

Getting help from people

Programming is an individual creative process much like composition. You must reach your own understanding of the problem and discover a path to its solution. During this time, discussions with other people are permitted and encouraged. However, when the time comes to compose code that solves the problem, such discussions (except with course instructors and your assignment teammate) are no longer appropriate: the code must be your own work.

If you have a question or comment about your work on an assignment that will be helpful to other students, and you need not reveal any parts of your work to express the question or comment adequately, then you may send it to Ed Discussion as an ordinary (public) post. One of the course's instructors will reply as soon as possible. We welcome replies from students.

If you have a question or comment about an assignment that will not be helpful to other students, or you must reveal parts of your work to express your question or comment adequately, then you must not send it to Ed Discussion as an ordinary (public) post. Instead you may send it to Ed Discussion as a private post. One of the course's instructors will answer your question as soon as possible. To facilitate the consistency of instructor replies, we prefer that you send questions or comments about the assignments to all instructors via private Ed posts rather than to any individual instructors via email.

For each assignment you must report, in your readme file, the names of any people from which you received help, and the nature of the help that you received.

Getting help from written material

You may use any written material that you find on the web or elsewhere, with one exception: you may not use any COS 333 assignment solution or partial solution, from this semester or any prior semester, that someone (in violation of course policies) had made available. Even looking at a COS 333 assignment solution or partial solution — beyond the amount of time required to recognize that it indeed is a COS 333 assignment solution or partial solution — is a violation of academic regulations.

Do not, under any circumstances, copy another person's code. Incorporating someone else's code into your code in any form is a violation of academic regulations. This includes adapting solutions or partial solutions to assignments from any offering of this course or any other course. There is one exception to the code-sharing rule: you may adapt code from the COS 333 course materials provided that you explain what code you use, and cite its source in your readme file.

Copying and transforming someone else's code (by rearranging independent code, renaming variables, rewording comments, etc.) is plagiarism. Some inexperienced programmers have the misconception that detecting such plagiarism is difficult. Actually, detecting such plagiarism is quite easy. Not only does such plagiarism quickly identify itself during the grading process, but also we may use software packages, such as Alex Aiken's renowned MOSS software, for automated plagiarism detection.

For each assignment you must report, in your readme file, the written sources of information — the addresses of any websites, the titles of any books, and so forth — from which you received help, and the nature of the help that you received.

Getting help from large language models

You may not use ChatGPT or any other large language model to generate your assignment solutions or any parts of them.

Giving help

For each assignment you must specifically state, in your readme file, the names of any COS 333 students to whom you provided help, and the nature of the help that you provided.

Abetting plagiarism or unauthorized collaboration by "sharing" your code is prohibited. Sharing code in digital form is an especially egregious violation. Do not e-mail your code or make your code available to anyone. Do not share your code with anyone even after the due date/time of the assignment, and even after the end of the course.

You are responsible for keeping your solutions to the COS 333 programming assignments away from prying eyes. If someone else copies your code, we have no way to determine who is the owner and who is the copier; the Committee on Discipline decides. If you are working on a public cluster computer, make sure that you do not leave the computer unattended, and that you delete your local files and logout before leaving. If you store your work in a version control repository on the web, then make sure your repository can be accessed only by you and your assignment teammate.

Penalties for plagiarism

If we suspect a student of plagiarism on an assignment, then we will refer the case to the Committee on Discipline. If the Committee on Discipline finds the student responsible for plagiarism, then the standard penalty is automatic failure of the COS 333 course. The Committee on Discipline may impose additional penalties.

If we suspect a student of abetting plagiarism on an assignment, then we will refer the case to the Committee on Discipline. If the Committee on Discipline finds the student responsible for abetting plagiarism, then the standard penalty is one course letter grade. The Committee on Discipline may impose additional penalties.

Penalties for late assignment submission

You should submit your work on an assignment (electronically) before its due time. If you submit your work late, then we will give you credit for it on this scale:

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.

We will grant extensions only in the case of illness (with a doctor's note) or extraordinary circumstances (with the permission of the Dean or Director of Studies of your residential college). If illness or an extraordinary circumstance will cause you to submit an assignment late, then you should discuss the matter with a lead instructor as soon as possible. Please plan your work on the assignments so that travel, religious holidays, etc. do not cause you to submit it late. Heavy workload is not an extraordinary circumstance.

You have one late pass that allows you to submit any one assignment up to three days late without penalty. You may apply your late pass to at most one assignment; you may not split your late pass across multiple assignments. If you wish to use your late pass on an assignment, then you must tell the course instructors before the assignment's due date/time by sending e-mail to cos333instructors@lists.cs.princeton.edu.

You may use your late pass on an assignment if and only if your teammate uses his/her late pass on that assignment. The implication is that you may not use your late pass on an assignment if your teammate already has used his/her late pass.


Grading Policies

Your final grade will be weighted as follows:

Component Approximate
Weight
Assignments 40%
Project 50%
Participation 10%

Concerning the assignments... The assignment grades will be weighted as follows:

Assignment Approximate
Weight
1 25%
2 25%
3 25%
4 15%
5 10%

Approximately 7 points of your 10-point participation grade will be based upon your lecture attendance record. The remaining approximately 3 points will be a participation adjustment. If you were helpful to the course in some extraordinary ways — if you were particularly attentive and responsive during the lectures, asked many helpful questions during the lectures, offered many helpful comments during the lectures, posted many helpful Ed Discussion questions, comments, or answers, contributed ideas or material to the course instructors that will help students in future semesters, and so forth — then your participation adjustment might be positive by as much as approximately 3 points. If you were detrimental to the course — for example, if you missed deadlines — then your participation adjustment might be negative. It's likely that the participation adjustment for most students will be 0.


This page was written by Robert M. Dondero, Jr.