CS 683 Emerging Technologies

Fall Semester, 2008

Assignment 3

Assignment Index

© 2008, All Rights Reserved, SDSU & Roger Whitney

 San Diego State University -- This page last updated 11/8/08

S3 Assignment

Due Nov 13

The goal of this assignment is to create a system for computer science students to turn in assignments electronically via S3. There are two parts to the assignment. The first, which we will call the student client, is the client that a student will use to turn in their assignment by uploading it to S3. The second, the faculty client, is the program that the instructor will use to download all the student assignments.

Students will upload their assignments to one S3 bucket, since a course can have more than 100 students. The name of this course bucket will change from assignment to assignment. So this has to be a parameter or placed in a file read by the student client. For this assignment it will be sdsu-cs683-assignments. Students will be assigned an id. This id will be the key that their assignment will be placed at in the bucket. Students need to combine their assignment into one file using zip or tar. Since these are computer science students your program does not have to generate the zip or tar file. The student will do that manually. Given that the student client will be used by computer science students it does not have to have a GUI interface. It can be command-line driven. The student has to be able to make accessible to the client their S3 keys.

To prevent a student from reading another student's assignment the course bucket will be writable by anyone with an S3 account, but readable only by the instructor. When an assignment is uploaded it will overwrite any assignment and the ACL at the given key. This allows the student to resubmit an assignment if they discover then need to. It also means that the student client must change the default ACL for the object (the student's file) placed in bucket. The ACL has to give the instructor permission to read the object. This is done via either the instructor's S3 email address. This has to be configurable in the student client as different instructors may use the system.

The faculty client has to download all the assignments in the bucket. The faculty client downloads all the assignments into a directory. It also has to place the time and date of the download in the bucket at the key time-read. Sometimes students turn in assignments late. When the instructor tries to download a second time the program only downloads the assignments turning after the time indicated at time-read. Of course the instructor has to be able to configure the client with the name of the bucket to read and the instructor's S3 keys.

Note you will have to test your code using your own buckets as you will not have read access to the class bucket.


As part of your assignment you need a ReadMe.txt file. This file must contain the following information:

Your name

Prerequisites for running your program. List the language you are using, if relevant the version of the language required, any libraries that need to to be installed, links to the libraries, any instructions needed to use the library with your code.

How to run your program. These instructions will be used to run your program. If the instructions do not work, you will lose points on the assignment even if you code does work. Include information about required files, file formats and command line arguments.

How to turn in your assignment

During class you were assigned an alias for this assignment. Upload your zipped or tarred file to the S3 bucket "sdsu-cs683-assignments" using your alias as the key.

Trial Bucket

If you wish to test out your program you can use the bucket "sdsu-cs683-sandbox". It differs from the "sdsu-cs683-assignments" in that you can read and write to the bucket. So you can check to see if your write actually worked. However this means if your acl file is not correct other students may be able to read your uploaded file. So do not upload your assignment to this bucket.