GEOG 485: GIS Programming and Software Development (Spring 2023)
This syllabus is divided into the following sections:
- Course Overview and Format
- Course Objectives
- Required Course Materials
- Complementary Course Materials for Programming Beginners
- Assignments and Grading
- Course Schedule
- Detailed outline of topics
- Course Policies
Please read the entire document before beginning Lesson 1.
Spring 1 2023 (Jan - Mar) - Panagiotis Giannakis
Email: Please use the course e-mail system in Canvas. If Canvas is down you can try firstname.lastname@example.org.
Spring 2 2023 (Feb - May) - Jan Oliver Wallgrun
Email: Please use the course email system in Canvas. If Canvas is down, you can try email@example.com.
I'll make myself available for office hours by appointment made through email.
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 Software Development. 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.
By the end of this course, you should be able to:
- design and implement solutions in Python 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 be able to integrate content, examples, and concepts from external resources such as esri.com and stackoverflow.com.
Required Course Materials
There are two items you need to acquire for this course:
- An up-to-date ArcGIS Pro installation. We recommend software version 2.4 or greater. Penn State students can follow the instructions on this page to obtain a PSU Access Account for ArcGIS Online and then installing ArcGIS Pro.
- The course text is Python Scripting for ArcGIS Pro 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. An older edition of the book (for ArcMap rather than ArcGIS Pro) is available to students for free in the Penn State Online Library (use this link). Getting the newer ArcGIS Pro edition is definitely recommended, but if you're strapped for cash, our course lessons contain references to both editions of the book.
Assistance with textbooks
Penn State honors and values the socioeconomic diversity of our students. If you require assistance with the costs of textbooks for this course, please visit the Office of Student Care and Advocacy at 120 Boucke Building or call 814-863-4926. For additional needs, related to socioeconomic status, please visit Project Cahir.
Complementary Course 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:
- Esri 3-hour introductory class
- Codeacademy Learn Python 2 class (Just work through the lessons 1,2,3,8,12,4,5,7 (in that order) but ignore the quizzes and projects. There is also a Python 3 version but it's not free. We are using Python 3 in this class but the differences to Python 2 are almost negigible in the context of this class; more on this in Lesson 1.)
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:
|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 (e.g., two weeks beyond the due date receives a 20 point deduction, three weeks a 30 point deduction, etc).
Make-up Exam Policy
Make-up exams will only be granted through the approval of the course instructor for legitimate and excused absences. Prior notification and approval for a make-up exam must be obtained by the student at least 72 hours prior to the scheduled exam. Special circumstances will be considered on a case-by-case basis.
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 email. 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 SchedulePrintable 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.
|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.
|Date:||Weeks 1 and 2|
|Topics||GIS customization, ArcGIS ModelBuilder, Python language, Spyder, 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|
|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|
|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|
|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|
|Date:||Weeks 9 and 10|
|Topics||Final Project Work|
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 Spyder 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 Spyder
- Exploring Spyder
- Beginning programming with Python
- Working with variables
- Objects and object-oriented programming
- 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
- Decision structures
- String manipulation
- Putting it all together
- Troubleshooting and getting help
- Potential problems and quick diagnosis
- Using the Spyder 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.
Class Support Services
Penn State Online offers online tutoring to World Campus students in math, writing, and some business classes. Tutoring and guided study groups for residential students are available through Penn State Learning.
This course follows Penn State's College of Earth and Mineral Sciences Academic Integrity Guidelines. 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 Academic Integrity training.
Penn State Email Accounts
All official communications from the Penn State World Campus are sent to students' Penn State email accounts. Be sure to check your Penn State account regularly, or forward your Penn State email to your preferred email account, so you don't miss any important information.
Students who do not meet these prerequisites may be disenrolled according to Administrative Policy C-5;if they do not have the proper prerequisite override. If you have not completed the listed prerequisites, then promptly consult with the instructor if you have not done so already. Students who add the course after being disenrolled, according to this policy, are in violation of the Student Code of Conduct.
For this course, we recommend the minimum technical requirements outlined on the World Campus Technical Requirements page, including the requirements listed for same-time, synchronous communications. If you need technical assistance at any point during the course, please contact the HelpDesk (for World Campus students) or the IT Service Desk (for students at all other campus locations).
Access to a reliable 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 Wi-Fi ® hotspot.
This site is considered a secure web site 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.
Penn State E-mail Accounts
All official communications from Penn State 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.
This course follows the procedures 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 Academic Integrity Training for Students.
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 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.
For example, uploading completed labs, homework, or other assignments to any study site constitutes a violation of this policy.
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 Office for Student Disability Resources website provides contact information for Campus Disability Coordinators at every Penn State campus. For further information, please visit the Office for Student Disability Resources 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. You will participate in an intake interview and provide documentation. See documentation guidelines at Applying for Services from Student Disability Resources. 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.
Change in Normal Campus Operations
In case of weather-related delays or other emergency camps disruptions or closures 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 these delays or closures. If you are affected by a weather-related emergency, please contact your instructor at the earliest possible time to make special arrangements.
Reporting Educational Equity Concerns
Penn State takes great pride to foster a diverse and inclusive environment for students, faculty, and staff. Acts of intolerance, discrimination, or harassment due to age, ancestry, color, disability, gender, gender identity, national origin, race, religious belief, sexual orientation, or veteran status are not tolerated (Policy AD29 Statement on Intolerance) and can be reported through Educational Equity via Report Bias.
Counseling and Psychological Services
Many students at Penn State face personal challenges or have psychological needs that may interfere with their academic progress, social development, or emotional well-being. The university offers a variety of confidential services to help you through difficult times, including individual and group counseling, crisis intervention, consultations, online chats, and mental health screenings. These services are provided by staff who welcome all students and embrace a philosophy respectful of clients’ cultural and religious backgrounds, and sensitive to differences in race, ability, gender identity, and sexual orientation. Services include the following:
Counseling and Psychological Services at University Park (CAPS): 814-863-0395
Counseling Services at Commonwealth Campuses
Penn State Crisis Line (24 hours/7 days/week): 877-229-6400
Crisis Text Line (24 hours/7 days/week): Text LIONS to 741741
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.
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 to others whom you do not know.
If you are prevented from completing this course within the prescribed amount of time for reasons that are beyond your control, it is possible to have the grade deferred with the concurrence of the instructor, following Penn State Deferred Grade Policy 48-40. To seek a deferred grade, you must submit a written request (by e-mail or U.S. post) to the instructor describing the reason(s) for the request. Non-emergency permission for filing a deferred grade must be requested before the beginning of the final examination period. It is up to the instructor to determine whether or not you will be permitted to receive a deferred grade. If permission is granted, you will work with the instructor to establish a communication plan and a clear schedule for completion within policy. If for any reason, the coursework 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 weekly assignments with specific due dates. Many of the assignments are open for multiple days, so it is your responsibility 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. Such requests will be considered on a case-by-case basis.
Diversity, Inclusion, and Respect
Penn State is “committed to creating an educational environment which is free from intolerance directed toward individuals or groups and strives to create and maintain an environment that fosters respect for others” as stated in Policy AD29 Statement on Intolerance. All members of this class are expected to contribute to a respectful, welcoming, and inclusive environment and to interact with civility.
For additional information, see:
- Penn State Affirmative Action Nondiscrimination Statement
- Policy AD 85 Sexual and/or Gender-Based Harassment and Misconduct, Title IX
- Penn State Values
- Action Together: Advancing Diversity, Equity, and Inclusion at Penn State
- Assessment of the Living, Learning, and Working Environment (ALLWE) in EMS| Penn State College of Earth and Mineral Sciences
Mandated Reporting Statement
Penn State’s policies require me, as a faculty member, to share information about incidents of sex-based discrimination and harassment (discrimination, harassment, sexual harassment, sexual misconduct, dating violence, domestic violence, stalking, and retaliation) with Penn State’s Title IX coordinator or deputy coordinators, regardless of whether the incidents are stated to me in person or shared by students as part of their coursework. For more information regarding the University's policies and procedures for responding to reports of sexual or gender-based harassment or misconduct, please visit Penn State's Office of Sexual Misconduct Prevention & Response website.
Additionally, I am required to make a report on any reasonable suspicion of child abuse in accordance with the Pennsylvania Child Protective Services Law.
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.