Computer Science 126
General Computer Science
Fall 2009


Course Information | People | Assignments | Lectures | Exams | Booksite

PROGRAMMING ASSIGNMENTS

All assignments are due on the date specified by electronic submission (start by clicking the "submit" link in the rightmost column of the row corresponding to the assignment). You will need to type your Princeton netID and password for authentication. You can resubmit files as needed. We do not accept solutions submitted via email. Be sure that every file you submit includes your name, login, and precept number. You should look over the checklist before beginning the assignment and read it carefully before submitting. Feel free to look ahead at any future assignments that appear online, but be warned that some changes are possible.

# DUE ASSIGNMENT CHECKLIST SUBMIT
0 9/21 Hello World checklist submit
1 9/28 Conditionals, Loops checklist submit
2 10/5 N-Body Simulation checklist submit
3 10/12 Recursive Graphics checklist submit
4 10/19 DNA Sequence Alignment checklist submit
10/22 Precept Exam 1 - Thursday sample files submit
10/23 Precept Exam 1 - Friday sample files submit
5 11/11 Linear Feedback Shift Register checklist submit
6 11/16 Guitar Hero checklist submit
7 11/23 Traveling Salesperson Problem checklist submit
8 12/7 Theory of Computation checklist submit
12/17 Precept Exam 2 sample files submit
1/4 Precept Exam 2 - Monday sample files submit
9 1/11 Atomic Nature of Matter checklist submit


Lateness policy.   Programming assignments are due at 11pm on the date specified, with a 3-hour grace period. Late assignments are assessed a 4-point penalty per day or partial day: 0–3 hours late (no penalty), 3–24 hours late (4 points), 24–48 hours late (8 points), etc. Your first 16 lateness points are automatically waived.

Advice.   The very best advice we can give you about completing your programming assignments on time is exactly what you'd expect: do not wait until the last minute! Plan several sessions of work for each assignment, and start early. Partial credit is available for a partially complete assignment; just explain the situation in your readme.txt file.

Collaboration policy.   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 write code that solves the problem, such discussions (except with course staff members) are no longer appropriate: the code must be your own work. If you have a question about how to use some feature of Java, the operating system, or some other relevant application, you can certainly ask your friends or the teaching assistants, but specific questions about code you have written must be treated more carefully. For each assignment, you must specifically describe in your readme.txt file, whatever help (if any) that you received from others and tell us the names of any individuals with whom you collaborated. This includes help from friends, classmates, lab TAs, and course staff members.

Do not, under any circumstances, copy another person's code. Incorporating someone else's code into your program 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. Abetting plagiarism or unauthorized collaboration by "sharing" your code is also prohibited. Sharing code in digital form is an especially egregious violation: do not e-mail your code or make your source files available to anyone. There is one exception to the code-sharing rule: You may adapt code from the COS 126 course materials provided that you explain what code you use, and cite its source in your comments. An example citation appears in StdGaussian.java.

Novices often have the misconception that copying and mechanically transforming a program (by rearranging independent code, renaming variables, or similar operations) makes it something different. Actually, identifying plagiarized source code is easier than you might think. Not only does plagiarized code quickly identify itself as part of the grading process, but also we can turn to software packages (such as Alex Aiken's renowned MOSS software) for automatic help.

This policy supplements the University's academic regulations, making explicit what constitutes a violation for this course. Princeton 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 you have any questions about these matters, please consult a course staff member. Violators will be referred to the Committee on Discipline for review; if found guilty, you will receive an F as a course grade plus whatever disciplinary action the Committee imposes.

Computing laboratories.   There are a number of computing facilities located in the Friend Center. Friend 016 and Friend 017 both contain Mac computers which can run both OS/X and Windows; both labs contain Internet connections if you wish to plug in your laptop. The labs are open 24 hours a day, and are staffed by lab assistants most evenings. Here is the lab assistant schedule. The lab assistants are there to answer general computer-related questions and to assist in debugging. If you have specialized questions regarding the course materials or programming assignments, see your preceptor or instructor.