GEOG 485:
GIS Programming and Automation

GEOG 485 Syllabus (Fall 2016)


This syllabus is divided into several sections. You can read it sequentially by scrolling down the length of the document or by clicking on any of the links below to "jump" to a specific section.


Fall 2 2016 (October - December)

Jim Detwiler

Email: Please use the course e-mail system on Canvas. If Canvas is down you can try

"Office" Hours:

I'll make myself available for office hours by appointment made through e-mail.

I maintain a goal of responding to all student communication within 24 hours Monday through Friday. I also try to check email and forums at least once on the weekends. If this response turnaround time has a potential of being disrupted due to my business travel or other commitments, I will let the class know ahead of time.

Spring 1 2017 (January - March)

James O'Brien

Email: Please use the course e-mail system on Canvas. If Canvas is down you can try

"Office" Hours:

I'll make myself available for office hours by appointment made through e-mail.

I maintain a goal of responding to all student communication within 24 hours Monday through Friday. I also try to check email and forums at least once on the weekends. If this response turnaround time has a potential of being disrupted due to my business travel or other commitments, I will let the class know ahead of time.

Course Overview and Format

Welcome to Geog 485 - GIS Programming and Automation. This course teaches how to automate GIS tasks using the Python scripting language. Automation can make your work easier, faster, and more accurate, and knowledge of a scripting language is a highly desired skill in GIS analysts.

This course dedicates time to programming fundamentals so that the skills learned can be applied to languages other than Python. Your increased ability to adapt to new technologies and programming languages will be the greatest benefit that you get from this course.

This is a paced course, meaning that there is an established start and end date, and that you will interact with other students throughout the course. The course is 10 weeks in length (plus an "Orientation Week" preceding the start of the course). Use of the course website is required. All course lessons are two weeks in length.

Each two-week lesson should require 20-30 hours to complete, depending on the speed at which you work. See the Course Schedule section of this syllabus, below, for a schedule of the lessons and course projects. If you find yourself taking longer or having trouble with the concepts, please ask for help either on the message boards (there is an excellent chance someone else has the same question - it might already have been asked & answered there) or via email.

Course Objectives

By the end of this course, you should be able to:

  • Design and implement solutions in Python (and ModelBuilder) to automate geoprocessing tasks.
  • Demonstrate an understanding of programming concepts, methods, and approaches such as debugging, error checking, and documentation.
  • Demonstrate an awareness of advanced concepts such as external libraries.
  • Be aware of and able to integrate content, examples, and concepts from external resources such as and

Required Materials

There are two items you need to acquire for this course:

  1. An up-to-date license of Esri's ArcGIS for Desktop. We recommend software version 10.1 or greater. See our program's FAQ for complete ordering details. If you have questions regarding the software purchase, please contact me.
  2. The course text is Python Scripting for ArcGIS by Paul Zandbergen, published by Esri Press. Throughout the course you will have assigned readings from this text that supplement the lesson content. The text also contains reference materials and examples that will help you complete the projects. I suggest you order the text as soon as possible since it has been a popular book and there have been shortages at times.

Complementary Materials for Programming Beginners

If you're a programming novice, it is recommended that you also check out the following resources and use them at you own discretion to complement the course materials:

  1. Esri 3-hour introductory class
  2. Codeacademy Introduction to Python class  (just work through the lessons 1,2,3,8,12,4,5,7 (in that order) but ignore the quizzes and projects)

Assignments and Grading

Students earn grades that reflect the extent to which they achieve the learning objectives listed above. Opportunities to demonstrate learning include:

  • 5 Individual Projects- 70% of course grade:
    Each project involves some aspect of GIS automation. The key to success is to stay on schedule and follow directions closely. All of the projects are individual assignments and each project accounts for 14% of your overall grade. See the Calendar tab in Canvas for project due dates.
  • 4 Lesson Quizzes - 20% of course grade:
    Lessons 1 - 4 are followed by a ten-question quiz on the material. These quizzes are challenging and are meant to assess how thoroughly you have learned the lesson material. You have one attempt to complete each quiz, with a two-hour time limit. Each lesson quiz accounts for 5% of your overall grade.
  • Review Quiz - 10% of course grade:
    At the end of the course will be a 20-question quiz that covers material from all of the lessons. You have one attempt to complete this quiz, with a four hour time limit. This quiz accounts for 10% of your overall grade.

