Course Project

The goal of the course project is to (1) expose the student to algorithmic issues in current computer science research, and (2) provide an opportunity for the student to apply the algorithm design and analysis techniques in this course to practical and/or theoretical problems. You are free to choose a computation problem of your choice and it could be related to your Masters or Doctoral research and/or a course project of a different course (please seek permission from the instructor of the other course).

This is an individual project, although groups of up to two persons will be considered for projects of sufficient difficulty or complexity.

Your Tasks

1. Choose a computation problem.

You may look at recent publications in computer science academic conferences for ideas. You may also look at what different companies and startups are doing for inspiration. Research current algorithmic solutions to the chosen problem in the literature.

2. Pick at least two algorithms to analyse.

The algorithms should be cutting edge algorithms from the current literature. You may also design your own algorithm for the chosen problem (that would be very cool!!).

3. Write a brief project proposal

Post the proposal in Laulima->Class Discussion with “Project:” as a prefix in the title. Your proposal should include:

You will also need to give a 5 minute pitch of your project proposal to the class!

4. Analyse the algorithms BOTH analytically AND empirically.

Think about the computation model: what are you counting? Does it make sense for the application?

Think about what kind of analysis is required. Worst case, average case, amortized. The literature on those algorithms may give you sketches of those analysis – you need to fill in the details.

Think about how you would evaluate the algorithms experimentally and quantitatively. If implementations of the chosen algorithms are not available, you may need to implement the algorithms in a programming language of your choice (you also need to understand how this choice affect the analysis).

Generate data and run experiments to evaluate the algorithms.

Analyze the measurements obtained from your experiments and iterate for deeper understanding.

Post a progress report in Laulima->Class Discussions. These reports are meant to make sure that you are on the schedule you have set for yourselves. They should be short, and state what you have accomplished so far (w.r.t. the schedule), what unexpected obstacles you have encountered. In some cases, you may have to revise the project plans as a result of the midterm reports.

5. Present your project

You will need to prepare a 12 min presentation and present it in class at the end of the semester. You may choose to record the presentation using screencasting software such as screencast-o-matic or screenflow, upload it to youtube (you could make it an unlisted link), and play the presentation during the in-class presentation slot.

6. Write a project report

You will write a project report (in LaTeX) in the style of a conference paper of at most 5 pages. Analysis details (eg. proofs) can be deferred to an appendix (not counted towards the 5 pages). The ACM master article template should be used.

Timeline

You are not required to turn in code, but be prepared to show any code you wrote, should the instructor request for it for the purpose of grading. The grading of the projects will be based on the following criteria: