NTRES 6100
Collaborative and Reproducible Data Science in R
Cornell University, Fall 2026
Lectures: Tuesdays and Thursdays 10:10am - 11:25am (August 25 - November 3, 2026), Stocking Hall 202
Lab sessions (Hands-on practice sessions in
groups and with TA support):
Thursdays (Comstock Hall-Academic II 2123) or Fridays
(Mann Library B30B), 12:20pm - 2:15pm
Instructor: Associate Professor Nina Overgaard Therkildsen (nt246@cornell.edu)
TA: PhD Candidate Azwad Iqbal (ari22@cornell.edu)
Office hours: Nina: by appointment; Azwad: Mondays, 3 - 4 pm in Fernow 311 or by appointment
Grading: S/U (2 credits / 3 credits with lab)
As datasets grow larger and more complex across all areas of science, computational skills are increasingly in high demand. This course introduces a series of practical tools that enable researchers to spend less time wrestling with software or repeating error-prone manual data processing and more time getting research done in efficient and transparent ways that facilitate collaboration and reproducibility. We will work in R/RStudio, primarily with the tidyverse packages and with Git and GitHub integration. Topics covered include 1) tidy data formatting, 2) rearrangement, filtering, exploration, and visualization of complex datasets, 3) basic programming for building and automating custom tools, 4) tracking the history of file changes (version control) with Git and GitHub, 5) strategies for effective collaboration on data processing pipelines, and 6) using Quarto to combine text, equations, code, tables, and figures into reports, websites, and presentations. The course emphasizes practical skill development and is structured around hands-on coding and problem solving.
By the end of this course, students will be able to:
A basic working knowledge of R will be helpful, but no prior experience with the tidyverse packages or with Git, GitHub, or Quarto is assumed. If you have never worked in R before, we recommend working through one or more of the following tutorials before the course:
Generative AI is rapidly changing how we write code and conduct data analysis. In this course, we will learn how to use AI effectively as a tool for scientific programming while developing the foundational skills needed to understand and critically evaluate computational analyses. Labs will provide structured opportunities to work with AI as a coding partner—to generate and modify code, troubleshoot problems, and explore alternative approaches. A central emphasis will be on learning to critically evaluate AI-generated code, identify errors and inappropriate assumptions, and verify that analyses do what we intend them to do.
The goal is not to learn how to have AI do your work for you, but to learn how to use AI effectively while remaining responsible for the scientific and computational decisions in your analysis. Assignments will provide specific guidance about when and how AI may be used.
Class meetings combine lectures and hands-on labs. Lectures introduce the conceptual and computational foundations of R, data science, and reproducible research, with an emphasis on developing your own understanding of the tools and approaches, and create the conceptual foundation needed to understand what code is doing, recognize when something is wrong, and make informed analytical decisions. To participate effectively, you must have completed the assigned readings prior to class. Labs provide opportunities to apply your skills to more extended problems and will serve as our primary setting for experimenting with AI-assisted programming. Through the labs, we will develop strategies for working productively with AI while critically evaluating and verifying its output. The Thursday and Friday sessions are identical so you can attend either one of them.
Each Thursday, we will assign a problem set that applies the concepts covered in class in a new context to reinforce your learning. The problem sets are due the following Thursday at 10pm.
It takes practice to acquire and internalize data science skills, and what you get out of this course will be proportional to the effort you put in. Practice as much as you can. To pass, students are expected to attend 18 out of 20 lectures (and 9 of the 10 lab sessions), participate actively during class, submit at least 7 of the 9 problem sets with demonstrated effort to complete all questions, and give a brief (~3 minute) presentation at the end of the course about how you might adopt some of the course material in your own work. If you are unable to make a lecture or lab, or cannot meet a problem set deadline, please let the instructor and TA know on Slack beforehand.
All assigned readings are freely available online and will be linked to from the course website. We will draw from a variety of sources, primarily Wickham, Çetinkaya-Rundel, and Grolemund’s R For Data Science and the STAT545 course developed by Jenny Bryan.
All students will need to bring a laptop to each session. Students who do not have their own laptop can arrange to borrow one from the Mann Library.
Please follow the instructions here to install the software we will need prior to the first class.
We are dedicated to providing a welcoming and supportive environment for everyone, regardless of background, identity and prior experience level. Everyone in this course will be coming from a different place with different experiences and expectations. We will not tolerate any form of language or behavior used to exclude, intimidate, or cause discomfort. This applies to all course participants (instructor, students, guests). In order to foster a positive and professional learning environment, we encourage the following kinds of behaviors:
Your access to this course is important. If you have a disability and need academic accommodations, please work with Cornell Student Disability Services (SDS) and have your accommodation letter sent to me. I encourage you to do this as early as possible so that we have adequate time to make the necessary arrangements.
I also recognize that students may encounter circumstances that affect their ability to participate fully in the course, whether or not they have formal accommodations through SDS. Please feel free to reach out to me if you are experiencing difficulties or if there are adjustments we can make to better support your participation and learning in the course.
This semester, the course is offered fully in-person and we expect you to show up for class. However, in an effort to accommodate special needs and keep everyone safe and healthy, we will also provide a Zoom link for joining lectures online when you are not able to participate in-person. You can use the Zoom link posted on the course Canvas site instead of showing up in person if you are sick, or have another reasonable justification. However, unless arranged with the instructor (e.g. for students based away from the Ithaca campus), we are not able to accommodate fully hybrid participation, and we strongly encourage you to participate in-person whenever possible.
Subject to adjustment
| Lab# | Date (Thu) | Date (Fri) | Topic |
|---|---|---|---|
| 1 | 8/27 | 8/28 | Quarto |
| 2 | 9/3 | 9/4 | Quarto and GitHub |
| 3 | 9/10 | 9/11 | Displaying data visualization on a website |
| 4 | 9/17 | 9/18 | Data exploration with the gapminder dataset |
| 5 | 9/24 | 9/25 | Data exploration with the Titanic dataset |
| 6 | 10/1 | 10/2 | Data cleaning and tidy data |
| 7 | 10/8 | 10/9 | Relational data and tidy data |
| 8 | 10/15 | 10/16 | Iteration and conditional execution |
| 9 | 10/22 | 10/23 | OPTIONAL: Bring your own project |
| 10 | 10/29 | 10/30 | Functions and iterations |