Both the lesson quizzes and review quiz are "open book," meaning you can use any resource available at your disposal to figure out the answer except asking other individuals. If needed you can even write Python code during the quiz to test available answers. I recommend that you keep any web pages you open during the quiz in entirely separate browser windows (not tabs) to avoid accidentally closing the quiz.

I will be assisted by several additional graders who will evaluate the projects and provide feedback to you. Letter grades will be based on the following percentages:

Grading Scale
Letter Grade Percentage Range
Unsatisfactory (student did not participate)

Percentages refer to the proportion of all possible points earned by the student.

Assignment due dates and late work

Most activity deliverables are due on Wednesday evenings in your local time zone (refer to the Calendar tab in Canvas for the exact schedule). You'll be budgeted two weeks for each lesson. 

Late projects are automatically marked down 10 points, with 10 more points deducted for each week that passes beyond the due date (eg, two weeks beyond the due date receives a 20 point deduction, three weeks a 30 point deduction, etc).


As with GEOG 483 and GEOG 484, the lessons in this course are project-based with key concepts embedded within. However, because of the nature of computer programming, there is no way this course can follow the step-by-step instruction design of the previous courses. Instead, you will be reading about programming concepts, seeing those concepts illustrated through numerous programming code examples, and practicing the development of your own solutions to practice exercises. You will probably find the course to be more challenging than the others. For that reason, it is more important than ever that you take advantage of the course message boards and private e-mail. It's quite possible that you will get stuck somewhere during the course, so before getting hopelessly frustrated, please seek help from your instructors, graders or classmates!

You are more likely to succeed in this course if you leave yourself plenty of time to complete the projects, especially in Lessons 2 through 4. At the same time, do not skip any of the readings, as they are essential for understanding and responding to the quiz questions. You should do the readings and practice exercises during first week of the lesson, leaving the second week of the lesson free to work on the project. The quiz can be completed during any stage of the lesson.

Collaboration on the course message boards is especially important in this course, since you will be facing programming challenges that you may not immediately know how to solve on your own. Working as a community to solve problems is what the best programmers do all the time. Please work together to share ideas and strategies for the projects. However, when your forum post relates directly to a graded assignment, do not include any sections of code longer than a few lines. This allows every student the chance to be graded on his or her own work.

GEOG 485 Course Schedule

image Printable Schedule

Below you will find a summary of the lesson objectives for this course and the associated time frames. Assignment information will be located on each lesson's checklist. This course is 10 weeks in length, with an orientation week preceding the official start of the course. Please see the Calendar tab in Canvas for this quarter's exact due dates.

Week 0: Orientation
Date: Week 0
Topics Course Orientation
Readings Course Orientation Material

Complete the orientation activities. In the Modules tab of Canvas, find the Course Orientation lesson. Open the Getting Started with Orientation and work through all the items.


Lesson 1: Introduction to GIS Modeling and Python
Date: Weeks 1 and 2
Topics GIS customization, ArcGIS ModelBuilder, Python language, PythonWin, Python fundamentals, Python script tools
Readings Lesson 1 course materials; Zandbergen book: chapters 2 + 3, sections 4.1 - 4.7 and 5.1 - 5.11
  • Complete Project 1 (Parts I and II) and send the deliverables to your instructor, using the drop box for the lesson. See the project instructions for the list of deliverables you need to submit.
  • Take the Lesson 1 quiz.


Lesson 2: Python and Programming Basics
Date: Weeks 3 and 4
Topics Lists, Loops, Decision structures, Strings, Troubleshooting, Batch processing
Readings Lesson 2 course materials; Zandbergen book: chapters 4 - 6, sections 11.1 - 11.5 + 11.11
  • Complete Project 2 and send the deliverables to your instructor, using the drop box for the lesson.
  • Take the Lesson 2 quiz.


