---
title: "302 Lecture Notes"
format: html
---

This website will host pre-class and in-class lecture notes for Algorithms and Complexity. 

Pre-class lecture notes are typed notes that cover most of what we will be doing in class, but which do not have solutions to in-class exercises. You can read them ahead of time to help you prepare for class, you can bring them with you to annotate during class, you can review them after class as a searchable resource, or you can ignore them. 

In-class notes are pdfs of the digital notes that I create during class. The link to the pdfs will be added to the top of the corresponding digital notes.

Notes on this site are organized by topic. For note by date, see the Canvas calendar.

## Notes

[Course Introduction](about.qmd)

### Divide and Conquer
* [Introduction to Divide and Conquer](DC_intro.qmd)
* [Closest Points in 2D](ClosestPoints.qmd)
* [QuickSort](QuickSort.qmd)

### Greedy
* [Scheduling Problem](Scheduling.qmd)
* [Huffman's Coding Algorithm](Huffman.qmd)
* [Dijkstra's Shortest Path Algorithm](Dijkstra.qmd)

### Dynamic Programming
* [Max Weight Independent Set](MWIS.qmd)
* [Knapsack Problem](Knapsack.qmd)
* [Bellman-Ford Shortest Path](BellmanFord.qmd)
* [Limitations of Dynamic Programming](DP_Limitations.qmd)

### Hardness and NP-Complete Problems
* [Polynomial-Time Reductions](Reduction.qmd)
* [NP](NP.qmd)
* [NP-Complete Problems](NP_Complete.qmd)

