CSCE 620:
Programming Assignment #1
Fall 2009


General Guidelines for Programs


Assignment

Due: Tuesday September 22, 2009 by 9:35am. Code should be turned in electronically using the mechanism described above. You should also turn in an electronic copy of your report using the same mechanism as you do for the code; the electronic copy does not need to have the signed coverpage. In addition, you should submit a hardcopy of your report (but no code). This is due at the beginning of class on Tuesday September 22, 2009; the hardcopy must include the signed coverpage.

The purpose of this "programming" assignment is to get you familiar with the CGAL library. You will need to install CGAL and write a simple program to execute some CGAL algorithms. You will also time the algorithms and write a report that compares their theoretical and their experiemental performance.

The CGAL tutorial presented in class provides some helpful information and pointers to other resources. The course homepage also has some other useful CGAL links.

Coding Portion. (25 points)

CGAL includes five different algorithms for computing 2D Convex Hulls. You should implement a program that executes and measures the running times of these five convex hull algorithms.

Report. (75 points)

You should prepare a report that examines the performance of the five convex hull algorithms. You should compare the algorithms both theoretically and experimentally. You will write a brief report that includes theoretical analysis, a description of your experiments, and discussion of your results. At a minimum, your report should include the following sections:

  1. Introduction. In this section, you should describe the objective of this assignment.
  2. Theoretical analysis. In this section, you should describe the theoretical complexity of the five convex hull algorithms using asymptotic analysis (e.g., Big Oh).
  3. Experimental Setup. In this section, you should provide a description of your experiment setup, which includes but is not limited to
  4. Experimental Results. In this section, you should compare the performance (running time) of the algorithms with each other, and you should also compare each algorithm's experimental and theoretical complexity.
  5. Conclusion. In this section, you should summarize your conclusions.