COS 126 Programming Assignments, Fall 2003

All assignments are due on the date specified by electronic submission. Before you turn in the assignment, be sure to read the Assignment checklist and carefully follow all instructions. Feel free to look ahead at any future assignments that appear online, but be warned that some changes are possible.

# DUE ASSIGNMENT CHECKLIST
0 9/17 Hello World checklist
1 9/24 Conditionals and Loops checklist
2 10/1 N-Body Simulation checklist
3 10/8 Recursive Graphics checklist
4 10/22 Hamming Codes checklist
5 11/5 Digital Signal Processing checklist
6 11/12 Traveling Salesperson Problem checklist
7 11/19 Data Compression checklist
8 12/3 DNA Sequence Alignment checklist
9 1/12 Barnes-Hut Algorithm checklist


Computing Laboratories

There are a number of computing facilities located in the Friend Center. There is a Sun workstation lab known as arizona for Unix users in 016, a PC lab for Windows users in 017, and 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 and weekend afternoons. 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 questions regarding the course materials or programming assignments, see your preceptor or instructor.

Submitting Programming Assignments

Submit your solutions to the programming assignments electronically via the course web page. To authenticate yourself, you will need to type your Princeton OIT Unix login and password. Your login identification is in the campus telephone directory; your password is your PAC (Phone Access Code) or the last eight digits of your social security number. You are strongly encouraged to change your password. You will receive an email confirmation for each successful submission. You can resubmit or unsubmit files as needed.

Late Assignments

Programming assignments are due at 11:59pm on the date specified. Are we completely serious about the exact second on this deadline? Well, no. You do have some leeway: a few minutes late we won't even notice, but a whole day late we will definitely notice. Point deductions for lateness will be exacted by your preceptor, and can be waived for unforeseen circumstances, like illness, with an appropriate written excuse. Preceptors may also use their discretion to grant extensions. 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.

However, you can get partial credit for a partially working or 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 friends are encouraged. However, when the time comes to write code that solves the problem, such discussions are no longer appropriate - the program must be your own work. If you have a question about how to use some feature of C, UNIX, etc., you can certainly ask your friends or the teaching assistants, but do not, under any circumstances, copy another person's program. Writing code for use by another or using someone else's code in any form is a violation of academic regulations. "Using someone else's code" includes using solutions or partial solutions to assignments provided by commercial web sites, instructors, preceptors, teaching assistants, friends, or students from any previous offering of this course or any other course.

You may, however, use any code from the COS 126 lectures, precepts, or course texts, providing that you explain what code you use, and cite its source in your readme.txt file or in comments. An example citation appears in pattern.c. For each assignment, you must also specifically describe whatever help (if any) that you received from others in your readme.txt file, and write the names of any individuals with whom you collaborated. This includes help from friends, classmates, lab TA's, and COS 126 staff members. Be warned that it is very easy to identify plagiarism of source code, and we occasionally use Alex Aiken's renowned MOSS software for this purpose.

If you have a question about what is fair and what is not, please consult a staff member. Violators will be referred to the disciplinary committee for review. The 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.

Protecting your Files

You are responsible for keeping your solutions to the COS 126 programming assignments away from prying eyes. If someone else copies your program, we have no way to determine who's the owner and who's the copier; the Discipline Committee gets to decide. If you are working on a public cluster machine, use your H: drive and be sure that the permissions are set so that they are not world readable.