CS 591 Randomized Algorithms, Class Project

Prof. Jared Saia, University of New Mexico

Due: Tuesday, Dec. 15th

A significant part of this class is the class project. In this project, you will apply mathematical tools learned in this class to solve an algorithmic problem. The project must have a significant analytical component to it where you demonstrate mastery of mathematical tools learned in this class. The project can optionally contain an empirical component where you do empirical tests which support or complement your analytical results. You are encouraged to do this project in groups of between two and four students.

The main deliverable for the class project is a paper no more than twelve pages in length (not including bibliography and appendix). This paper should be structured as a standard research paper in that it should have an abstract, an introduction, a related work section, a body (containing a section on algorithms and a separate section on analysis), and a conclusion and future work section. I expect each paper to have at least one non-trivial idea.

Learning to write good research papers is a life-long process. There are links to several good references for this process on my home page in the Student Advice section. I strongly recommend discussing your project with other students both inside and outside of your group and getting other students to review a copy of your paper before you turn it in. I also strongly recommend that you come by my office hours periodically to discuss your progress on the project.

1 Project Ideas

Following are some ideas for getting a topic for the class project:

1. Use a problem related to your own research. Randomized algorithms are used in almost all areas of computer science, so if you would like some pointers to relevant papers, send me mail or come by my office hours.

2. Find a topic in the textbook that interests you. Find papers on this topic in the bibliography of the textbook (www.citeseer.org is a good place to find a paper online if you have the title). Find problems in the “Conclusions and Future Work” section of these papers.

3. Come talk to me. I have several problems that would be suitable for a class project.

4. In many discussions in this class, we used asymptotic notation to analyze the run times of algorithm. This notation hides constants which can sometimes have a big impact on actual run times. One possible project is to go back and find the hidden constants in run times of some subset of the algorithms we have studied. For this type of project, you should also do empirical tests to verify that the actual run times of the algorithms closely match your analysis.

5. Use a research problem in the textbook (These are the problems labelled Research Problem). Note these problems are frequently very challenging. If you want to look at one of these problems, you should first try to make it easier by looking at a restricted version of the problem.