[Bowdoin Computer Science]

CS 350 Spring 2009: Syllabus

The link to code/demos: here.
Sample grid data: here.
Visibility project material: here

Here is what happened in class.

  1. Week 1 [Jan 20, 23]: Introduction to GIS. Intro to C. Intro to OpenGL.
    Project 1
  2. Week 2 [Jan 27, 30]: Intro to databases.
  3. Week 3,4 [Feb 3, 5, 10, 12]: RDBMS and spatial data. Topological data representation.
  4. Week 5 [Feb 17, 19]: Virtual memory system. I/O-model and I/O-analysis.

    Topics: Scanning. I/O-analysis of searching with a BST; quicksort, heapsort, mergesort. I/O-efficient sorting. I/O-efficient flow.


  5. Week 6, 7 [Feb 24, 26, March 3, 5]: Intro to geometric algorithms and fundamental geometric techniques: divide-and-conquer, line-sweep and incremental construction.

    Topics: Area of a triangle, area of a convex and non-convex polygon. Orientation test. Collinearity. Betweenness. Segment intersection test. Point-in-polygon test. Convex hulls. Closest pair of points. Visibility. Segment intersection.


    1. Seth Glickman: A general point-in-polygon test.
    2. Will Richard: Convex hull. Incremental construction in O(n2). Improved incremental construction in O(n lg n).
    3. Laura: Visibility on terrains. A brute-force quadratic algorith. A line-sweep algorithm for computing visibility on grid terrains.
    4. Jack Morrison: A divide-and-conquer algorithm for finding the closest pair of points.
    5. George Slavov: A divide-and-conquer algorithm for convex hull.
    6. Jeremy Fishman: Finding the intersections between a set of vertical and horizontal line segments.
    7. Tucker Hermans: Using A* to speed up Dijkstra SP algorithm.
    8. Laura: Convex-hull lower bound (reduction sorting to ordered CH).
    9. Laura: A line-sweep algorithm for finding the pairwise intersections of a set of line-segments in the plane (Bentley-Ottmann sweep).


  6. Week 8 [March 24, 26]: Visibility on terrains.


    1. Laura: A different sweep algorithm for computing visibility on terrains. An I/O-efficient algorithm for computing visibility.
    2. Mark McGranaghan: An O(lg n) approximation algorithm for vertex cover.
    3. Guarding a terrain.

  7. Week 9 [March 31, Apr 2]: Line simplification. Terrain simplification.


    1. Kyle Hebert: Douglas-Peucker algorithm for line simplification.
    2. Imai-Iri algorithm for line simplification.
    3. Surface simplification. Decimation. Incremental refinement.

  8. Week 10, 11, 12 [Apr 7, 9, 14, 16, 21, 23]: Visibility.
  9. Week 13 [Apr 28, 30]: Voronoi diagrams and Delaunay triangulations.
  10. Week 14 [May 5]: Class summary. Invited talk.

Topics we did not cover: