CISC370, Project P01, Summer 2007:
Pair Programming,OOP,TDD,SVN

Due: Tuesday, 07/24, 11:55pm

Better: Get it done before the exam

Introduction

This exercise builds on the work you started in class on 06.21, and continued in class on 06.28, developing classes for the problem of "finding the best time for Prof. Conrad to schedule office hours.

On 06.21, we started on three classes: time, interval and availability.

On 06.28, we put some files up on the web that represent each student's availability for office hours. We also demonstrated a program, available at the link below, that can generate the URLs for all of those files. It is a "simple matter of programming" (SMOP) to extend that program to one that can read all the data at all of those URLs.

makeURLList.java

To extend it, apply the technique illustrated in the source file at the link below, which shows how to read data from a URL:

readEveryLineFromURL.java

On 06/28, I also gave you these additional instructions:

The links above contain lists of times that students can not come to office hours, given that office hours would be held sometime between 9am-8pm, Monday through Friday.

We want to produce, eventually, some kind of chart that shows, for each interval of time, how many students could come during each interval. We then want to do something to find what the "best" office hours schedule should be. We talked about various approaches.. i.e. if Conrad is going to schedule TWO office hours per week, we might pick the "most popular hour" for the first one... but what about the second one? Is there a better way than choosing the "second most popular hour?"

We want to come up with objects (Java classes and JUnit tests for those classes) that will help us solve this problem.

Last week, we started on a set of classes and JUnit tests, working in pairs. Today, I'm asking you to continue that assignment, but with one additional instruction: don't be bound by the list of specific objects in the original instructions---instead, come up with the list of objects that you and your partner think will best help to solve the problem given here.

You must work in your assigned pairs

You may collaborate among pairs on discussing approaches to the problem, etc. but you need to primarily work with your assigned "pair". You may work in any way that you wish, but I encourage you to adopt the "pair programming" approach discussed in the textbooks and in lecture.

Required Reading

Java Extreme Programming CookbookChapters 1-4 in Java Extreme Programming Cookbook.

What you need to do

Write a program that will read all of the data available in the files on the web, and produce output that will help the instructor choose the best time to have office hours, given the global constraint of 9am-8pm, M-F.

One possible user interface:

This is not the only possible user interface.

The problem is to help the professor choose the best time to hold office hours. Your job is to provide Object Oriented software that helps the professor solve this problem. If you can devise a better user interface, then do it. But be prepared to defend your choices—in terms of what helps the user best solve the problem, not what was easier for you to program!

You should use OOP and TDD to solve the problem

By now, you know what that means, but here are a few reminders:

You also need to follow the deployment model from H03

That is to say,

You'll need to adapt this model to some things that are different about this project, vs. H03 and H04.

 

Finishing and Submitting

Submit your work on WebCT for the assignment marked P01. Upload and submit BOTH

Your tar or zip files should NOT contain your .class files—but if you followed the build.xml example from H03 properly, your "ant dist" task should create a tarball and zip file automatically that is in the proper form.

In addition—go to the Wiki page named 07J_P01, and make sure that there is a link to your distribution on that page, and the address of your SVN Repository.

Say what? SVN?

Yes, for this project you will be using SVN. We'll give instructions during the lecture on 07/05.

Grading Rubric (150 pts total)

Item Description Points
Functionality The program actual works—it does what it is supposed to do when you run it 25
User Interface The program is easy for a user to use (15 pts) and the user interface is clean and free of any sloppiness (spelling mistakes, formatting problems) (10 pts) 25
Unit Testing Your code includes appropriate Unit tests, and those unit tests can be run from the build.xml file. 25
Style The program logic is clear and well documented. It is easy for someone to read your program and understand how the program works. 25
Deployment The build.xml file is clear, and operates correctly. It contains tasks for compiling, running unit tests, running the code, producing javadoc (and deploying it to the web), and creating a distribution file and posting it to the web. 10
Web Site There is a web site under your userid on copland.udel.edu where your javadoc is available, your code is available (in tarball/zip and browsable source form). There is a brief explanation of your code, and link to the assignment. You have updated the indicated wiki page with a link to this site. 10
Scripting Your script clearly demonstrates the functions of the program, and includes a reasonable amount of testing. 10
SVN SVN Repository is set up correctly, and accessible to the instructor and TA 10
Following Directions Both submitted files (e.g. script and (tarball or zip)) are submitted according to directions, and all other aspects of the project comply with instructions given. 10
Total Points    

Valid XHTML 1.0 Valid CSS!