EECS 281

Maxim Aleksa

Section 5: Monday and Wednesday, 2:30–4:30 PM in EECS 1200

Office Hours: vary weekly

Course website: eecs281.io

Send me feedback!

Week 1: Wednesday

Week 1: Wednesday

Algorithms. Asymptotics. Getopt. Makefile. Valgrind. Project 1. Data structures.

Week 2: Monday

Week 2: Monday

Asymptotics, continued. Analysis of Algorithms. Recurrence Relations. Perf.

Week 2: Wednesday

Week 2: Wednesday

Templates. STL. Containers. Vector.

Week 3: Monday

Week 3: Monday

Containers, continued. Deque. List. Array. Priority queues. Heaps.

Week 3: Wednesday

Week 3: Wednesday

Strings. Heaps. Pairing heaps. Disjoint sets.

Week 4: Monday

Week 4: Monday

Disjoint sets. Union and find. Bubble sort. Selection sort. Insertion sort. Heapsort. Merge sort. Quicksort.

Week 4: Wednesday

Week 4: Wednesday

Midterm Exam review.

Week 5: Wednesday

Week 5: Wednesday

Midterm Exam. Hash tables. Hash functions. Collision resolution. Dynamic hashing.

Week 5: Code Design

Week 5: Code Design

Model View Controller. Readable, maintainable and structured code Multiple source files. Conditional compilation.

Week 6: Monday

Week 6: Monday

Trees. Traversals. Binary search trees. AVL trees. Tries.

Week 6: Wednesday

Week 6: Wednesday

AVL trees, continued. Graphs. Graph representations. Graph traversals.

Week 7: Monday

Week 7: Monday

Graphs, continued. Graph traversals. Minimum spanning tree. Prim‘s algorithm. Kruskal‘s algorithm. Algorithm design. Brute-force algorithms. Greedy algorithms. Huffman coding.

Week 7: Wednesday

Week 7: Wednesday

Algorithm design, continued. Huffman coding. Backtracking. Branch-and-bound. Dynamic programming. Knapsack problem.

Week 8: Monday

Week 8: Monday

Final Exam review. Hash tables. AVL tree operations. Graph traversals. Backtracking. Dynamic programming.

Week 9: Monday

Week 9: Monday

Preparing for interviews.

Copyright © 2025, Maxim Aleksa