Lesson 3: GIS Data Access and Manipulation with Python
Date: Weeks 5 and 6
Topics Reading attribute data, Cursors, Working with raster data
Readings Lesson 3 course materials; Zandbergen book: sections 7.1 - 7.3 + chapter 9
  • Complete Project 3 and send the deliverables to your instructor, using the drop box for the lesson.
  • Take the Lesson 3 quiz.


Lesson 4: Practical Python for the GIS Analyst
Date: Weeks 7 and 8
Topics Python functions and modules, Reading and parsing text files, Writing geometries, Working with map documents
Readings Lesson 4 materials; Zandbergen book: sections 7.6, 8.1 - 8.6, 12.1 - 12.5 and chapter  10
  • Complete Project 4, and send the deliverables to your instructor via the drop box for the lesson.
  • Take the Lesson 4 quiz.


Final Project
Date: Weeks 9 and 10
Topics Final Project Work
  • Complete an individual project, previously approved by the instructor, that uses Python to simplify or automate a GIS task. Preferably this project can be applied to your current field of work. Submit your deliverables to the Final Project drop box. Include a short report on what you did and how your project would make someone's job easier, faster, and/or more accurate.
  • Take the course Review Quiz.

Detailed outline of topics

Lesson 1: Introduction to GIS modeling and Python (Weeks 1-2)

Lesson 1 begins by explaining how automation can make the work of a GIS analyst easier, faster, and more accurate. The first half of the lesson introduces you to some of the GIS analysis tools available in ArcGIS and how to access them in a non-Python context, specifically the ArcToolbox GUI, the Python Window, and the ModelBuilder interface. In ModelBuilder, you'll learn how individual tools can be “chained” together in a designated order to perform complex analysis tasks.

The second half of Lesson 1 introduces the Python scripting language, the PythonWin development environment, and object-oriented programming in general. The lesson concludes with a few simple example scripts, designed to show you how Python “hooks into” ArcGIS and how you can write a Python script using the same tools they were previously accessing in ArcToolbox.

Lesson 1 outline:

  • The need for GIS automation
  • Exploring the toolbox
  • Environments for accessing tools
    • Running a tool from the ArcToolbox GUI
    • Modeling with tools
  • Why learn ModelBuilder?
    • Opening and exploring ModelBuilder
    • Model parameters
    • Advanced geoprocessing and ModelBuilder concepts
    • Try this: Running a tool from the Command Line Window
  • Introducing Python
    • What is Python?
    • Installing Python and PythonWin
    • Exploring PythonWin
  • Beginning programming with Python
    • Working with variables
    • Objects and object-oriented programming
    • Classes
    • Inheritance
    • Python syntax
  • Introductory Python examples
    • Example: Printing the spatial reference of a feature class
    • Example: Performing map algebra on a raster
    • Example: Creating buffers
  • Making a script tool
  • Project 1, Part I: Modeling precipitation zones in Nebraska (ModelBuilder exercise)
  • Project 1, Part II: Creating contours for the Fox Lake DEM (Python exercise)

Lesson 2: Python and programming basics (Weeks 3 – 4)

Lesson 2 teaches fundamental programming concepts and troubleshooting techniques that are common to most programming languages. The goal of this lesson is to prepare you to learn any programming language that may be required of you in your job. The lesson also shows how to synthesize these fundamentals to approach programming problems. You are encouraged to learn how and where to look for help so that you can become a self-sufficient programmer.

Lesson 2 outline:

  • More Python fundamentals
    • Lists
    • Loops
    • Decision structures
    • String manipulation
    • Putting it all together
  • Troubleshooting and getting help
    • Potential problems and quick diagnosis
    • Using the PythonWin debugger
    • Printing messages from the geoprocessor
    • Other sources of help
  • Project 2: Batch reprojection of vector datasets

