Do you want to enter the job market as a competitive GIS modeler with programming skills? This course will help you get there. It focuses on the extension of geographic information systems (GIS) through programming as well as on the development of algorithms for spatial analysis and information extraction in vector and raster data. We will cover different concepts, principles and techniques of programming that help you to solve a variety of spatial problems in physical and human Geography. You will learn how to work with Python for Geoprocessing in ArcGIS as well as for spatial programming in gridded data using numpy, scipy and other open source libraries. Furthermore, you will understand the basic ideas of object-oriented and procedural programming. You will develop skills to explore, handle, manipulate, and model spatial data as well as methods development. Lectures will include numerous demonstrations and hands-on examples as well as algorithmic exercises. In labs you will work on solving typical programming and implementation problems that you will encounter in the real world. During the last weeks of the term students will work in small groups on a proposed project to deepen their programming knowledge, improve their GIS proficiency and train their presentation and communication skills.