[Bowdoin Computer Science]

Algorithms in GIS (csci 3225)

Fall 2016: Tu, Thu 1-2:25 in Searles 126

Piazza class link | Schedule | Code | Test grids | ProgrammingAssignments | Using svn | Projects

[Fall 16]

Basic Info

Prerequisites: csci 101 (Intro to CS), csci 2101 (Data Structures), and csci 2200 (Algorithms).

Textbook (required): none.

CS curriulum: This class fullfills the Projects requirement and the Theory requirement. It involves a significant amount of programming, culminating with a project.

Office hours: Tuesdays and Thursdays 2:30 to 4. For quick questions you can drop by any time the door is open. Otherwise, send me an email.

Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs3225-GIS/fall16/. Note that this is a link from my personal website at Bowdoin. This site will contain all class-related material along the semester. The class does not have a Blackboard site so that it is publicly available to everyone.

For all class-related communication we'll be using Piazza. Here's is class link on Piazza (also at the top).


Geographic Information Systems (GIS) are systems for storing, displaying and analyzing geographically referenced, or geospatial data. GIS started in the 1970's with primitive systems that served mainly to visualize maps.

Today, routine GIS tasks range from visualization, monitoring sensors, terrain analysis (modeling of phenomena like flow, radiation, erosion, deposition, infiltration, visibility), to network computations (like shortest paths), surface simplification and working with point cloud data. The term "GIS" may refer broadly to comprehensive packages like ArcGIS or GRASS that offer a wide spectrum of functionality, or to small libraries and modules that perform specialized tasks (LAS tools).

GIS have become indispensable tools in disciplines like earth, atmospheric and oceanographic sciences, but also in the digital humanities and beyond. In the past twenty years, with the growth of computer technology and the explosion of digital data, GIS has seen a tremendous growth and established as a field of its own.

For GIS users, the goal of studying GIS is to understand the wealth of functionality provided by standard GIS software like ArcGIS and how to model a new problem with the functionality provided by the package. For example, a city planner may want to find the best location to host an ugly construction. To this end, she might ask: What data is available? How can all the layers of data be integrated and shown on the same map? What sort of functions are provided by a particular GIS that can be used for this problem? Eileen Johnson (Bowdoin Environment Studies) who teaches GIS classes in the ES program, will give a guest lecture on ArcGIS and working with LiDAR data in ArcGIS.

For GIS developers, the goal of studying GIS is to create new modules that either solve new problems and offer new functionality, or improve in some way over previous modules. GIS provides a rich source of problems, spanning from theory, to systems and algorithm engineering.

This class explores some of the fundamental theoretical problems encountered in GIS from an algorithmic point of view, and provides opportunities to implement and experiment with the solutions to these problems and assess their performance in practice especially concerning big data. The bulk of the work for the class comes from programming assignments, and the main goal is understanding the interplay between theory and practice and the importance of complexity analysis.

The goals:

Work and Grading policy

Most of the work for the class will come from programming assignments, some of which are framed as smaller assignments culminating with larger projects. There will be a final project that will occupy the last 3-4 weeks of the class, and there will be presentations, proposals and reports associated with the final project. Class participation is strongly encouraged and will be weighed in. Generally speaking, I hope that you will not only show up in class, but generally speaking contribute to the learning experience of the class.

Collaboration policy: You can work alone if you want, but you are encouraged to find a partner for all assignments and projects. No more than two per team, though.