Homework Assignment 1; CS 450
Part 0: Estimate
Before you begin, read the directions carefully and then
estimate how long it will take to complete the entire
assignment. Record this estimate so you can compare it with
the reality when you are done.
Remember that you have less than 1 week to do this assignment.
Focus on writing a correct but simple version of the program.
Part 1: Write code and Makefile
Write a program to find the most commonly word in a file.
You can use the following files to test your program ( romeo_juliet.txt and gettysburgaddress.txt ) and
you should note the most common word in each for class.
Write a makefile to compile your program. Call the
file "Makefile". Make sure it has a "clean" target that
removes executables and intermediate files.
Rules:
Code must be able to compile and run both on crux and on the
ITL Linux machines.
Code must be in C or C++.
Part 2: README
In addition to the source code, start a README file.
In this file, place documentation of interest to other
developers. Give an overview of the goal of program.
Describe
any major design decisions and explain how the source
code is decomposed (overview of source files and
their relationships). Did you make any simplifying
assumptions when writing this program?
Note all other files in the "project" and their
purpose (Ex. MANPAGE, TIME_LOG, etc.).
Acknowledge any code or algorithms
borrowed (bibliography of sorts).
Finally, explain how to compile the program.
Part 3: MANPAGE
Start another file, MANPAGE, in which you address
users not developers. Explain what to do once the
executable has been produced - how to run the
program, input and/or options required, output
produced, etc. Give some examples!
Acknowlege any high level assumptions you make in writing
your code (ex. limitations in the types of allowable
inputs, etc) that might affect users.
Part 4: TIME_LOG
You must include a file called TIME_LOG in which
you record how much time you spend working on this assignment.
Cateogrize the time into categories like design,
implementation, debugging, etc. This file should simply
be in plain ascii text format.
Whatever format you choose for recording times, you should submit include
a total time in minutes for each of the following categories:
planning/preparation
coding
debugging/testing
document preparation
In addition to reporting time spent, also count the number of lines of code and documentation
(README and MANPAGE). You can use the utility "wc -l" to do this.
To allow us to easily aggregate statistics across the whole class, include the following lines:
your_username TAB TOTAL_HW1 TAB time_in_minutes
your_username TAB ESTIMATE_HW1 TAB time in minutes
your_username TAB TOTAL_ALL_HW TAB time_in_minutes
your_username TAB LINES_OF_CODE_HW1 TAB lines_of_code
your_username TAB LINES_OF_DOCUMENTATION_HW1 TAB lines of documentation
Part 5: Submit your assignment.
You must copy the following files into /afs/clarkson.edu/class/cs450/students/YOUR_USERNAME/hw1:
README, MANPAGE, TIME_LOG, Makefile and all your source files. Run "make clean" before submitting to save space. Similary do not submit copies of the shared test cases.
These names *must* be exact!!!
To grade this assignment,
I will follow the directions in
your README file to compile your program.
I will review the MANPAGE file and follow
the directions (I may also
see how it responds if I don't follow the
directions :-) ).
I will review your TIME_LOG.