Geography 246/346 Syllabus
1 Overview
Originally developed for statistics, free and open source R is now one of the most widely used programming languages in both industry and academia. Among its many applications, R is increasingly used for geospatial analyses, as evidenced by its growing ecosystem of spatial libraries (covering everything from basic vector and raster manipulation to advanced modeling and image processing), the evolution of classes for representing spatial data, its expanding capacity to interact with and leverage the capabilities of other geospatial libraries (GDAL) and GIS (e.g. GRASS, QGIS, PostGIS, SAGA). Alongside its geospatial capabilities, there has been concurrent development of interactive development environments (IDEs) for R, which facilitate the creation, presentation, and reproducibility of analyses. R has therefore very close to being a one-stop shop for the modern GIScientist. This course will provide students with the skills they need to use R as a GIS. There will be additional emphases on programming, presentation, and reproducibility, which will entail learning to develop R libraries, development of presentations and reports using Rmarkdown, and using version control with github. Students will learn and apply R skills by working on a specific research problem.
1.1 Meeting Time/Place
ASEC 303, MW 1200-1315
1.2 Office Hours
Instructor | Office | Office hours |
---|---|---|
Lyndon Estes | Jefferson 201C | Tuesday 1300-1500 |
Vanchy Li | EORS, 1st floor GEOG building | Monday and Wednesday 1330-1500 |
1.3 Philosophy
Although our primary focus is learning how to use R
for
geospatial analysis, the course also introduces additional skills and
concepts related to reproducible research.
1.4 Caveats/things to consider
Here are some other aspects regarding this course that you may wish to consider before committing:
Assignments in this class are problem-oriented, not recipe-based:
I believe that the best way to learn R (and any human or computational language, for that matter) is to figure out how to use it to solve specific problems. There are usually multiple paths that can be taken to solve a problem, particularly in
R
, which has a huge number of contributors and over 10,000 packages. Coding recipes that spell out precise steps needed to arrive at a solution will not take you as far towardsR
fluency, and will prevent you from learning the diversity of this language.It can be very rewarding to figure out programming problems (I personally prefer programming to writing papers), but it can often be frustrating. Feeling frustrated is quite normal, and please don’t take it as a sign that you are not good at programming, or that it is not for you.
The order in which material is introduced will occasionally be non-linear:
Primarily because we are introducing reproducibility concepts up front in this class, which entails learning about some things that people might ordinarily get around to after they know a bit of
R
code. However, I believe that this order of things will enable you to learnR
(or any other programming language) more rapidly. It might even make it more fun.This is a flipped class:
Materials and problems are expected to be done before class. This is particularly true this semester, when we are working more than half the time in an online mode. There will be some lecturing on key concepts, but class is intended to function more like a lab (and the lab period is intended for students seeking extra help), in which you work through practical problems, clarify concepts that are unclear, or present your work to your peers.
I am not a computer scientist:
Full disclosure: I am self-taught programmer. That means that the way I teach this course might differ from the way a formally trained computer scientist would teach it. I don’t know if that’s the case, but those of you have taken computer science courses might notice some differences.
1.5 Required Texts, Reading, and Assignments
There is no required textbook for this course. There is a huge amount
of well-developed R
material that is freely available on
the web. We draw on and those resources for this class and integrate
them into our own content (citing/linking to show where they come
from).
Readings and assignments should be completed before the class they are listed under. This is key to learning the language, as it is difficult to learn programming by just listening to lectures.
Practical assignments. During the first two units, there will be a total of 5 assignments (see links within the individual modules). The sixth assignment is your project overview. The week assignments are due is listed on the syllabus, to be submitted by midnight on the Friday of that week. You will undertake and submit your work through github repositories that exist under the Agricultural Impacts Research Group’s github organization, where there is a team setup for this class. You will need to join GitHub (it’s free!) to be able to submit assignments, as we will need your github name to add you to the team. You will manage your individual assignments under private personal repositories that will be listed under your own individual sub-team.
Projects Each student will be required to undertake a final project. Please see the projects page for more detail.
1.6 Style
There are many ways to write code and get the results you want. However, not all ways of writing code are equal. Some code is messy and hard to read. Other code is organized, clean, and easy to read. The latter is what we are aiming for, as it helps to foster reproducibility. In this class, we will follow Hadley Wickham’s style guide. Please study it.
1.7 Assessment and engaged time
Your progress in this class will be assessed as follows:
Component | GEOG246 | GEOG346 |
---|---|---|
Practical assignments (n=5) | 55% of grade | 45% of grade |
Partcipiation | 10% of grade | 10% of grade |
Overview for final semester project | 10% of grade | 15% of grade |
Final report on semester project | 25% of grade | 30% of grade |
Grading will be based on the rubrics found under the Assessment vignette.
Courses at Clark are worth 4 credit hours, which equates to 180 hours of engaged academic time. The breakdown of that time is estimated to be:
GEOG246 hours | GEOG346 hours | |
---|---|---|
Class meetings | 37 | 37 |
Readings | 12 | 14 |
Practicals | 40 | 50 |
Semester projects-analysis | 65 | 59 |
Semester projects-presentation | 10 | 8 |
Semester projects-final report | 16 | 12 |
Total hours | 180 | 180 |
1.8 Expectations
Since class is flipped, this is a time for questions and discussion, between us and you, and often between yourselves. However, please keep any conversations low and necessary to the task at hand if they are one-on-one.
Class attendance is expected. It is the primary time in which to get help on understanding reading materials and assignments (see next section on Communications). Late assignments (including presentations and final report) are not accepted, barring any emergency or reasonable conflicts that prevent on-time submissions.
For assignments in the first two units, students can work together to figure out coding problems and to understand the material, but final assignments should reflect each student’s own work and coding effort (i.e. not copying code from someone else). For final projects, many, if not most, of the projects will be team-based (2-3 per team, depending on the nature of the assignment) on some if not all of the available topics.
We will follow the University’s policies on plagiarism and cheating. Please familiarize yourself with the University’s policy on academic integrity, particularly section I.
1.8.1 Communications
We will conduct class communications via a Slack channel that you should already be invited to. Please don’t send emails as they will go unanswered. Class-wide discussions will be conducted in the #fall2021 channel. Individual and restricted group messaging will be conducted via Slack direct messaging, e.g. grade reporting, confidential questions.
1.9 Title IX
Clark University and its faculty are committed to creating a safe and open learning environment for all students. Clark University encourages all members of the community to seek support and report incidents of sexual harassment to the Title IX office (titleix@clarku.edu). If you or someone you know has experienced any sexual harassment, including sexual assault, dating or domestic violence, or stalking, help and support is available.
Please be aware that all Clark University faculty and teaching assistants are considered responsible employees, which means that if you tell me about a situation involving the aforementioned offenses, I must share that information with the Title IX Coordinator, Brittany Rende (titleix@clarku.edu). Although I have to make that notification, you will, for the most part, control how your case will be handled, including whether or not you wish to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need.
If you wish to speak to a confidential resource who does not have this reporting responsibility, you can contact Clark’s Center for Counseling and Professional Growth (508-793-7678), Clark’s Health Center (508-793-7467), or confidential resource providers on campus: Prof. Stewart (als.confidential@clarku.edu), Prof. Palm Reed (kpr.confidential@clarku.edu), and Prof. Cordova (jvc.confidential@clarku.edu).
2 Course Structure
The following is an overview of the course structure, broken down by Unit, with a listing of the material to be covered each week, including the week in which unit assignments are due (assignments are due by midnight on Friday during the indicated week).
2.2 Unit 2. Handling and analyzing spatial data with R
In this part of the course we will start to learn to use R as a GIS. The detailed syllabus can be found in the Unit 2 vignette.
2.2.1 Week 7. Introduction, working with vector data
2.2.2 Week 8. Vectors continued
- Unit 2 Module 1 assignment (#4) due
2.2.3 Week 9. - Working with raster data
2.2.4 Week 10-11. - Raster data continued
- Unit 2 Module 2 assignment (#5) due
2.3 Unit 3. Projects
2.3.1 Week 12 - Project selection
- Final project overview due
2.3.2 Weeks 13-15 - Project work
Students will spend this time working on their projects, with a particular focus on working with us to identify and trouble-shoot methods.
The class periods in this week can be used for continued project work. The final project will be submitted during the exam week.
3 Resources
The following are some helpful resources that you may wish to
follow-up on as you learn R
.
3.1 Books etc
- The R Inferno
- Efficient R Programming
- Swirl Stats and the
swirl
package
3.2 The intertubes
3.2.1 R general
- CRAN, particularly an Introduction to R the Task view Analysis of Spatial Data
- R Exercises
- ROpenSci
- Kelly Black’s R tutorial
- Creating reproducible examples (read this before posting to one of the mailing lists)
- R mailing lists/listservs
- Speeding up R
- tidyverse tutorial video
3.2.2 Advanced analytics
3.2.3 Reproducibility
- Add citations to an Rmarkdown document
- Rmarkdown cheatsheet
- Tools for Reproducible Research
- manuscriptPackage: An R package that provides a package template for writing a Latex manuscript using Rmarkdown, complete with citations.
3.2.4 R versus python
This is a big topic, but here are a few links to get started. Lately the two seem to be converging in terms of usage (i.e. there is a trend towards using both together, read the latest news from Rstudio–see the first link)
3.2.5 R spatial
- A short R spatial tutorial, with some good examples for connecting to Google Maps.
- Another
R spatial tutorial, with
ggplot2
andtmap