CS331 - Datastructures and Algorithms

Version 1

Course webpage for CS331

Programming Assignments

Assignments

The assignments will make up 30% of your final grade. Below we list for each assignment its contribution to the final course grade.

  • Lab 00 - Preliminaries
    • due: 01/27
    • weight: 1%
  • Lab 01 - Basic Python
    • due: 02/03
    • weight: 2%
  • Lab 02 - N-grams
    • due: 02/10
    • weight: 2%
  • Lab 03 - Searching and Sorting
    • due: 02/24
    • weight: 3%
  • Lab 04 - Array-backed Lists
    • due: 03/08
    • weight: 2%
  • Lab 05 - Linked Lists
    • due: 03/17
    • weight: 3%
  • Lab 06 - Stacks & Queues
    • due: 03/24
    • weight: 3%
  • Lab 07 - Hashtables
    • due: 03/31
    • weight: 3%
  • Lab 08 - Heaps
    • due: 04/12
    • weight: 3%
  • Lab 09 - Binary search trees
    • due: 04/26
    • weight: 3%
  • Lab 10 - AVL-trees
    • due: 05/03
    • weight: 3%
  • Lab 11 - Quick Sort
    • due: 05/12
    • weight: 2%

Logistics and Submission

We create a git repository for each student. Templates for assignments will be pushed to these repositories over the course of the semester. There will be a folder for each assignment, e.g., the first lab is in folder lab00. The README.md file in such a folder has the instructions for the lab. The labXX.py file contains skeleton code for the assignment. Typically, these files contain one or more functions you have to implement, plus test code.

.
├── README.org
├── lab00
│   ├── README.md
│   └── lab00.py
├── lab01
│   ├── README.md
│   └── lab01.py
...

Testing your code

You can test the assignment by running its main method from withing the labXX directory:

python labXX.py

This will run several test cases. Note that we may run additional test cases in addition to the ones in this file.