Data structures, such as lists, trees or graphs, are the ways in which data is represented and organized in memory. Along with the corresponding algorithms that access and update the data, data structures are the building blocks of software. Well designed and well implemented data structures are crucial for constructing software systems of non-trivial size that are efficient, reliable, understandable, testable, and maintainable. Appropriate data structures also facilitate the division of work and communication within teams of developers and the successful adoption of components and services by third parties.
| Date |
Readings |
Topics |
Other materials |
Work Assigned |
Work Due |
| Tuesday, 23 August |
Ford: Ch 1 & 3.5 (in 3.5, focus on templates; you can ignore for now how sorting is done) |
Introductions
Expectations
Syllabus
Basic Definitions
C++ Review, Part 1
|
string code demo |
|
|
| Wednesday, 24 August |
|
|
|
Prog. Assgn, 1 - Solution
inputs - skeleton files |
|
| Thursday, 25 August |
Ford Ch 2, Ch 4 (except for insertionSort in 4.4)
Note: exceptions are in Ch 2.2
|
C++ Review, Part 1
Overloading and templates
STL; storage containers
Linux/Unix
|
string code demo |
|
|
| Tuesday, 30 August |
C++ inheritance: Ford Ch 13-1, 13-6, 13-7
More C++ you should know: Ford Ch 5.1, 5,2, 5.3, 5.4
Optional: Ford 7-2
|
C++ Review, Part 2
Operator overload, inheritance, exceptions, heap vs. stack
Programming Examples
Software Engineering, UML
|
code: operator overloading, template class, exceptions.
Design patterns (Scott Emrich) |
|
|
| Wednesday, 31 August, 11pm |
|
|
|
|
Prog. Assgn. 1 - Solution
inputs skeleton files |
| Thursday, 1 Sept. |
Ford 3-1 to 3-5, 4-4 (insertion sort)
Recommended: Cormen Ch 1, 2.1, 2.2, 10.2
|
Algorithms & Complexity
Sequential Search
Basic Sorting
Binary Search
|
Animated insertion sort!
Animated selection sort!
|
|
|
| Sunday, 4 Sept. |
|
|
|
Homework # 1 v3
|
|
| Tuesday, 6 Sept. |
Ford 3-6, 3-7, and 15 until page 874 (no quicksort)
Recommended: Cormen Ch 2.2, 2.3, and 3
|
Review: sorting, complexity
Divide and Conquer
Binary Search (revisited)
Complexity notations
Merge Sort
Recurrence relations
|
Jim Marshall's complexity charts
Wikipedia: Big O, Big Theta
NIST: Big O and Big Theta
Animated: insertion,
selection, and
merge sort!
|
|
|
| Thursday, 8 Sept. |
Ford: Ch 15 (complete)
Recommended: Cormen: Ch 3, 4 & 7
|
Review of Mergesort
Recursion in general
Quicksort
Solving Recurrence Relations
|
NIST: Quicksort
Video: Quicksort vs Bubblesort
Video: Merge-sort dance
Video: Quick-sort dance
Animated Quicksort
|
|
|
| Sunday, 11 Sept |
|
|
|
Class Project Web Page |
|
| Monday, 12 Sept. 11pm |
|
|
|
|
Homework # 1 v3
|
| Tuesday, 13 Sept. |
Ford: Ch 15-1 (pp 874-889)
Ch 6, 9-1, 9-2, 9-3, 9-5, 9-6
Cormen (3rd ed): Ch 4-3, 4-4, 4-5; give 4-6 a try; 7, 10.2
|
Quicksort (continued)
Solving recurrence relations; Master Method
|
NIST: Quicksort
Video: Quicksort vs Bubblesort
Video: Quick-sort dance
Animated Quicksort
Wikipedia: Master Method
|
Programming Assignment 2
PA2 files
|
|
| Thursday, 15 Sept |
Ford Ch 6, 7, and 9-1 to 9-6
Cormen 10.1, 10.2, 10.3
|
Recap: solving recurrence relations
Lists vs vectors; iterators
Stacks
|
*Extra slides: Linked Lists*
Animation: Towers of Hanoi
|
|
|
| Sunday, 18 Sept, 10pm |
|
|
|
|
Groups set for Project |
| Tuesday, 20 Sept. |
Ford: Ch 8, 14-1, 14-2, 14-3
Cormen (3rd ed): Ch 10.1
|
Stacks (continued)
Queues
Priority Queues
Heaps (first glance)
|
Animated Queues
|
|
|
| Thursday, 22 Sept |
Ford: 8-6, 14-1, 14-2, 14-3
Cormen (3rd ed): 6, 8.3, 10.1
|
Radix Sort (continued)
Priority Queues
Heaps; implementation, encoding
Heapsort
|
Animated Radix Sort
|
|
|
| Tuesday, 27 Sept. |
Ford: Ch 8-6, 14-1, 14-2, 14-3
Cormen (3rd ed): Ch 6
|
Heaps in depth: inserting, deleting
Survey and project discussion
|
Animated Heapsort
|
|
|
| Thursday, 29 Sept. |
Ford: Ch 14-2, 10-1 to 10-4
Cormen (3rd ed): Ch 6, 10.4, 12.1
|
Survey and project discussion
Heapsort
Trees
|
Animated Heapsort
|
|
|
| Tuesday, 4 Oct. |
Ford: Ch 10-5 to 10-8
Cormen 3rd ed: Ch 12.1 to 12.3
|
Binary Trees
Binary Search Trees
|
John Morris's Trees page
Binary Search Tree animation
In-order traversal animation
|
|
|
| Thursday, 6 Oct. |
Ford: Ch 10-5 to 10-8
Cormen 3rd ed: Ch 12.1 to 12.3
|
Binary Search Trees continued
Review for Midterm Exam
|
John Morris's Trees page
Binary Search Tree animation
In-order traversal animation
|
|
|
| Tuesday, 11 Oct. |
|
Midterm Exam
Solution and rubric
|
Midterm 2004
Large set of sample problems
(some problems are just C++, so not all of them apply)
|
|
|
| Thursday, 13 Oct. |
Ford: page 563, Ch 11
|
Binary Search Trees: complexity
Sets and Multisets; Maps
|
John Morris's Trees page
Sets: Wikipedia, NIST
Maps: Wikipedia, NIST
|
|
|
| Tuesday, 25 Oct. |
Ford: Ch 11, 12-6 to 12-8
Cormen 3rd ed: Ch 13
|
Map and Set implementation with balanced trees
2-3-4 trees, Red-black trees (overview)
|
|
|
|
| Thursday, 27 Oct. |
Ford: Ch 12-6 to 12-8
|
Red-black trees
Conversion from 2-3-4
Construction from scratch
|
|
|
|
| Tuesday, 1 Nov. |
Ford: Ch 12-1 to 12-5
Cormen 3rd ed: Ch 11
|
Hashing and Tables
Collision handling
|
|
|
|
| Thursday, 3 Nov. |
Ford: Ch 14-5, 14-6
Cormen 3rd ed: Ch 16.3
|
Bitsets
|
Wikipedia: bit array
Specialized std::vector<bool>
Java BitSet
|
|
|
| Tuesday, 8 Nov. |
Ford: Ch 16-1 to 16-3
Cormen 3rd ed: Ch 22
|
Bit-based compression
Graphs: introduction
|
|
|
|
| Thursday, 10 Nov. |
Ford: Ch 16-4 to 16-6
Cormen: Ch 22 to 24
|
Graphs: search and traversal
|
Strongly-connected components algorithm
|
|
|
| Tuesday, 15 Nov. |
Ford: Ch 16-4 to 16-6
Cormen: Ch 22 to 24
|
Graphs: search and traversal (continued)
|
|
|
|
| Thursday, 17 Nov. |
Cormen: Ch 25 and 26
|
Graphs: all-pairs paths, maximum flow
|
All-pairs paths, animation
Max flow 1, Max flow 2
|
|
|
| Tuesday, 22 Nov. |
Cormen: Ch 25 and 26
|
Graphs: all-pairs paths, maximum flow (continued)
|
All-pairs paths, animation
Max flow 1, Max flow 2
|
|
|
Thursday, 24 Nov. |
no class
|
no class (Thanksgiving)
|
|
|
|
| Tuesday, 29 Nov. |
none
|
Special topic: Program analysis,
data flow in graphs
|
|
|
|
| Thursday, 1 Dec. |
|
Survey comments
Review for exam
Project Posters (3)
|
|
|
|
| Tuesday, 6 Dec. |
|
Project Posters (6)
Quick review for exam
|
|
|
|
| Thursday, 8 Dec. |
|
Project Posters (6)
Quick review for exam
|
|
|
|
| Wed, 14 Dec. |
|
Final Exam
|
Practice final exam |
|
|