COSC 311 Course Project (100 points)

Due date: see Canvas.

Choose a data structure and/or an algorithm/function that was not discussed in class to study and present. Prepare an 8-minute presentation that introduces this data structure and/or an algorithm/function. The talk should use slides to highlight main points of the presentation and should include the following:

  1. Year when invented, and who invented if this information is available.

  2. Problem statement – what is the problem that this algorithm/data structure solves? why is the problem important? why is it hard?

  3. Solution described in detail – how does your data structure/algorithm solve the problem? What is its running time or performance characteristics? How does it scale? For example, if it’s a tree structure, can it scale up to 100,000 nodes? How will this affect performance of main operations?

  4. Use cases, or applications. If there is a software that implements/uses this data structure/algorithm, showing off this software or its video/screenshots would be cool (this part should take up no more then 10% of the total presentation time)

Extra credit (15 pts): Implement the data structure/algorithm and show a demo at the end of your presentation.

Forming teams

Each team may consist of one, two, three, or four students. It is entirely up to each of you to decide on who your teammates will be and how many people will be on your team.

Selecting a data structure/algorithm to study

You may select a data structure and/or related algorithm to study from the following resource:


The data structure/algorithm assigned to your team must be approved by the instructor. You are welcome to use the above link as a resource, or to find a data structure/algorithm from any other resource of your choice. In either case, your request must be approved by the instructor.

Work Ethics

Each team member must make a significant contribution to the project. This contribution may be in the form of research that became part of the final presentation, slides developed, demo prepared, code, ideas/study put in writing, finding good test data, writing code, use cases, etc.

Submission instructions (for those who did the extra credit portion):

In the event that you do not finish all the functionality for your project, please document your efforts in the report (described below), e.g., "tried this that and the other and here is the 1000 lines of code that did not work, and here is the error message I ran into".

  • Create a folder and place in it your presentation, as well as all your code and a report described in the following. Zip the folder and submit via canvas as a zip file.

  • Submit a one paragraph-long report that describes:

    • your team's deliverables

    • each team member's deliverables

To give you a rough idea about the report structure, here is what a report could look like:

Our team has addressed the problem of X. The problem X is ... description of what problem you worked one, in 3-5 sentences at the most. In this project we 1) implemented an algorithm Q for efficient Y, 2) tested our implementation by running our program using a sample input Z. Individual team members contributions are as follows:

Bill: algorithm Q implementation

Joe: performance study with the test data

Each member's contributions must be stated clearly. If a task was done collaboratively, state exactly what each member contributed.


  1. Form a team.

  2. Select the algorithm/data structure and submit a request by 11/16.Fill out this form. Please request what has not been requested by others yet (view these responses to know what's already taken. You do NOT need to edit the spreadsheet, just fill out the form).

    1. Complete the project and submit the following through Canvas by the due date:

      1. Presentation slides.

    2. If you did the extra credit piece: 1) your code, and 2) a brief report of each team member's deliverables. The report should be half a page maximum - see below.

  3. Please upload your slides here 24 hours before the date of your presentation.