Lesson 3: GIS data access and manipulation with Python (Weeks 5-6)

A great advantage of scripting is the ability to read, update, and add data automatically. Lesson 3 shows how to access ArcGIS vector and raster data using Python. Data are retrieved through both spatial and attribute queries. The lesson shows how subsets of records can be updated based on certain criteria (such as through a “find and replace” operation). Emphasis is placed on vector data and working with attribute tables, although tools for working with raster data are also discussed.

Lesson 3 outline:

  • Data storage and retrieval in ArcGIS
  • Reading vector attribute data
    • Accessing data fields
    • Reading through records
    • Retrieving records using an attribute query
    • Retrieving records using a spatial query
  • Writing vector attribute data
    • Updating existing records
    • Inserting new records
  • Working with rasters
  • Project 3
Lesson 4: Practical Python for the GIS analyst (Weeks 7-8)

This lesson covers relatively advanced concepts that will help you become an especially useful GIS programmer. These include making code reusable through functions and modules, parsing text, and writing geometric features to vector datasets in ArcGIS. The lesson discusses how to use batch files and the operating system’s scheduling utilities to automate the running of scripts. It also explains how you can automate some functions with ArcMap documents using Python.

The sections of this lesson are longer and contain more complex code examples than previous lessons. By this point in the course, you should have the background to understand these examples. The goal is that you should feel confident enough to read any unfamiliar script after completing this lesson. You should also feel that you have enough acquired knowledge to approach most automation challenges through scripting.

Lesson 4 outline:

  • Functions and modules
  • Reading and parsing text
  • Writing geometries
  • Automation with batch files and scheduling jobs
  • Running any tool in the box
  • Working with map documents
  • Limitations of Python scripting in ArcGIS
  • Project 4

Final Project (Weeks 9-10)

At the end of the course, you are required to complete an individual scripting project that applies the knowledge you’ve gained throughout the course. You're encouraged to pick a project that would be useful to you in your current profession, if feasible. Various “starter ideas” will be provided if you have difficulty thinking of a project.

Course Policies

Citation and Reference Style

Academic Integrity and Citation Style Guide here.

Penn State E-mail Accounts

All official communications from the Penn State World Campus are sent to students' Penn State e-mail accounts. Be sure to check your Penn State account regularly, or forward your Penn State e-mail to your preferred e-mail account, so you don't miss any important information.

Technical Requirements

For this course, we recommend the minimum technical requirements outlined on our "Program Technical Requirements" page. If you need technical assistance at any point during the course, please contact the Outreach Helpdesk (for World Campus students) or the IT Service Desk (for students at all other campus locations).

Internet Connection

Access to a reliable broadband Internet connection is required for this course. A problem with your Internet access may not be used as an excuse for late, missing, or incomplete coursework. If you experience problems with your Internet connection while working on this course, it is your responsibility to find an alternative Internet access point, such as a public library or wireless hotspot.

Mixed Content

This site is considered a secure website, which means that your connection is encrypted. We do, however, link to content that isn't necessarily encrypted. This is called mixed content. By default, mixed content is blocked in Internet Explorer, Firefox and Chrome. This may result in a blank page or a message saying that only secure content is displayed. Follow the directions on our technical requirements page to view the mixed content.


This course must be viewed using one of the following browsers: Firefox (any version), Safari (versions 5.1 or 6.0), Chrome (0.3 or later), or Internet Explorer with the MathPlayer PlugIn. If you use any other browser, there will be pages containing equations that do not render properly. If you need technical assistance at any point during the course, please contact the Outreach Helpdesk (for World Campus students) or the IT Service Desk (for students at all other campus locations).

Penn State E-mail Accounts

All official communications from the Penn State World Campus are sent to students' Penn State e-mail accounts. Be sure to check your Penn State account regularly, or forward your Penn State e-mail to your preferred e-mail account, so you don't miss any important information.

Academic Integrity

