PROGRAMMING ASSIGNMENT #2:
Empirical Evaluation of Solutions for Maximum Subsequence Sum Problem
Due: October 5, 2012,
(no extensions will be allowed)
All source code must be in C++. You can use Windows or Unix environments at your discretion.
Each program project should be accompanied by a COVER SHEET (see details below). Assignments without cover page will NOT be graded.
This is an individual programming assignment. No team work is allowed.
The final material for submission should be entirely written by you. If you decide to consult with others or refer materials online, you MUST give due credits to these sources (people, books, webpages, etc.) by listing them on the cover sheet mentioned below. Note that no points will be deducted for referencing these sources. However, your discussion/consultation should be limited to the initial design level. Sharing or even showing your source code/assignment verbiage to anyone else in the class, or direct reproduction of source code/verbiage from online resources, will all be considered plagiarism, and therefore will be awarded ZERO points and subject to the WSU Academic Dishonesty policy. (Reproducing from the Weiss textbook is an exception to this rule, and such reproduction is encouraged wherever possible.)
Grading will be based on correctness, coding style, implementation efficiency, exception handling, source code documentation, and the written report. Try to also follow the good coding practices discussed in class during the C++ review lecture.
How to submit using Angel?
All assignments with cover sheet should be zipped or tarred into one archive folder (named after your last name).
For this assignment, I would like all of you to submit the project to the dropbox. Only if that method does not work for you due to some technical reason, then you need to submit it by EMAIL which is the old method:
DROPBOX METHOD (PREFERRED):
I have set up a have set up a new DropBox inside Angel. SO PLEASE SUBMIT
YOUR PROJECTS INTO THE DROPBOX. IF YOU DO THAT, THERE IS NO NEED TO ALSO
SUBMIT BY MAILS (JUST SUBMITTING INTO DROPBOX IS SUFFICIENT). The way to
submit to the dropbox is as follows:
1) Once you login to Angel, click on the "Lessons" tab.
2) You will see "Programming Assignment #2".
Click on that and you will see the submission website.
Under Title, just write your first and last name and say PA 2 - e.g., "Ananth Kalyanaraman, Program Assignment 2".
Leave the message textbox empty, unless you want to add a special comment to us.
Then click on the "Attachments" button and attach your ZIP file there. And then press the SUBMIT button
FYI: I don't know how much the limit
set for attachments in the Angel dropbox. But I am going to assume its good
to hold at least a couple of MB (like in the first PA). If you encounter
some difficulty bring it to my attention.
Only if dropbox doesn't work for some reason, then you can submit by email to "All course faculty" on Angel. Same time deadlines apply.
Late submission policy: A late penalty of 10% will be assessed for late submissions within the next 24-hour.
Any submission sent by any other means than specified above will be discarded and not graded.
PROBLEM Maximum subsequence sum problem:
For this assignment you will be comparing the performance of the four different algorithms we discussed in class for the maximum subsequence sum problem. Here are the details:
In a separate document (Word or PDF), compile the following sections:
· A: Problem statement. In 1-2 sentences state the goal(s) of this exercise.
· C: Experimental Results: In this section, include the following:
o The plots from the above test results
o Are the observations made in the above plots as per your theoretical expectations? If so, why, and if not, why not? Explain.
FINAL CHECKLIST FOR SUBMISSION:
___ Cover sheet
___ A separate folder containing all your source code (including the main function you used for testing)
___ Both the above zipped into another folder archive called Program2<YourLastName>.zip
This assignment is mainly about empirical testing and analysis. There is not really a design component (except may be for your test code that calls the different function versions, times them and generates a timing report). So for grading this PA, we will primarily look at how well you have designed experiments, what the plots look like, and have you offered satisfactory/convincing rationale to explain your observations.Therefore the points during grading will be distributed as follows:
The whole assignment is worth a total of 100 points.
CODING (45 pts):
(10 pts): Are all versions of the algorithms and test driver implemented correctly?
(10 pts): Is the code implemented in an efficient way? i.e., are there parts in the code that appear redundant, or implemented in ways that can be easily improved? Does the code conform to good coding practices of Objected Oriented programming?
(15 pts): Does the code compile and run successfully on a couple of test cases?
(10 pts): Is the code documented well and generally easy to read (with helpful comments and pointers)?
REPORT (55 pts):
(15 pts): Is the experimental plan technically sound? Is the experimental setup specified clearly?
(10 pts): Are results shown as plots in a well annotated manner and are general trends in the results visible?
(30 pts): Are the justifications/reasons provided to explain the observations analytically sound? Is there a reasonable attempt to explain anomalies (i.e., results that go against analytical expectations), if any?
Obviously to come up with the above evaluation, the TAs are going to both read and run your code.