CS 3214 Exercises and Projects Spring 2012


ID Deliverable Due Date Time Left Submission Type


ID Deliverable Due Date Time Left Submission Type

The exercises are to be completed individually. The projects require group work.

For the group projects, you should have committed to a group before you start. You may not switch groups during the project for which you have committed without permission from your instructor. The group size for the projects is 2 students.

Here is a small application you can use to find out which students haven't declared that there are in a group. Use your SLO login to get access to this list. When you have found a group, use the application to remove yourself from the availability list.


Project & Exercise Submission Instructions

The instructions below apply to both projects and exercises.

To determine what to include in your submission, read the description of the deliverable. Some deliverables require you to submit a single file in a specific format, some require you to create a compressed tar archive (a .tar.gz file) of multiple files, some may require you to submit multiple items individually under different ids.

If a compressed archive is required, issue the command 'tar czvf filename.tar.gz *' from within the directory to archive its contents into a file called 'filename.tar.gz'.

To upload your submission for grading:

   Upload your file using the submit script from the command line:

   submit.pl <ID> name_of_your_file_or_archive

   This command can be found in ~cs3214/bin.

   Note: The first parameter (ID) of the script is the
    identifier of the deliverable you want to submit. See the column ID above.
    For exercises, this will be 'ex1', 'ex2', etc.

Alternatively, you can submit via the submission web page. To access the submission page, log on with your CS SLO account (that's the same account you use to log on to rlogin.cs.vt.edu).

Please note:

Following these instructions ensures that the GTA's can use scripts to extract, build, and grade your submissions.


Question: Sorry to bother you with yet another e-mail but the submission system keeps rejecting my file. I have been trying to submit my file for the a while now and it's not letting me. I typed my solution in notepad++ with the correct encoding. I tried to switch to notepad but it's still not taking it.

First, run 'file' yourselves:

$ file Exercise\ 4.txt
Exercise 4.txt: Unicode text, UTF-8

(Note the \ is to escape the 'space' in the filename, inserted when using the shell's auto-completion.)

Ok, so it thinks it's Unicode in UTF-8 encoding and, moreover, the set of bytes used in the encoding exceeds ASCII. Let's find the culprit by trying to convert to ASCII:

$ iconv --from=utf8 --to=ascii Exercise\ 4.txt
iconv: illegal input sequence at position 0

Position 0 means the very first byte in the file makes it impossible to convert.  Ok, let's look at the file byte-by-byte:

$ od -t x1 Exercise\ 4.txt | head -2
0000000 ef bb bf 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d
0000020 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d

('od' - octal dump, use -t type hexadecimal byte-by-byte ('x1'), and cut off all lines except the first two (head -2)).

There are non-ASCII bytes at the beginning: EF BB BF. ASCII ends at 0x7F or 127 decimal.   Google EF BB BF.  It's the dreaded BOM, or byte-order-mark, used in Unicode files.

Google how to remove it.

$ vi Exercise\ 4.txt
:set nobomb

and you're done:
$ file Exercise\ 4.txt
Exercise 4.txt: ASCII English text

I've shown the command line way of dealing with this. You can, of course, simply turn off the BOM in your editor (such as Notepad++); and instead of od, iconv, etc. etc. you can probably use Windows tools as well.

The point is that learning how to diagnose character set related issues is a necessary skill if you want to be a practicing computer scientist.

Another hint: I recommend setting your LANG environment variable to C by adding

export LANG=C
to your .bashrc file. This way, gcc will not print fancy Unicode left/right quotes in its error messages.

Lastly, note that 'iconv' with 'iconv --from=ascii --to=ascii' can be used to quickly find out at which offset in a file a non-ASCII character occurs (if you managed to insert one into your files.)


This submit webpage and the submit.pl script are provided as a service to the students. The alternatives such as email submission although possible creates huge issues that are discussed next. Other options such as scholar are simply not capable of handling advanced submissions, e.g., tar files, etc.

We stress here that this SUBMISSION PROCESS IS TO MAKE THE SUBMISSION PROCESS SMOOTH FOR YOU. If we accept email submissions or do not check formats and compiling errors at submission time --- a process that has frustrated some --- you will not know whether your project will at least compile when we do the grading. We would rather give you the opportunity to correct basic errors before submission. Remember, if your submission does not at least compile and the deadline is past, we would have no choice other than to simply assign a zero. In the past (when we allowed arbitrary submissions) students have consistently submitted material that later did not compile. These scripts are here to ensure that you know what you are submitting and that you can RELAX that your submission wont fail during grading.

At places where partial submission makes sense, the TAs will post specific instructions. However, if you want to just do a partial submission, you can always email us your solution. We will take it into consideration. But do realize that using the automated submit process is always going to work in your favor as it prevents simple errors.

We are here to help you. For any concerns and help, contact us individually or through the class mailing list, and we will accomodate all reasonable requests and do whatever we can to address the issues/problems.

Finally, the submission page is a utilitarian page not a commercial product! it may not be pretty but it has all the info that matters. Scroll all the way to the bottom to see your current submissions.

Project 1: Binary Bomb

Due date: Wed, Feb 1, 11:59pm (late days can be used).

Project 2: Buffer Bomb

Due date: Wed, Feb 15, 11:59pm (late days can be used).

Project 3: Extensible Shell

Due date: Tue, Mar 13, 11:59pm (late days can be used).

SVN groups have been assigned. Check the grouper app for your group number.

Project 4: Malloc Lab

Due date:Fri, Mar 30, 11:59pm (late days can be used).

Project 5: Thread Pool and Futures

Due date:Fri, Apr 13, 11:59pm (late days can be used).

Project 6: 'sysstatd' Web Service

Due date: Mon, Apr 30, 11:59pm (late days can be used).