ISA 563: Fundamentals of Systems ProgrammingSpring 2014Muhammad 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
(EST)
What is New?
|