Lecture Topics
(since midterm)
Last Modified:
Fri Dec 12 10:53:51 1997
See also the course syllabus
for a general outline of what will be covered each week.
Oct 28: ADTs
4 parts: design, analysis, implementation, use
good analysis can avoid unnecessary implementation
toy example: edit buffer
operations: new/free, forward/back, beginning/end,
insert/delete, display
comparison of implementations using arrays and stacks
Oct 30: Edit Buffer
in array and stack implementations, moving data causes
inefficient algorithms
linked lists allow insertion and deletion without moving
all the data
implementation using singly linked lists (and analysis)
time/space trade-offs
linked lists are faster but use more space
ways to improve: doubly linked lists, lists of lines/blocks
Nov 4: Edit Buffer
insert/delete
Symbol Tables
operations: new/free, insert, lookup
interface (preliminary)
implementation choices
hashing
missing operation (do next time)
Nov 6: Implementation of Hash Table
Nov 11: Trees
Nov 13: Functions as data
Traversing an ADT
Nov 18: BST implementation
data arrangement
New
Find
Nov 20: BST implementation
Map
Insert
Delete
Free
BST efficiency: Balancing
AVL trees
2-3 trees
Nov 25: Makefiles
Dec 1: Two-three trees
data types
insertion algorithm
Intro to graphs
terminology
shortest path problem (Kevin Bacon game)
Dec 3: Graphs
interface
implementation choices
adjacency list
adjacency matrix
depth-first/breadth first search
Dijkstra's algorithm
Dec 8: Bit Operations: & | ^ ~ << >>
accessing individual bits of an integer-type variable
space-efficient adjacency matrices
client | interface | implementation
Abstract Data Types
definition and advantages
Data encapsulation (data hiding)
Priority Queues: definition
Dec 10: Priority Queues: implementation
ordered linked list
ordered array
heap (see also 728 and following in book)
definition: shape and order
insert & delete operatioins
efficiency
using arrays to implement trees
Links vs. Arrays: when to use which
trees = attempt to allow faster access to linked list
(by allowing a version of binary search)
Phases of programming: Design, Analysis, Implementation, (Testing), Use