The critical algorithms used in GIS are notoriously difficult to both teach and understand. This book address the problem by combining rigorous formal language with example case studies and student exercises.