Programming, like composition, is an individual creative process.
Individuals must reach their 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 the
code that solves the problem, such discussions are no longer
appropriate; the program must be your own work.
Do not, under any circumstances, copy another person's program. This
includes relevant Linux source. Writing code for use by another or
using another's code in any form is academic fraud and will be dealt
with harshly. You are also responsible for ensuring that the code you
write for the assignments is not readable by others.
The assignments will be implemented on the Linux machines in Friend 010.
You can SSH to the machines from other computers in the Computer Science
department (e.g., portal.cs.princeton.edu). Please contact us if you
have any trouble accessing your account.
The first programming assignment will provide an introduction to
socket programming. The remaining three programming assignments will
use the Virtual Network
System created at Stanford University, and will cover the
network (IP), transport (TCP), and application layers (HTTP):
Assignment details will be posted shortly. To get a sense of what's
involved in the last three assignments, see
the HTTP proxy
assignment at Stanford, as well as the
Internet router and
STCP assignments from last year's offering of the course. The specific
details of the assignment will be posted soon.
Graduate students have the option of doing only the first two
assignments, and focusing on a research project during the second half
of the semester. The project should be discussed with the professor.
Projects must include a software component. A written report should be
completed by the end of reading period describing the work.