Syllabus | Projects | Links | People | Grade stats
Spatial data structures are structures that manipulate spatial data, that is, data that has geometric coordinates. Spatial data is widely available in many areas of computer science, like Geographic Information Systems (GIS), robotics, computer graphics, virtual reality, as well as in other diciplines like finite element analysis, solid modeling, computer-aided design and manufacturing, biology, statistics, VLSI design, and many others.
The class will explore basic problems on spatial data like triangulation, convex hulls, segment intersection, orthogonal range searching and one and two dimensions, point location, spatial join, nearest neighbors, intersection and containment queries, spatial indexing, scalabiliy to large datasets and external memory algorithms.
We will study techniques and concepts to solve these problems efficiently, like plane-sweep, incremental construction, divide-and-conquer, space partition and hierarchical structures, clustering. We will see solutions for these problems based on spatial data structures like quadtree,octtree, kd-tree, interval tree, B-tree, range tree, priority search tree, R-tree, segment tree, grid file. We will look at basic techniques for dynamization and for making these struuctures efficient in external memory.
On the programming side, we will learn C and graphics programming (OpenGL).
Prerequisites: CSci 231 (Algorithms) or permission of instructor
Instructor: Laura Toma
Office: 219 Searles Hall
Email: ltomaATbowdoin.edu (replace AT with @)
Office hours: TBD; Also, any time I am in the office (and in a good mood :)). Or, just send me an email to setup a (different) time.
Class Email: csci340ATbowdoin.edu (replace AT with @)
Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs340/spring05
Bowdoin class webpage: http://academic.bowdoin.edu/courses/s05/csci340/
Course material:There is no required book for this class. However I recommend purchasing K&R (the C book) --- it is a reference book and it is good to have it in your library. We will be reading chapters from the following books:
The projects will be challenging and will solve real-world problems on real-world data. If you need an extension, just talk to me. I am well aware that programming time can vary deeply from person to person and from day to day. Rather than submitting bad or incomplete code, I prefer that you take extra time, do a good job and be happy with what you turn in. You can have at most two extensions the entire semester without affecting your grade.
As you probably all know by now, a big and sometimes frustrating part of programming is debugging your code. This is something that you have to go through. I will be there to help occasionally, but do not count on it and do not take it for granted.
Throughout the semester you will have plenty of opportunities to give feedback on the topics covered in the class and what you would like changed. I will take your opinions seriously and will try to suit the class to your expectations while maintaining the standards.