COS-518 Assignments


Collaboration Policy

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 or third-party implementations. 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.

Programming Assignments

These programming assignments will provide an introduction to socket programming and concurrency. The first assignment will be a caching web proxy that uses very simple blocking I/O; i.e., it can only serve a single request at a time. The following three assignments will explore different ways to achieve concurrency: through processes, threads, and non-blocking I/O. All assignments are due prior to class (1:29 pm) of their assigned days.

Assignment Submission

Email your tarball to the instructor with the subject line "cos-518: Assignment < number >".

Late Submission

You should submit your work on an assignment (electronically) before its due time. All assignments will be due at 1:29pm on their selected days. If you submit your work late, we will give you credit for it on this scale:

Coding Style

All of the code you turn in for this course should have good style. Make sure that your code has proper indentation, descriptive comments, and a comment header at the beginning of each file, which includes your name, userid, and a description of the file. In addition, your code should never leak memory and should always check the return value of function calls.


Last updated: Tue Oct 20 16:55:29 -0400 2009