Course evaluation consists of programming assignments and problem sets, generally due on alternating weeks, as well as two design prompts and a final project. For more information on the schedule, see Assignments. Note that the schedules on the website are preliminary and subject to change. In case of a mismatch between this document or the information available on the website and announcements by course staff, the latter shall prevail.
Problem sets review material from lecture and must be done individually. They are to be completed on Gradescope and will be posted to the Ed Discussion Board.
Programming assignments put the ideas from lecture into practice by building components of a web framework. All programming assignments must be done in pairs (groups of two).
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 (not problem sets or design prompts). 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 Eastern (Princeton) time. This is a hard deadline; a submission at 11:02pm will count as one full late day. 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.
The course grade will be composed as follows:
Percentage | Contribution | Details |
---|---|---|
50% | Programming Assignments | 5 total, 10% each |
20% | Problem Sets | 5 total, 4% each |
10% | Design Prompts | 2 total, skewed mostly towards 2nd prompt |
20% | Final Project |
We do not anticipate applying a grading curve. In no case will grades be curved down (i.e., 93% will always translate to an A).
The following sections provide an overview over the course’s assignment and collaboration policies. Lecture 2 discusses the course policies in detail. In case of a mismatch between this document or the information available on the website and announcements by course staff, the latter shall prevail.
You will complete programming assignments in pairs (groups of two), using Git to collaborate. We will automatically grade the last commit each time you push to your group’s GitHub repository and report the grade as a GitHub comment on the commit. At the end of the semester, we will assign you the highest grade obtained for each assignment, considering the late day allocation described above.
In other words, there is no penalty for pushing regularly to your repository, and you should know within a few minutes how much of the assignment you’ve successfully completed.
To begin working on a released assignment use the assignment dashboard (to be activated…).
This course permits many forms of collaboration, including help from course staff, classmates, and lab TAs. Googling is allowed and 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 assignment, such as source code (including comments) and documentation. It includes both finished and unfinished products, regardless of correctness or completeness.
Working in 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.