NTRES 6100
Collaborative and Reproducible Data Science in R
Cornell University, Fall 2026

Course Info

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 ()

TA: PhD Candidate Azwad Iqbal ()

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)


Course description

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.


Learning outcomes

By the end of this course, students will be able to:

  • Describe strategies for ensuring that their data analysis is reproducible
  • Demonstrate best practices for coding and project-oriented workflows in RStudio
  • Import and clean messy data files using a variety of packages and functions in R
  • Subset, reorganize, and merge diverse datasets in R
  • Effectively explore and visualize patterns in complex datasets with ggplot in R
  • Write simple functions/programs and data analysis pipelines in R
  • Automate repeated analysis tasks in R
  • Track the history of file changes (version control) and collaborate effectively on scripts with others with Git and GitHub
  • Use Quarto to combine text, equations, code, tables, and figures into reports, websites, and presentations
  • Use generative AI effectively as a coding assistant while critically evaluating, debugging, and verifying AI-generated code and analyses.

Prerequisites

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:


Use of AI

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.


Course format

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.


Evaluation

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.


Course materials

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.


Code of conduct

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:

  • Use welcoming and inclusive language
  • Be respectful of different viewpoints and experiences
  • Gracefully accept constructive criticism
  • Show courtesy and respect towards others
  • Help each other - you may well learn something or reinforce your own skills in the process

Student accommodations

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.


Online participation

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.


Tentative schedule

Subject to adjustment

Lecture# Day Date Topic Assignment due dates
1 Tue 8/25 Intro to the course and R/RStudio
2 Thu 8/27 Quarto and GitHub
3 Tue 9/1 The Git workflow (version control)
4 Thu 9/3 Collaborating with GitHub Part 1 Assignment 1
5 Tue 9/8 Collaborating with GitHub Part 2
6 Thu 9/10 Plotting with ggplot part 1 Assignment 2
7 Tue 9/15 Data wrangling part 1 (dplyr::filter, mutate, select, arrange)
8 Thu 9/17 Data wrangling part 2 (dplyr::summarize, group_by) Assignment 3
9 Tue 9/22 Plotting with ggplot part 2 + good coding practices
10 Thu 9/24 Tidy data Assignment 4
11 Tue 9/29 Data import, export, and conversion between data types
12 Thu 10/1 Relational data Assignment 5
13 Tue 10/6 Factors in R
14 Thu 10/8 Good coding practices, debugging strategies, and getting help Assignment 6
Tue 10/13 FALL BREAK (no class)
15 Thu 10/15 Iteration (for loops) and conditional execution part 1 Assignment 7
16 Tue 10/20 Iteration (for loops) and conditional execution part 2
17 Thu 10/22 Leveraging AI for coding responsibly Assignment 8
18 Tue 10/27 Functions
19 Thu 10/29 Student presentations and Wrapping up and resources for learning more Assignment 9
20 Tue 11/3 Best practices for data archiving and sharing
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