NAME: ____________________________________________ TA: _____________________ ACHIEVEMENT . . . . . . . . . . . . . . . . . . . E G A W VW parses commandline arguments properly program has no extra prompts or messages verbose option: prints compression ratio; to standard error compression: reads encoding file of specified format stores end-of-encoding code appropriately stores encoding file at beginning of compressed file new file has correct name (.BIN) extension converts the characters to correct codes correctly packs the binary versions of these codes into a buffer of specified length writes full buffers to the file writes required end-of-encoding code to the buffer and then flushes decompression: decompressed file does not contain the encoding table data is read from compressed file in buffer-sized pieces when a buffer is emptied, a new buffer is read from the file codes are decoded correctly into chars which are written to the decompressed file decoding the end-of-encoding code doesn't write anything to the file closes the decompressed file bits in compressed file following the end-of-encoding code are ignored appropriately handles errors specified in the handout: Incorrect use of command-line arguments Compressing or uncompressing a file that doesn't exist Compressing or uncompressing when there is already a file with the same name as the necessary output file Compressing with an encoding file that doesn't exist QUALITY OF THE CODE . . . . . . . . . . . . . . . . E G A W VW programming style: assignment-specific things contains separate classes for coding and buffering main does not need to know about buffer details easy to change the buffer length no assumptions made re sizeof(anything) programming style: C++ specific things uses standard C++ only no memory leaks header files used appropriately to separate declaration from definition makefile is appropriately defined; or a good README is provided #define and #include used appropriately Code with boolean values written well eg `if (found)' vs `if (found == 1)' Code with non-booleans written using comparison (not as boolean) eg `if (root == 1)' vs `(if root)' programming style: general modular code with good choices made about classes and methods main not too large helpers for main turned into a class where appropriate no duplicate code no global variables code simple and elegant good variable/constant names functions have appropriate names such as pack, flush, unpack, encode, decode no magic numbers consistent indentation and use of white space checks return status of system calls such as file opens efficiency: file access minimized, eg file not reopened to calculate size no use of seek comments: Appropriate external comments for functions all parameters mentioned behaviour defined under all circumstances appropriate preconditions included Representation Invariant defined for each class that specifies: how the instance variables represent the abstract thing eg, buff[0..n-1] contains bits that have been packed constraints on the values of the instance variables eg, 0 <= shift <= 7 constraints on relationships among the instance variables eg, 0 <= n < capacity of buff Good internal comments in functions Tricky or extra-ordinary spots in code explained. Assertions made where appropriate. Blocks of code explained Modularity and information-hiding supported in comments internal comments never discuss a particular use of the function external comments never reveal implementation details comments precise; concise; do not just rephrase the obvious comments written in correct, clear English proper indentation of comments -- for ease of reading TESTING . . . . . . . . . . . . . . . . . . . . E G A W VW choice of test cases systematic; thorough; concise testing of compressions is demonstrated using od (or equivalent) tests the obvious cases; tests the boundary cases gives priority to testing for semantic errors over syntactic ones tests include (this is NOT a complete list): a character's code straddles buffer slots; doesn't straddles the end of the whole buffer; doesn't compressed codes use up less than 1 buffer in total exactly than 1 buffer without end-of-encoding code exactly 1 buffer including end-of-encoding code more than 1 buffer encoding that includes a code for `|' file to compress has size: 0, 1 char, more number of chars in encoding is: 1, more, 256 encoding where longest is 32 bits handling the errors they were required to handle presentation of test runs output annotated, and cross-referenced to the report easy to work your way through the test runs test cases thorough, yet volume of output not overwhelming clever ideas used to make output easy to digest. Eg: diff used to show compress+uncompress yields same file uses "script" appropriately to help make the case "testing strategy" section of report testing strategy clearly explained cross-referenced to output BOTTOM LINE: was the testing convincing?? QUALITY OF REPORT . . . . . . . . . . . . . . . . . . . . . . . .E G A W VW overall quality title page and table of contents included writing is concise, clear, and convincing good grammar and spelling materials are organized, neat, put together in a professional package "introduction" and "conclusions" sections (these can be brief) "program structure" section describes the overall structure of the programs. what are the interfaces to them? describes how the code files relate any diagrams used have clear meaning, explained in a legend discusses compression ration calculation "data structures" and "file layouts" sections student firmed up the specs where needed, and *documented* that here "testing strategy" section (this gets marked under testing below) "bugs or missing features" section very clear and very honest bugs identified as specifically as possible clearly delineates what is implemented vs what isn't what works vs what doesn't if there are no bugs or missing features, says so Assignment meets submission requirements as stated in CSC 228 Course Guide unsealed envelope; with cover sheet; contents well labelled GRADE . . . . . . . . . . . . . . . . . . . . . __________ GRACE DAYS USED (based on latest of paper & electronic submission): 0 1 3 Other TA Comments: