- R 5:30pm – 8:00pm, Gladfelter 341
- Prof. Lee Hachadoorian
- 104 Gladfelter Hall (inside GIS Studio)
- Office Hours:
- M 3:30 – 5:30pm, TUCC Suite 215 X1 (note location)
- W 2 – 4pm
- R 2 – 3pm
- Note that I intend to arrive early to class (~5pm) as often as possible this term
Building on previous coursework with Geographic Information Systems (GIS), students will learn computer programming in a GIS environment. Students will design and execute spatial data management and spatial analysis projects using automated geoprocessing functions available in the built-in scripting languages of prominent GIS software packages, with an emphasis on the Python programming language. Students will learn programming concepts such as variable typing, function definition, conditional evaluation, looping, and object-oriented programming. The course will also introduce geospatial programming strategies independent of any specific GIS software.
Python has rapidly become the de facto standard for scientific computing. It is also the scripting language used by two prominent GIS packages, ArcGIS (proprietary) and QGIS (open source). There is also an extensive and growing ecosystem of Python packages for geospatial analysis. The course will begin by focusing on using Python and ArcPy for ArcGIS scripting and automation, while also introducing fundamental concepts in programming, using the textbook Python for ArcGIS. We will also make use of DataCamp interactive tutorials to learn Python syntax and reinforce these fundamental concepts. This part of the course will feature weekly exercises and quizzes on these basic concepts.
The latter part of the course will introduce Python geospatial programming outside of the ArcGIS environment. In this part of the course, students will present tutorials on further topics in Python and ArcPy and work in teams on a term project.
- Fundamentals of GIS (GUS 5062) with B- or better, or equivalent.
- A laptop on which you can install software and data
This course meets once a week. Missing any class meetings will hamper your ability to complete the work in this course. Your attendance percentage will also indicate the maximum final grade you can earn in this course. If you miss 3 classes, you have attended 78.6% of class meetings. Accordingly, your final grade will not be higher than a C+, regardless of any other work completed. Please see my attendance policy at my Temple web page:
Texts and other Resources
Readings and exercises will be assigned from:
- Python for ArcGIS – When accessed on campus or through the Temple Library proxy server, you will be able to download this textbook in its entirety for free. You are also REQUIRED to obtain a print copy. The Springer “MyCopy” service is a print-on-demand service which will allow you to order a softcover copy for $24.99. You must be accessing SpringerLink on campus or log in through the Temple Library proxy server to get access to the MyCopy print-on-demand service.
Online exercises will be assigned from DataCamp:
- Think Python, 2e – This is a free online textbook which provides an introduction to computer science using Python. A printed version is also available.
- A large number of Python videos are available through Temple’s Lynda.com subscription. You may explore them for topics of interest, but if you need reinforcement on the material we are covering in this course, I would suggest:
- Official Python documentation – I can’t teach you everything. You have to learn how to consult technical documentation in order to solve the problem at hand.
- PEP 8 — the Style Guide for Python Code – How to structure your code for readability.
- The Hitchhiker’s Guide to Python – NOT a programming tutorial, but an extensive guide to concepts and best practices in Python development.
Other resources for GIS scripting:
- Python Scripting for ArcGIS by ESRI Press – may overlap with some of the material in our textbook
- QGIS Python Programming Cookbook by Packt Publishing – for those committed to free & open source software
Each week during the first half of the course, exercises will be assigned from DataCamp and from the textbook. These exercises are graded based on completion, not correctness. They must be submitted on time so that we can continue to progress through the material. We will review some of the exercises at the beginning of the following class.
Beginning with the third class meeting, each class will conclude with a short, graded programming quiz. The topic will be based on the lecture and reading from two weeks prior. The difficulty level should be comparable to or easier than the take-home exercise, so if you complete the exercise, are present for in-class review, and review the problem and answer afterwards, you should be well-prepared for the quiz.
The quizzes are cumulative. You will not be allowed to progress to the Quiz 2 if you do not pass Quiz 1.
This course will make use of online exercises provided by DataCamp. You must use your Temple email address to register for a premium account (free using a link provided by the instructor). You will be required to complete three assigned DataCamp courses, and one additional one of your choosing.
The three required courses are broken up by chapter in Canvas, so that, for example, it is suggested that you complete Ch 4 Loops from the Intermediate Python for Data Science course when we are reading Ch 10 Repetition: Looping for Geoprocessing and Ch 11 Batch Geoprocessing in the textbook. In some cases that means that DataCamp chapters are assigned out of order. Since the only thing you turn in is the course completion certificate, you may choose to progress through the course in the DataCamp order, as long as you complete all chapters on time.
- You are required to complete the following courses:
- Introduction to Python due during Module 3 – ArcPy Tools.
- Ch 1 – Python Basics should be completed during Module 1 – Python Basics
- Ch 2 – Python Lists should be completed during Module 2 – Lists and Tuples
- The remaining two chapters must be completed during Module 3 – ArcPy Tools
- Intermediate Python for Data Science due during Module 6 – Dictionaries
- Ch 3 – Logic, Control Flow and Filtering should be completed during Module 4 – Control Flow, Conditionals
- Ch 4 – Loops should be completed during Module 5 – Loops
- The remaining three chapters must be completed during Module 6 – Dictionaries
- Python Data Science Toolbox (Part 1) due during Module 8 – Error Handline
- Ch 1 Writing your own functions and Ch 2 Default arguments, variable-length arguments and scope should be completed during Module 7 – User-Defined Functions
- The remaining one chapter must be completed during Module 8 – Error Handling
- Introduction to Python due during Module 3 – ArcPy Tools.
- You will complete one additional DataCamp Python course of the your choosing. Suggested courses include:
- You will have premium access to DataCamp courses for six months. You may choose to complete any additional courses you want to throughout the semester, and for a couple of months beyond the end of the semester.
Python Package Tutorials
During the second half of the course we will take a tour of the wide variety of Python packages for data and geospatial analysis. We will discuss packages of interest as a group, and two to three students will participate with me to plan a package presentation and class tutorial.
The final project will be a more complex project which implements some algorithm, packages it into a module, and possibly, depending on how far we get into the course material, provides a GUI to execute the algorithm and view results.
You will earn points along several tracks. Each track is worth up to 100 points. Your must progress along ALL tracks to be successful in this course. Your final grade is the based on the lowest score earned along any track.
- 0-100 points. Your attendance score is a straight percentage of class sessions you are present for.
- Programming Quizzes (8)
- 35 + 10 points each for quizzes 1 through 5, and 3 points each for quizzes 6 through 8.
- Exercises (8)
- 1 bonus point each added to the SQL Quizzes track.
- DataCamp (3)
- 60 + 10 points for each course completed fully. Courses must be completed on time. Courses completed 1 day late will be awarded 8 points, 2 days late will be awarded 5 points, 3 or more days late will not earn any points.
- Python Package Tutorial
- 70-100 points. The tutorial will be awarded up to 30 points based on requirements announced separately. Since each tutorial will happen on a specifically scheduled day, this assignment cannot be revised for a higher grade.
- Term Project
- 50-100 points. The term project will be awarded up to 50 points based on requirements announced separately.
Any student who has a need for accommodation based on the impact of a disability should contact me privately to discuss the specific situation as soon as possible. Contact Disability Resources and Services at 215-204-1280 in 100 Ritter Annex to coordinate reasonable accommodations for students with documented disabilities.
All submitted work should be your own. Please see additional information at
All persons participating in the course should be respectful of other students and the instructor in order to facilitate a civil learning environment. All persons participating in the course have a right to expect respectful treatment in the classroom.
Statement on Academic Freedom
Freedom to teach and freedom to learn are inseparable facets of academic freedom. The University has adopted a policy on Student and Faculty Academic Rights and Responsibilities (Policy # 03.70.02).