University of Waterloo CS 666 - Fall 2010
Design and Analysis of Algorithms
Project
Home Lectures Admin Assignments Project Resources Exams

Project Guidelines

Due date: before Wednesday, December 15 at 5pm. Send your report to me (imunro -at- uwaterloo.ca) by e-mail (in either PDF or PostScript).

Basically: pick a problem and a paper, read the paper, and write a report about it (at most 10 pages).

You may choose a paper on your own (but see tips and suggestions below). The paper should be about algorithms, of course, and preferrably related to topics covered in class. In accordance with the "spirit" of this course, the emphasis of the paper should be on well-defined problems and algorithms with provable performance guarantees (worst-case time, expected time, approximation factor, competitive ratio, etc.). Implementations and experimental studies are not required and are not the objective.

The Report

The first part should be devoted to a clear statement of the problem and a short survey of known results. For this, you may have to read up on previous papers and do a literature search for the latest results.

The second part should be an description, in your own words, of the algorithm and/or analysis from your particular paper. You might find that papers don't necessarily give the clearest explanation. So, don't just paraphrase the paper's description. Rather, the objective is to make the paper easier to understand, for example, by finding a different way to look at the algorithm, using simpler notation, highlighting ideas as you see them to be, adding examples and intuition, etc. Be creative! With only 10 pages, don't try to explain all the details in the paper if they are too complicated and technical---an overview is more important. (If the paper contains several algorithms, focus perhaps on just one.) But do point out connections with ideas from previous papers as well as techniques we have seen from class.

The final part should be your critique of the new ideas and results from the paper, e.g., how they compare with previous (and subsequent) results and known lower bounds, how practical they are, etc. Also state open problems, including any of your own, for future work in the area. (And if through this process you are able to obtain improvements and solve an open problem, I'd love to hear about it!)

Tips

Ideally, each student should choose a different problem, so let me know what you have decided on (e.g., by e-mail or during office hrs).

You do not have to choose the latest paper with the best result on a problem; find one which is "relatively" recent (i.e., not already described in existing books or surveys) and which you think you can understand reasonably well.

To get a feel for recent research in algorithms and complexity, browse through conference proceedings such as FOCS (IEEE Sympos. on Foundations of Computer Science, QA401.S95x), STOC (ACM Sympos. on Theory of Computing, QA267.A2), and SODA (ACM-SIAM Sympos. on Discrete Algorithms, QA76.6.A278). Final versions of papers usually appear in journals.

The DBLP web site provides links to publishers' electronic copies of many papers. The CiteSeer site provides links to the authors' own electronic copies of recent papers. The latter site also tracks citations, which is handy for finding related papers. Also try Google Scholar.

Examples

Below is just a "random" list of suggested problems/papers. You are encouraged to look for other problems on your own.