Comp 2673, Spring2002
Programming Project 1
Additional information

Data files (pedigree files)

By now you should be just about ready to test your program (at least the reading of files) on more complex data files (pedigree files). The directory ~ftl/public_html/courses/2673s02/pedfiles has several pedigree files for you to use in testing. Of course you can (and probably should) create your own pedigree files for testing as well. Your program should be able to read and correctly process any syntactically correct pedigree file. The files largefamily and inbredfamily in this directory are real data collected by a genetics research lab. The first file contains data for some of their larger families, and the second contains two families with cosanguinuity. The file widefamily and deepfamily are testfiles I created. In widefamily, every member has last name X. The children in the first generation have first names 1, 2, 3, etc. Their spouses are 1b, 2b, 3b, etc. 1 and 1b have children 1.1, 1.2. 1.3, etc. 2 and 2b have children 2.1, 2.2, 2.3, etc. The children in each successive generation have names consisting of their parent's name, a decimal point, and another digit telling what order the child is in the family. The diagram below shows this naming scheme:
            1,1b            2,2b                 3,3b       ... 
           /|\             /|\                  /|
          / | \           / | \                / |
         /  |  \         /  |  \              /  |
        /   |   \       /   |   \            /   |
       /    |    \     /    |    \          /    |
     1.1   1.2   1.3  2.1  2.2   2.3,2.3b  3.1  3.2  ...
                                 /|\         
                                / | \       
                               /  |  \     
                              /   |   \    
                             /    |    \  
                         2.3.1  2.3.1  2.3.2,2.3.2b
                                        / \         
                                       /   \       
                                      /     \     
                                     /       \    
                                2.3.2.1    2.3.2.2
This naming scheme will help you with testing your functions for displaying relatives. The file deepfamily has a simple structure - it contains 1001 individuals, each the child of the previous. Thus 1001 generations are represented. The individuals again have a last name X and the first names are 0, 1, 2, ... 1000 which represent their generation. Additionally, if you maintain your data in a sorted form and use a binary search (either your own on one from the STL) to store your list of all people, then you may try your program on the pedigree file reallywidefamily.

Submission guidelines

Don't forget that at the top of each file you should put comments with your name(s), the date, course number, and assignment number. As always, write the program with a well organized structure, format it consistently, and document your program by naming functions and variables in a useful way, and by writing comments that would help someone understand how the code works so they could modify, enhance, or debug it. Functions should perform a specific and well-defined task that is described in comment lines above the function header. The logical flow of your program should be simple and easy to follow.

Turn in a hard copy of the header files and source code at the beginning of class on the due date. Also turn in a hard copy of a separate document which explains your program - this should include an explanation of the input and output of your program, the structure of your program, including classes and functions.

Submit your program electronically by emailing it to comp2673@cs.du.edu before class on the due date. You should include all source files, all header files, and your makefile. If you wrote additional pedigree files for testing, you may include these as well, but do not include your executable, and do not include your object files (.o files). Also, do not attach multiple files. Instead, use either the Unix command zip, or a combination of the Unix commands tar and compress to package multiple files into one file. To make things manageable to recipients of your mail, your zipped files (or tar files) should have a directory structure to them - all of the files should be stored in a single directory named yourname. To check that you have done this correctly before mailing, move the file yourname.zip to your home directory and run unzip on it. This should produce a subdirectory in your home directory called yourname, and your program files should be in that directory. In that directory, also check that your program compiles - that you have not omitted any essential files.