Programming Assignments and Problem Sets

Programming assignments will be published, submitted and testing using GitHub. You will need to create a GitHub account using your Princeton email address.

All problem sets (PSETS) must be done individually.

All programming assignments must be done in groups of two partners.

There is a (final project)[/final], which is due on Dean's Date: December 8, 2020 at 5:00pm Princeton Time.

Regrades: If you feel we have made a mistake while grading your work, email your preceptor with a short note describing the potential mistake. You must do this within two weeks of the work being returned.

Late days: You may use up to seven (7) late days for programming assignments. The late days are assigned retroactively to give you the best possible overall grade on your programming assignments. Programming assignments are due at 11:00pm Princeton Time. Your score for one programming assignment is the commit with the highest graded score and valid submission time. You do not declare the use of late days. At the end of the semester, we find the best allocation of late days across all your programming assignments, such that all your submissions sum to the highest score.

You may not use late days for problem sets and the Dean's Date project

Late assignment penalties will be waived only in the case of unforeseeable circumstances like medical emergencies, as documented by your Dean or Director of Studies and with our approval.

DATE DUE TOPIC MATERIALS
(not for a grade) Virtual Machine assignment0
09/16 Socket programming Ed discussion announcement
09/30 HTTP Routing Framework Ed discussion announcement
10/14 In-memory cache Ed discussion announcement
10/28 Object Relational Mapper Ed discussion announcement
11/11 Connection pool Ed discussion announcement
11/25 Access control Ed discussion announcement

Collaboration Policy

This course permits many forms of collaboration, including help from course staff, classmates, and lab TAs. Googling is allowed, even encouraged, in this course. You may use any online resource as long as you cite the source (e.g., including the URL of source in the code).

Here is a summary, where ✔ means YES and ❌ means NO. If you have any questions, please contact the course staff. Note the summer refers to Groups - when you are working on an individual assignment, your group consists of one - yourself.

activity your group* course staff COS 316 grads classmates other
discuss concepts with ...
acknowledge collaboration with ...
expose solutions to ...
view solutions from ...
plagiarize code from ...

Your solutions. The term solutions refers to any of the products created when completing an, such as source code (including comments) and documentation. It includes both finished and unfinished products, regardless of correctness or completeness.

Working Groups. All programming assignments require you to work in groups. Here are the rules regarding group work.

Why Work in Groups? There are several reasons for our decision to make you work in groups.

Plagiarism. As members of the University community, students are bound by the rules and procedures described in Rights, Rules, Responsibilities.

All the rules above continue to apply after assignments are graded and after the end of the semester.