Computer Science 345

Data Structures and Algorithms
Spring 2017
Thomas VanDrunen



Meeting time: MWF 12:55-2:05 pm.
Meeting place: Meyer 131

Office hours: MTuWF (not Th) 3:30-4:30 pm; Th 9:30-10:30 am and 1:00-3:00 pm.
Contact: 163 Science; 752-5692; Thomas.VanDrunen@wheaton.edu
http://cs.wheaton.edu/~tvandrun/cs345


Syllabus
Project guide



Final exam: Thurs, May 4, 1:30-3:30pm


Moon's dayWoden' s dayFrigga's day

Jan 9

Prolegomena. Introduction
Practice: Pre-test exercise

Reading for Friday

Jan 11

Introduction (1.1&2)

Jan 13

Abstract data types (1.3)

Project: Implementing ADTs

Jan 16

NO CLASS

Jan 18

Algorithms: correctness (3.1)
Slides

Read Section 1.4 plus response

Jan 20

Algorithms: efficiency (1.4)
Slides

Jan 23

Case study: Counting Sort and Radix Sort

Project: Linear sorting
Section 1.5 plus resposne

Jan 25

Case study: Disjoint sets and union/find (1.5)

Jan 27

Case study: Bit vectors

Project: Bit vectors
Section 2.4 plus response

Jan 30

Case study: Heaps and priority queues (2.4)
Slides

Project: Heaps
Read Sections 4.(1&2) plus response

Feb 1

Graphs. Introduction (4.1&2)
Slides

Feb 3

Graph implementations (4.1&2)

Feb 6

Graph traversal (4.1&2)

Read Section 4.3 plus response

Feb 8

Minimum spanning tree algorithms (4.3)
Slides

Project: MST
Read Section 4.4 plus response

Feb 10

More on MST

Feb 13

Single-source shortest path algorithms (4.4)

Project: SSSP

Feb 15

Finishing SSSP
Slide

Feb 17

Review

Feb 20

NO CLASS

Feb 22

Test

Read Sections 3.(1&2) plus response

Feb 24

Binary search trees. Introduction to trees and BSTs (3.2)

Read Sections 3.3 plus response

Feb 27

Overview of balanced trees (3.3)
Slides

Mar 1

AVL trees
Slides

Project: AVL trees

Mar 3

Traditional red-black trees
Visualization by David Galles
Slides

Project: Traditional RB trees

Mar 6

NO CLASS

Mar 8

NO CLASS

Mar 10

NO CLASS

Mar 13

Left-leaning red-black trees
Slides

Practice: LLRB trees

Mar 15

Two-three trees
Slides

Read pg 866-874 plus response

Mar 17

B-trees (6 pg 866). Finishing balanced trees

Mar 20

Dynamic programming. Introduction
Slides

Practice: Dynamic programming

Mar 22

Examples and principles

Project: Optimal BSTs

Mar 24

Examples
Slides

Mar 27

Optimal BSTs
Slides

Mar 29

Review

Practice problems

Mar 31

Test

Read section 3.4 pg 458-468 plus response by Apr 7

Apr 3

Finishing optimal BSTs

Apr 5

Hash tables. Introduction to hashing; separate chaining (3.4)

Practice: Separate chaining

Apr 7

Hash functions

Read section 3.4 pg 469-479 plus response

Apr 10

Open addressing with linear probing (3.4)

Project: Linear probing

Apr 12

Perfect hashing

Project: Perfect hashing

Apr 14

NO CLASS

Apr 17

Hashing wrap-up.


Skim Section 5.1 (no response necessary)

Apr 19

Strings. String sorting; radix sort revisited (5.1)

Read Section 5.2 (no response necessary)

Apr 21

Tries (5.2)
Slides

Project: Tries
Skim Section 5.3 (no response necessary)

Apr 24

Regular expressions (5.4)

Skim Section 5.4 (no response necessary)

Apr 26

Regular expressions practice

Apr 28

Review

Practice problems