GIS Programming | GIS 5103 | Principles of Programming for GIScientists
Instructor | David C. Folch |
---|---|
Office | Bellamy 607 |
Hours | Tuesdays 11:00am-noon or by appointment |
dfolch@fsu.edu |
Meeting Room | Times |
---|---|
Bellamy 317 | Tuesday 2:30-5:00pm |
Description
As spatial and non-spatial datasets become larger and workflows more complex, alternatives to desktop GIS and analysis software become necessary. Skills in geocomputation, automation and reproducibility are quickly becoming part of the minimum skill set expected of geographic information science practitioners. This course is designed to address this rapidly evolving environment. Students will learn and apply programming and collaboration skills using the open-source Python programming language. Python is one of the most common languages used professionally in GIS and data science activities, and is simultaneously one of the most common languages used to introduce students to programming. In this course students will learn the fundamental skills of programming that are in high demand within academic and professional GIScience.
Course Learning Outcomes
- Gain a solid understanding of basic programming concepts
- Apply computational thinking to translate real world problems into computer workflows
- Understand best practices in collaborative programming and reproducible research projects
- Be able to leverage open source tools in a cross-platform environment to solve research problems
- Learn how to use Python, an object-oriented scripting language, for data processing, analysis and application development in geographic research
Prerequisites
- No prior programming experience is required.
- Students are required to bring their own laptop to class.
Course Structure
This course is organized to give students their first exposure to new material outside of the classroom, and then use class time to apply that knowledge to practical problems. At-home study guides are provided using Jupyter Notebooks. A Notebook is an interactive programming environment in which new concepts are presented, and related code can be run, modified and tested by the student in real time. These interactive sessions will be supplemented by audio/video content and readings. Students are expected to study the relevant material at home, and to communicate with the instructor and their peers regarding the parts they found most difficult. Discussions can be conducted via online chat or in class. Classroom time will be dedicated to working together to develop a deeper understanding of the material and its applications, as opposed to the traditional instructor “lecture.”
Grading
Grading in the course will be based on the following point system:
Component | Count | Points | Total Points |
---|---|---|---|
Quizzes | 7 | 100 | 700 |
Python package presentation | 1 | 150 | 150 |
Project proposal | 1 | 50 | 50 |
Project presentation | 1 | 100 | 100 |
Final project | 1 | 500 | 500 |
Grand Total | 1500 |
Course final letter grades will be assigned as follows:
Letter | Percentage | Points |
---|---|---|
A | 100-93 | 1500-1395 |
A- | 92.9-90 | 1394-1350 |
B+ | 89.9-87 | 1349-1305 |
B | 86.9-83 | 1304-1245 |
B- | 82.9-80 | 1244-1200 |
C+ | 79.9-77 | 1199-1155 |
C | 76.9-70 | 1154-1050 |
D | 69.9-60 | 1049-900 |
E | 59.9-0 | 899-0 |
Exercises will be given each week. These will be started (and often completed) in class. Students are strongly encouraged to complete these outside of class if not completed during class time.
Quizzes are primarily based on that week’s at-home study guide and the previous week’s exercise. All quizzes are cumulative. Eight (8) 5-10 minutes quizzes will be given at the start of class (after fielding any questions). The top 7 contribute to the final grade. All quizzes are “open book.”
Python package presentation is a formal in-class presentation on a Python package.
Project presentation is a formal in-class presentation on the results of the student’s project.
Final project deliverables are the code and written report on the student’s project. Must be submitted by Friday December 14 at 4:00pm.
There are no extra credit assignments to make up for poor performance or missed deadlines.
Compute Resources
The course focuses on Python for computational programming. All software needed for the course is free to use and works on Windows, Mac and Linux. Most software is open source. Installing these resources on personal laptops/desktops will be covered. Students are required to bring their own laptop to class.
The particular resources we will use include:
- Continuum’s Anaconda Python (How to install)
- Git versioning software (How to install)
- Gitter chat tool (How to install)
- Text editor
- Mac: download BBEdit
- Windows: download Notepad++
Recommended readings
- Downey, A.B. (2012) Think Python: How to Think Like a Computer Scientist. O’Reilly.
- Other readings to be assigned.
Schedule
The course schedule reflects the course organization (see above). Each class meeting (in brackets below) represents the culmination of the week’s new material (as opposed to the introduction of new material). Each week’s material will be accessible through GitHub.
The course is divided into three parts:
- Core programming concepts and their usage in Python (Aug. 28 - Oct. 9).
- Core Python packages for data science and spatial analysis (Oct. 10 - Nov. 13)
- Other Python packages and student projects (Nov. 14 - Dec. 14)
The schedule is subject to change.
Week | At Home | Readings | In Class |
---|---|---|---|
[Aug 28] | Introduction to Python and course software | ||
Aug 29 - [Sep 4] | Install software, account setup | folchcourses.github.io, Git Introduction, IPython Introduction, Ch 1 | Exercise |
Sep 5 - [Sep 11] | Variables, statements and operators | Ch 2, App A | Quiz; Exercise |
Sep 12 - [Sep 18] | Sequences, dictionaries and strings | Ch 8, Ch 10, Ch 11, Ch 12 | Quiz; Exercise |
Sep 19 - [Sep 25] | Functions and flow controls | Ch 3, Ch 5, Ch 7 | Quiz; Exercise |
Sep 26 - [Oct 2] | Object orientation (class, composition and inheritance) | Ch 16, Ch 17, Ch 18 | Quiz; Exercise |
Oct 3 - [Oct 9] | Review core programming materials | Exercise | |
Oct 10 - [Oct 16] | NumPy and SciPy | NumPy Tutorial, SciPy Tutorial | Quiz; Exercise |
Oct 17 - [Oct 23] | Files and Pandas | Ch 15, Pandas Tutorial | Quiz; Exercise |
Oct 24 - [Oct 30] | Matplotlib and Seaborn | Matplotlib Tutorial | Quiz; Exercise |
Oct 31 - [Nov 6] | Individual projects | Conference - no class | |
Nov 7 - [Nov 13] | GeoPandas and PySAL | GeoPandas User Guide, PySAL User Guide | Quiz; Exercise |
Nov 14 - [Nov 20] | Individual projects | Thanksgiving week - no class | |
Nov 21 - [Nov 27] | Individual projects | Package presentations | |
Nov 28 - [Dec 4] | Individual projects | Package presentations | |
Dec 5 - [Dec 11] | Individual projects | Project Presentations | |
Dec 14 | Final project due (4:00pm) |
Policies
- Late assignments are not accepted.
- Makeups for quizzes will be granted in cases of unforeseeable emergencies. Makeups will consist of an oral quiz during the professor’s office hours.
University Attendance Policy
Excused absences include documented illness, deaths in the family and other documented crises, call to active military duty or jury duty, religious holy days, and official University activities. These absences will be accommodated in a way that does not arbitrarily penalize students who have a valid excuse. Consideration will also be given to students whose dependent children experience serious illness.
Academic Honor Policy
The Florida State University Academic Honor Policy outlines the University’s expectations for the integrity of students’ academic work, the procedures for resolving alleged violations of those expectations, and the rights and responsibilities of students and faculty members throughout the process. Students are responsible for reading the Academic Honor Policy and for living up to their pledge to “…be honest and truthful and… [to] strive for personal and institutional integrity at Florida State University.” (Florida State University Academic Honor Policy, found at http://fda.fsu.edu/Academics/Academic-Honor-Policy.)
Americans with Disabilities Act
Students with disabilities needing academic accommodation should:
- register with and provide documentation to the Student Disability Resource Center; and
- bring a letter to the instructor indicating the need for accommodation and what type. This should be done during the first week of class.
This syllabus and other class materials are available in alternative format upon request.
For more information about services available to FSU students with disabilities, contact the:
Student Disability Resource Center
874 Traditions Way
108 Student Services Building
Florida State University
Tallahassee, FL 32306-4167
(850) 644-9566 (voice)
(850) 644-8504 (TDD)
sdrc@admin.fsu.edu
http://www.disabilitycenter.fsu.edu/