# Assignments

This class has three types of assignments: homeworks, labs, and projects.

Homework assignments will be occasional (once every 1-2 weeks), and will mostly
be written. Labs happen nearly every week and always involve programming.
For homework and labs, accoding to the course policy
*documented* collaboration (but not copying) is allowed.

The three course projects will also be programming projects, and will be much
more intensive and involved than other assignments. Accordingly, you will be given more time
to complete them. The other big difference with projects is that no collaboration
is allowed on them; these are your chance to demonstrate what *you*
are capable of on your own!

Students are encouraged to review the course policy on deadlines, allowed collaboration, and EI.

# Projects

- Project 1: Enigma
**DUE Wednesday, September 14 at 23:59** - Project 2: Rainbow Table
**DUE Tuesday, November 1 at 23:59** - Project 3: Graph Crypto
**DUE Monday, November 28 at 23:59**

# Labs

- Lab 1: OOP (solutions posted)
- Lab 2: Linked Lists (solutions posted)
- Lab 3: Pythonic lists in C (solutions posted)
- Lab 4: Recursion and linked lists (solutions posted)
- Lab 5: Queues (solutions posted)
- Lab 6: Text analysis (solutions posted)
- Lab 7: Maps (solutions posted)
- Lab 8: Treaps (solutions posted)
- Lab 9: Bloom Filters (solutions posted)
- Lab 10: Graphs and dot files (solutions posted)
- Lab 11: Graph hops (solutions posted)
- Lab 12: Sorting Lab