Computer Science 501
Data Stuctures and Algorithm Analysis

Fall 2013, The College of Saint Rose

Programming Project 1: Timing Java
Due: 6:00 PM, Wednesday, September 25, 2013

Our first programming project is to write a Java program or programs that will perform emprical analysis of a number of operations that you can compare with the theoretical expectations, and to write up a formal report of your results.

You may work individually or with a partner on this project.

Timing Java Code

Read the lab description on pages 115-117 of Bailey. We will not be doing this lab specifically, but it explains the ideas and techniques you will need to be able to write a program that can generate good timing data.

Experiments

Design and implement experiments to analyze the efficiency of each of the following operations:

In each case, you will need to determine an appropriate range for values of n to use for your experiments to be able to see the trends in the behavior of the operation. You will need to perform multiple runs of each to generate meaningful timings.

Analysis and Discussion

For each experiment, you should do the following in your writeup:

Submission

Before 6:00 PM, Wednesday, September 25, 2013, submit your Java program(s) and writeup for grading. Do this through Submission Box under assignment "TimingJava". Since SubmissionBox can only accept one file per assignment, please package up your files in a "zip" or similar archival format first.

Grading

This assignment is graded out of 50 points, broken down as follows:

Grading Breakdown

General timing framework 5 points
Java code for specific operations 15 points
Java code style, documentation, and formatting 5 points
Theoretical expectations 10 points
Presentation and analysis of timing results 15 points