CSCI 345. Data Structures and Algorithms

Fall 2022
Thomas VanDrunen

Meeting time: MWF 11:35pm-12:45pm.
Meeting place: MEY 181

Office hours: Drop-in 3:30-4:30 MWF; also schedule through Calendly
Contact: MEY 163; 752-5692;


Final exam: Wed, Dec 14, 10:30am-12:30pm

The date where the calendar says a project is "assigned" is the suggested date to start working on it. The date where a project is "due" is when you should have the project completed in order to stay caught up in the course.
Moon's dayWoden' s dayFrigga's day

Aug 22


Aug 24

Prolegomena. Introduction

Pretest assigned

Aug 26

Algorithms and correctness

Pretest due

Aug 29

Algorithms and correctness; algorithms and efficiency

Aug 31

Algorithms and efficiency

Sept 2

Algorithms and efficiency

Implementing ADTs assigned

Sept 5


Sept 7

Abstract data types

Sept 9

Data structures

Sept 12

Data structures; programming practices

Sept 14

Case studies. Counting sort

Linear Sorting assigned

Sept 16

Radix sort

Implementing ADTs due

Sept 19

Disjoint sets and array forests

Sept 21

Priority queues and heaps

Linear Sorting due; Heaps assigned

Sept 23

N-sets and bit vectors

Bit Vectors assigned

Sept 26

Graphs. Concepts and implementation

Sept 28


Heaps due

Sept 30

Minimum spanning trees

Bit Vectors due; MST assigned

Oct 3

Minimum spanning tree

Oct 5

Single source shortest paths

MST due; SSSP assigned

Oct 7

Finishing SSSP

SSSP due Mar 3

Oct 10


Oct 12


Oct 14

Binary search trees. General BSTs and the balanced tree problem

BST Rotations assigned

Oct 17


Oct 19


Oct 21

Balanced BST problem, AVL trees

Oct 24

AVL trees

BST rotations due; AVL trees assigned

Oct 26

Traditional red-black trees

Traditional RB trees assigned

Oct 28

Left-leaning red-black trees

AVL trees due; [Practice: LLRB trees]

Oct 31

BSTs wrap-up

Nov 2

Dynamic programming. Introduction

Nov 4

Dynamic programming principles

Traditional RB trees due

Nov 7

Dynamic programming algorithms

Nov 9

Review (and start Optimal BSTs)

Optimal BSTs assigned

Nov 11


Nov 14

DP: Optimal BSTs

Nov 16

Hash tables. Introduction and separate chaining

Opt BSTs due; [separate chaining practice]

Nov 18

Open addressing

Open addressing assigned

Nov 21

Hash functions

Nov 23


Nov 25


Nov 28

Perfect hashing

Perfect hashing assigned

Nov 30

Hash table performance

Open addressing due

Dec 2

String sorts

Dec 5


Tries assigned

Dec 7

Regular expressions

Perfect hashing due

Dec 9


Tries due