[Bowdoin Computer Science]

CS 340 Spring 2005: Syllabus

Date Topic Notes, Reading, Assignments
Jan 24 Introduction.
The C programming language.
Input/output, loops, functions, call by value.
Applications of Computational Geometry
Chapter 1 K&R
The C programming language (wikipedia)
The C programming language
The history of C
Jan 26 Pointers.
Jan 31 Pointers.
Command line arguments.
Header files.
GNU Emacs reference card
Emacs quick reference
Febr 2 Dummy header doubly linked lists.
Assignment 1 (a first-in first-out doubly linked queue)
Febr 7 File I/O.
Command line arguments.
Unix tutorial.
Example: fileseg.tar
Unix tutorial
Assignment 2 (shift segments)
Febr 9
OpenGL basics.
Example: gr1.tar
The Red Book: Chapter 1 (Intro) | Chapter 2 (Drawing simple objects)
Assignment 3 (OpenGL warmup)
Febr 14 Virtual memory system.
Accessing arrays in external memory: sequential vs random access.
Accessing trees in external memory.
Data layout.
B-trees and (a,b)-trees.
Virtual memory (Wikipedia)
B-tree (Wikipedia)
B-tree (semaphorecorp)
Febr 16 Assignment 3 demo.
B-trees and (a,b)-trees (continued).
Animations: 234-trees | B-tree
Assignment 4 (visualizing segments from a file)
Look at: graphics2.tar
Febr 21 B-trees and (a,b)-trees (continued).
Homogenous coordinates.
Transformations (rotation, translation).
Order of transformations.
The Red Book: Chapter 3 (Viewing) | Appendix G (Homog coord and transf. matrices)
Project 1 (visualize Tiger dataset) due March 2nd
Febr 23 Spatial indexing: R-trees. The original R-tree paper: R-tree: A dynamic index structure for spatial searching (Guttman, 1984)
Febr 28 Guest lecture by Jan Vahrenhold, U. Muenster:
Introduction to range searching with linear space.
(lower bounds; threaded binary search tree; priority search tree; kd-tree)
March 2 Project 1 demo.
Range searching (continued): kd-trees.
Demos: Kd-tree | Construction of 2D kd-tree
kd-tree slides.pdf
Bentley kd-tree paper: pdf
March 7 Range searching (continued): Range trees.
March 9 Quadtrees.
Demos: Point Quadtree | PR quad tree
Project 2 (aka Mapquest) due April 4
March 28, 30 Rectangle-rectangle intersections and interval tree.
April 4 Discussion on Project 2: converting TIGER Line data to a graph adjacency-list.
Review: Priority queues. Dijkstra's SSSP algorithm.
Project 2 extended to April 11th.
April 6 Discussion on Project 2: Dijkstra's SSSP algorithm.
Orthogonal line segment intersection.
April 11 Line segment intersection. Bentley-Ottman sweep.
Demo (from Carleton University)
Project 2 extended to April 13th.
April 13 Project 2 demo and party.
[Red-blue line segment intersection.]
April 18 Scalability of algorithms to large inputs. External memory algorithms: the I/O-model. External memory paradigms: clustering, buffering.
External memory merge-sorting.
External memory priority queue.
Graph algorithms in external memory: BFS, DFS, SSSP.
April 20 Joe Sargent and Jon Todd:
The grid file.
Bucket methods.
Project 3 (range searching) due May 19th.
April 25 Wyatt Dumas and Christine Yip:
Binomial heaps.
Fibonacci heaps.
April 27 Robert Burns:
Finding the closest pair of points in the plane.
CLRS 33.4
May 2 Eric Toan:
Spatial indexing: R-trees (continued): Applications, variations, the R*-tree.
R-trees have grown everywhere (Manolopulos, Nanolopoulos, Papadopoulos)
R*-tree: An efficient and robust access method for points and rectangles (Beckmann, Kriegel, 1990)
May 4 Vic Kotecha:
Dynamization: The logarithmic method.
May 9 Riccardo Schmid:
Nearest neighbor queries.
May 11 Jon Todd:
The Delaunay triangulation: Properties and randomized incremental construction.
May 19 Final exam: project demo (9-12, Linux/G5 Lab)