2 Approach

Programming languages are just that, languages. As such, the best way to learn R or any language is to fully commit to the language and do everything you can to see it most days of the week for at least half an hour (ideally more). This can be as easy as trying to write all your homeworks for other classes in R and/or RMarkdown. Or, it can be as committed as writing everything exclusively in R: emails, your personal website, shopping lists, etc… The idea here is immersion into the language, ways of asking for help, the community, and more! I promise this immersive approach will help in the short and long run. This is primarily a coding class, and any statistical work we do will be guided by you, not me. Later if you take a stats class, hopefully the coding part will be a breeze!

2.1 Class policies

2.1.1 Inclusive classroom

To encourage this embedded approach, we will have an inclusive classroom: respecting and valuing the diverse backgrounds, perspectives, and identities of individuals in the class. Students are expected to have an awareness of and sensitivity to language or actions that may be exclusionary or alienating. I am committed to fostering a collaborative and inclusive class and appreciate any feedback on how to improve my own practice.

This is particularly important in a class that will have group work, peer grading, and generally serve individuals with a large range in R fluency. We all get better if we work together. Some of the best R training available comes from groups with explicit inclusivity goals, and I think that is what makes this language and community great. I encourage you to check out RLadies. A final note on treatment of others: one of the most important things when interacting with others who have more or less coding experience than you is to learn how to ask effective questions that show you understand and value other people’s time. We will learn explicitly how to do this in the R community, but it is also a good general principle to keep in mind. “What work can I do to prepare my question in a way that makes it easiest for someone to help me?” I want you to ask questions and work collaboratively and do so in a way that helps you and everyone else.

2.1.2 Flipped class

Finally, the majority of the class will be “flipped,” with lectures delivered online before class and class time devoted to coding. Learning to code requires coding and we will try to spend the majority of class time doing assignments, group work, and live coding problem sets. Before class you will be expected to watch short lectures on YouTube that will be posted at least 4 days before class. These videos will generally be less than 20 minutes and geared directly towards the material we will work on in class. It is vital that you do this work before class and I will think of ways to check if needed (I hope not in a grad class).

2.1.3 Assignments

All assignments will be distributed through GitHub

2.1.4 Asking for help and code on the internet:

One of the most common ways people learn to code is to use the age-old (okay, maybe 10 years) technique of asking the internet for help. This is a great idea! But! When you do you should ask for help in specific ways that enable people to answer your question more easily and clearly. Great instructions are here: https://blog.revolutionanalytics.com/2014/01/how-to-ask-for-r-help.html and a more general guide to help in R is here: https://www.r-project.org/help.html.

2.1.5 Using other people’s code

Inevitably, you will want to perform a task in R that someone else has already done. This is useful and part of why the R community is so great. But! If you use other people’s code, you should:

  1. explitly cite where you got the code or the inspiration for it

  2. work hard to understand the code and what it does, break it down into pieces, and try to rebuild it

Code that you did not write and is not cited will be treated as academic plagiarism. Assignments will vary in how much code is allowed to be shared between students, but the general rule is that you should be submitting your own code or code from your own team. As an example of best practices, a lot of the inspiration for this page (and the class in general) comes from Mine Cetikaya-Rundel and her amazing STA 199 course at Duke

2.2 Academic integrity

Academic integrity: You are responsible for adhering to all university policies on academic integrity and student conduct https://tilt.colostate.edu/integrity/knowTheCode/. TILT has a number of resources for students related to writing and study skills: https://tilt.colostate.edu/integrity/resourcesStudents/.

2.3 Attendance

This class will heavily depend on you being present. There will be a participation grade that will reflect a combination of your consistent presence, focus in class, and participation in group work.

2.4 Grading

Assignments Final Participation
60% 30% 10%

2.5 Schedule

This schedule will likely change considerably as we move through the course, but I will keep it updated. Every Thursday there will be an assignment due the next Friday (of the following week), unless otherwise stated.

Week Date Content Work Before Class Lectures Before Class Scripts Data
1 2019-08-27 R, RStudio, Packages, Data Types, and Functions Viz and Programming Primers Installing R and RStudio
1 2019-08-29 Projects, Organization, Git, GitHub Happy Git With R Connecting Git, GitHub, & RStudio
2 2019-09-03 Manipulating Data Working with Data Primer Data manipulation in a script Hayman NDVI
2 2019-09-05 More Tidying Data Tidy data More complex data Hayman again RS Indices
3 2019-09-10 Generating Dynamic Reports and asking for help RMarkdown Intro Converting to Rmd Q vs Snow cover
3 2019-09-12 Writing Papers in Rmarkdown (w/ Latex) RMarkdown PDF Installing and Using Latex Lake analysis
4 2019-09-17 Spatial Data in R (Simple Features) Geocomputation with R Intro to Spatial Analysis with Lagos Spatiodata analyses
4 2019-09-19 Mixing spatial and data analyses Spatial Operations Spatiala and Data Analyses
5 2019-09-24 Raster data What is a Raster? Raster Data
5 2019-09-26 Raster and point data Rayshader 3D analyses
6 2019-10-01 Review
6 2019-10-03 Review
7 2019-10-08 Writing functions Functions primer Functions
7 2019-10-10 Iterating, nesting, purrring Iteration primer
8 2019-10-15 More on purrr Tidy Models Iterating and Purrring
8 2019-10-17 Project workday
9 2019-10-22 Web scraping Web Scraping Web scraping
9 2019-10-24 PDF scraping PDF Scraping PDF scraping and dynamic eval
10 2019-10-29 Project workday
10 2019-10-31 Real data analysis example
11 2019-11-05 Real data analysis example
11 2019-11-07 Project workday
12 2019-11-12 Advanced visualizations (videos and reactive graphs) GGanimate Making Videos 2 ways DailyP.RData
12 2019-11-14 Watershed analysis
13 2019-11-19 Bigg(ish) data in R and dtplyr
13 2019-11-21 Parallel processing in R
14 2019-11-26 Fall Break
14 2019-11-28 Fall Break, give thanks
15 2019-12-03 Final project work day
15 2019-12-05 Final project work day
16 2019-12-10 Final presentations
16 2019-12-12 Final presentaions