ISA 563: Fundamentals of Systems Programming

Spring 2010
Muhammad Abdulla
General Information | Textbooks | Schedule & Notes | Projects | Policies
Homework Submission Guidelines

Summary

 Homeworks should be submitted to the appropriate assignement entry in
 BB in a single tarball or zip file that conforms to the
 specifications described in this document. Important: submissions
 MUST compile without warnings, or they cannot be graded.

 Please name your submission according to the following format:
  
   hwX-addr.tar.gz
 
 where 'X' is the number of the homework (1,2,3, or 4) and 'addr' is
 replaced with your GMU email ID. For example, my submission for
 homework 1 would be:

   hw1-mabdull2.tar.gz

 and would contain a single directory called 'hw1'.

 An example of creating this tar file is listed below.

Components

A submission should contain a directory with the following items:

  - a file named 'README' produced with an ASCII text editor that: 
      a) lists your name and anyone you worked with
      b) explains whether or not all problems were solved
         and to what degree.
      c) lists what sources, if any, you used to produce the code
         that solves the homework problems

  - a file called 'Makefile' that controls the build process. An
    example of such a file is on the class website. You can reuse this
    file with minor modifications.

  - any reasonable number of C source files (.c) and header files (.h) that
    contain the source code for your solutions. The files should be
    appropriately named so that the grader can distinguish which source files
    correspond to which homework problem. The homeworks rarely require more
    than one .c file per problem.

  - a set of test data files that show that your program works as
    intended
 
  - a C program called "attacker.c" that actively probes your program via its
    input channels (stdin, file I/O, cmd line arguments, environment
    variables, network sockets, etc.). The attacker program should behave
    like a normal driver program that excercise program functionalities,
    except that it should put more focus on revealing possible security
    holes, or any other areas that affect program reliability. This file
    should be built by your Makefile at the same time as your programming
    solution is built. Please take a look at sample attacker programs
    for a reference. 


Do not include any binaries, object files, messages, backup files, web pages,
core dumps, etc.


It is to your advantage to accomplish small tasks completely in the homework
(and explain this in your README) if you are unable to finish the whole
problem. It is better to be graded on a single working sub-part than a broken
whole.

Makefiles

The process of compiling is often repetitive.  The process of
compiling (using gcc to compile your C code to machine code) can be
automated.  This automation is accomplished by using another tool
called 'make.'  A Makefile is a specially named file that tells 'make'
how to compile C source code.  Usually, once you've written a Makefile
and stored it in the same directory as your source code, all you have
to do to build your source code is type 'make' at the command
prompt. 

Your Makefile should always contain a 'clean' target; that is, typing
the following at the command line:

 $ make clean

will delete object files, executables, and backup files, just leaving
your source code, the README, and the Makefile.

Secondly, your Makefile should always tell gcc to compile with warnings
on by passing the -Wall switch to gcc. Your submission should compile
without warnings. An additional useful flag is -g, which compiles your
program with debugging information.

Example Submission

$ cd 563/code
$ ls
hw1/    hw2/   hw3/   hw4/
$ cd hw1/
$ make clean
$ ls
hw.c   Makefile   hw1.h   README
$ cd ..
$ tar -cf hw1-mabdull2.tar  hw1/
$ gzip hw1-mabdull2.tar
$ ls
hw1/  hw1-mabdull2.tar.gz  hw2/   hw3/   hw4/
$

Now you can now upload/email the gzipped tarball.

_____________________________________________________________________

If you have any trouble uploading your files to BlackBoard, send them
to the TA (and also CC me) through email without delay.


Date & Time
bullet
bullet (EST)
What is New?
Valid W3C XHTML
© 2008-2010 Muhammad Abdulla
Last Modified: January 15, 2010