QUADTREE PROJECT TESTING AND SUBMISSION INSTRUCTIONS
====================================================

These are instructions for testing and submitting your quadtree project.
Contact the TA if you have any questions.


TESTING
=======

All project grading will take place on one of the linux.grace.umd.edu
machines, so make sure your project compiles and runs properly on those
machines.  Test inputs will be sent to your program's standard input, and
output will be read from standard output.  All project test inputs and outputs
will be accessible in /afs/glue/class/fall2017/cmsc/420/0301/public
on GRACE, as well as on the class website.

Each test input ends with ".in" and has a corresponding test output ending
with ".out".  To run your project against a test input, use the following
invocation:
   ./project-exe-bin < test-file.in > my-test-file.out

This will run your program using test-file.in as input, and will generate
my-test-file.out as output.  You can then compare your program's output with
the expected output as follows:
   diff -ubw test-file.out my-test-file.out


MAKEFILE
========

Before submitting, in your project directory, create a Makefile that will do
all necessary compilation.  The Makefile should be written in such a way so
that when a "gmake" command is issued, a correctly-named binary executable is
generated.  The executable name will vary depending on the project part.  For
part 2 of the project, the executable should be called "part2" (no spaces).
For part 3, the executable name should be "part3", and similarly "part4" for
part 4.

Here's a sample Makefile for part 2.  It assumes that all source files are
written in C++ and have a .cxx extension. If you are using C, then you 
just need to change the extension to .C and change the compiler for GCC.

CXX = /usr/local/bin/g++
SRCS := $(wildcard *.cxx)
OBJS = $(SRCS:.cxx=.o)
EXE = part2

all : $(EXE)

$(EXE) : $(OBJS)
	$(CXX) $(OBJS) -o $@

%.o : %.cxx
	$(CXX) -c $< -o $@

clean :
	rm -f $(OBJS) $(EXE)


If the above makefile doesn't work (with some editting) try the one below:
This one assumes that all the source files are writen in C++ and have the .cpp extension

CC = g++
SRCS := $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
EXE = part2

all : $(EXE)

$(EXE) : $(OBJS)
	$(CC) $(OBJS) -o $@

%.o : %.cpp
	$(CC) -c $< -o $@

clean :
	rm -f $(OBJS) $(EXE)



Contact the TA if you need help writing a Makefile.


TAR.GZ
======

Once you have your project files in order, create a tar.gz archive containing
all your project files.  To do this, enter your project directory and type the
following command:
   gtar -cvzf <UID>.tar.gz *

You can also verify that the project archive was created properly and contains
all necessary project files by using this command:
   gtar -tvzf <UID>.tar.gz

I advise you to test your archive before submitting by extracting all files
and attempting to compile it from scratch using your Makefile.  This will save
a lot of time and headaches later on.


SUBMITTING
==========

Now that your project archive contains your submission, all that remains is to
use the submit script to send in your submission.  submit requires an
assignment number to be specified when submitting a project.  For the quadtree
project, the assignment number will correspond to what part of the project
is being submitted: for part 2, the assignment number will be 2, 3 for part 3,
and 4 for part 4.

The full submit command looks like this:
   submit 2017 fall cmsc 420 0301 <assn#> <your-archive-file>
where <assn#> is the assignment number and <projfile> is your .tar.gz archive named after your UID.

After verifying the submission information and entering "yes", you should see
the following message:
   Assignment <assn#> submitted!

Note that SUBMIT DOES NOT TEST YOUR PROJECT.  You are fully responsible for
your project's correctness, so make sure that it works!  Also, if you make
multiple submissions, only your last submission will be graded.

You can further verify that the submission succeeded by checking your
submission directory on GRACE, which for our class is
   /afs/glue/class/fall2017/cmsc/420/0301/submit/<username>

You should see a file in that directory corresponding to the file you just
submitted, with the timestamp appended to the filename.


This is the sequence of commands that will be used to test your projects:
   gtar -xzf <your-archive-file>
   gmake
   ./<exe-bin-file> < testfile.in > projtestfile.out
   diff -ubw testfile.out projtestfile.out

Make sure that your project works with this sequence and it will make
everyone's life easier.

----

Please contact the TA if you have any questions.