This course follows the guidelines for academic integrity of Penn State's College of Earth and Mineral Sciences. Penn State defines academic integrity as "the pursuit of scholarly activity in an open, honest and responsible manner." Academic integrity includes "a commitment not to engage in or tolerate acts of falsification, misrepresentation, or deception." In particular, the University defines plagiarism as "the fabrication of information and citations; submitting others' work from professional journals, books, articles, and papers; submission of other students' papers, lab results or project reports and representing the work as one's own." Penalties for violations of academic integrity may include course failure. To learn more, see Penn State's "Plagiarism Tutorial for Students."

Course Copyright

All course materials students receive or to which students have online access are protected by copyright laws. Students may use course materials and make copies for their own use as needed, but unauthorized distribution and/or uploading of materials without the instructor’s express permission is strictly prohibited. University Policy AD 40, the University Policy for the Recording of Classroom Activities and Note Taking Services addresses this issue. Students who engage in the unauthorized distribution of copyrighted materials may be held in violation of the University’s Code of Conduct, and/or liable under Federal and State laws.

Accommodations for Students with Disabilities

Penn State welcomes students with disabilities into the University's educational programs. Every Penn State campus has an office for students with disabilities. The Student Disability Resources (SDR) website provides contact information for every Penn State campus: Contacts for Disability Services at all Penn State Campuses. For further information, please visit the Student Disability Resources (SDR) website.

In order to receive consideration for reasonable accommodations, you must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation. If the documentation supports your request for reasonable accommodations, your campus’s disability services office will provide you with an accommodation letter. Please share this letter with your instructors and discuss the accommodations with them as early in your courses as possible. You must follow this process for every semester that you request accommodations.

Mental Health Services

Whether you study on campus or online, mental health services are available to help you maintain your academic success. Penn State provides resources to address concerns including anxiety, depression, relationship difficulties, and stress, and provides mental health advocates who can help you. If you are a resident student, resources can be found at Counseling and Psychological Services. If you are a World Campus student, please see the student website for further information. If you or someone you know is experiencing a crisis situation, please call your local emergency service.

Military Personnel

Veterans and currently serving military personnel and/or spouses with unique circumstances (e.g., upcoming deployments, drill/duty requirements, disabilities, VA appointments, etc.) are welcome and encouraged to communicate these, in advance if possible, to the instructor in the case that special arrangements need to be made.

Inclement Weather

In case of weather-related delays at the University, this online course will proceed as planned. Your instructor will inform you if there are any extenuating circumstances regarding content or activity due dates in the course due to weather delays. If you are affected by a weather-related emergency, please contact your instructor at the earliest possible time to make special arrangements.

Connect Online with Caution

Penn State is committed to educational access for all. Our students come from all walks of life and have diverse life experiences. As with any other online community, the lack of physical interaction in an online classroom can create a false sense of anonymity and security. While one can make new friends online, digital relationships can also be misleading. Good judgment and decision making are critical when choosing to disclose personal information with others whom you do not know.

Deferred Grades

If you are prevented from completing this course within the prescribed amount of time, it is possible to have the grade deferred with the concurrence of the instructor. To seek a deferred grade, you must submit a written request (by e-mail or U.S. post) to your instructor describing the reason(s) for the request. It is up to your instructor to determine whether or not you will be permitted to receive a deferred grade. If, for any reason, the course work for the deferred grade is not complete by the assigned time, a grade of "F" will be automatically entered on your transcript.


This course will be conducted entirely online. There will be no set class meeting times, but you will be required to complete assignments with specific due dates. Many of the assignments are open for multiple days. It is your responsibility to complete the work on time, which may require you to complete the work early if you plan to travel or participate in national holidays, religious observances, or University-approved activities.

If you need to request an exception due to a personal or medical emergency, contact the instructor directly as soon as you are able. The instructor's ability to accommodate you is dependent on the earliest possible notification. Such requests will be considered on a case-by-case basis.


Please note that the specifics of this Course Syllabus can be changed at any time, and you will be responsible for abiding by any such changes. All changes will be communicated with you via e-mail, course announcement and/or course discussion forum.