Core Learning Objectives
Tiered Scoring
Each objective is scored on a 4 / 5 / 6 point scale based on the quality and independence of your demonstration of the skill.
| Points | Label | Description |
|---|---|---|
| No grade | No demonstration | You have not yet demonstrated this skill. |
| 4 | Meets Expectations | You demonstrate the skill correctly in structured or familiar contexts (for example, following a guided assignment or closely modeled example). |
| 5 | Exceeds Expectations | You apply the skill correctly and independently in a novel context, with clear, well-chosen code that would generalize to new datasets or problems. |
| 6 | Outstanding | You use the skill in an especially expansive way: combining it with other skills, applying it to a complex or less-structured task, or going beyond the scope of in-class examples. |
All three levels (4, 5, 6) are successful demonstrations. If you do not demonstrate a skill at least at the 4-point level, you will not earn credit for that standard.
Earning an average of 5 points per standard will earn you all 60 points. An average lower than 5 points can still result in an ‘A’ grade for the class if you complete enrichment activities.
Each assignment will receive a score for each standard it addresses based on this rubric. Individual assignments may not be resubmitted for a higher score, but you may improve your score for a standard by submitting new assignments that demonstrate that standard at a higher level.
Higher scores always replace lower scores for core standards, so after earning a high score with an impressive assignment, subsequent assignments that use the skill at a more basic level won’t lower your score.
General Grading Guidelines
- It is possible to earn a score without checking off each specific requirement if the overall work clearly demonstrates foundational (4), strong (5), or outstanding (6) skills. These guidelines are intended to give you confidence in your work before submission. They should not be interpreted as perfectly rigid requirements to work against you. If you have met all the expectations listed for a score, you will not earn lower than that score.
- Code failing to execute correctly does not necessarily preclude earning points for an objective. R scripts, code chunks, and knitted documents that do not execute or render as intended may still receive credit if the problems are minor and there is evidence of the objective in other parts of the submission.
- All three levels represent successful demonstrations. No credit is given if the skill is not demonstrated at minimum 4-point level.
- Higher scores always replace lower scores, so students can improve by submitting new work.
- Individual assignments cannot be resubmitted for regrading, but students may submit new assignments demonstrating the same standard at a higher level. In rare cases, students may be invited to correct trivial errors or reattempt assignments following significant misunderstanding.
- The less structured the project, the higher the potential score. Structured projects with extensive scaffolding typically cap at 4-5 points, while unstructured projects can more easily reach 6.
Quarter 1 Core Learning Objectives
The 12 Quarter‑1 core learning objectives are all technical and observable. For each one ask: Is there clear, identifiable code or output that shows this skill?
The objectives are listed (more or less) in the order they are covered in class, but you can demonstrate them in any order.
Quarter 1 | Core Learning Objectives
Core standard: Create an RStudio project for coursework, use relative paths, and knit simple Quarto documents that combine code and narrative.
Grading Criteria:
Basic Class Expectation, No Points
To fully participate in the class, you need to have simple proficiency with RStudio and Quarto. You are expected to be able to execute the following workflow, separately from the core standard:
4 Points:
5 Points:
6 Points:
-
- Sophisticated project organization
- Custom YAML configurations
- Advanced chunk options
- Multiple output formats
- Advanced Quarto features (tabsets, cross-references, custom layouts)
- Comprehensive documentation, or additional evidence of workflow mastery
Core standard: Create and maintain a GitHub repo with README, .gitignore, and a commit history that reflects real work over time.
View the Git & GitHub Submissions Guidelines for detailed instructions on how to complete and submit assignments using GitHub Classroom and private GitHub repositories.
Grading Criteria:
Basic Class Expectation (No points):
To fully participate in the class, you need to have simple proficiency with GitHub Classrooms. You are expected to be able to execute the following Classrooms workflow, separately from the core standard:
4 Points:
5 Points:
6 Points:
-
- Includes many small, meaningful commits across time
- Uses a complex directory structure appropriately
- Provides extensive README documentation
- Uses advanced Git/GitHub features (branching, merging, issues)
- Uses GitHub for collaborative work on shared repo
Core standard: Create, index, and manipulate vectors, lists, and data frames, including handling missing data.
Grading Criteria:
4 Points:
5 Points:
6 Points:
-
- Works with nested or complex data structures
- Demonstrates advanced indexing or manipulation techniques
- Applies skills to particularly complex or unstructured task
- Works with data structures outside base R and the tidyverse
Core standard: Use if/else and loops to branch logic and automate repetitive tasks in multiple contexts.
Grading Criteria:
4 Points:
5 Points:
6 Points:
-
- Implements complex control flow logic
- Uses function alternatives to standard conditional and loops, like the
applyfamily of functions or thedata.tablepackage - Nests control structures appropriately for sophisticated tasks
- Uses vectorized alternatives where appropriate, showing understanding of when loops are/aren’t needed
Core standard: Define and use functions with arguments and return values with reusable code logic in multiple contexts.
Grading Criteria:
4 Points:
-
- At least 2 functions with 1 argument or
- At least 1 function with 2 or more arguments
5 Points:
-
- At least 2 functions with 2 or more required arguments and
- At least 1 function with both required and optional arguments
6 Points:
-
- Defines multiple related functions or nested function calls
- Implements sophisticated function logic
- Accepts multiple data types within a single argument
- Include error handling or input validation
Core standard: Import datasets with readr and related packages, handling paths and basic options.
Note: For this requirement, you may interpret “readr functions” as including functions from related packages, like googlesheets4 or readxl.
- IMPORTANT: Read and write functions that are provided in assignment documents cannot count toward this objective.
Grading Criteria:
4 Points:
-
- All files use correct relative paths (remember that relative paths are handled differently in .R scripts and .qmd code chunks)
- Read and write functions do not reference files or directories ignored by Git processes
-
- Read in a data file and assign to an R object
- Write out an R object to a data file
5 Points:
-
- Access to the ignored data is not required to execute any code you intend to count toward other objectives (i.e., your grader must be able to evaluate other objectives fully independently from your ignored files)
- You clearly document in both your submission markdown file and in the comments of your import script where and how you have used the advanced read/write skills
-
- Arguments do not need to be in the same function, but must be unique.
6 Points:
-
- Handles complex import scenarios (messy formats, multiple files, unusual delimiters)
- Uses advanced
readrfeatures or other tidyverse import tools - Uses import and export functions from additional packages
- Imports or exports non-tabular data
- Integrates import process smoothly into larger workflow
- Defines a data manipulation function with embedded data import
- Demonstrates troubleshooting of import problems
Core standard: Use multiple dplyr verbs (filter, select, mutate, summarize, arrange, group_by) in chained pipelines.
Grading Criteria:
4 Points:
5 Points:
-
- Joins (
left_join(),inner_join(), etc.) mutate()withdplyrconditional logic functionsgroup_by()piped tosummarize()- tidyselect helper(s)
- Joins (
6 Points:
-
- Creates complex multi-step pipelines beyond expectations for a 5
- Non-trivially combines techniques for sophisticated data transformations
- Uses multiple tidyselect helpers in unique contexts
- Demonstrates efficiency and creativity in pipeline design
- Uses placeholders (
.or_, depending on pipe) to include non-tidyverse functions in a pipeline
Core standard: Diagnose untidy data and reshape to a tidy format, with explanation.
Note: This objective is about conceptual understanding, which may not be straightforward to demonstrate in code alone. Use of dplyr and/or tidyr functions to meet objectives 7 & 9 is not sufficient to meet objective 8, though a project that successfully demonstrates 7 or 9 is likely a good opportunity to demonstrate 8 as well.
Use comments to explain decisions about managing tidy data in your code. Use the self-evaluation section of your submission doc to elaborate on how your understanding of tidy data structure factored into the project.
Grading Criteria:
4 Points:
5 Points:
6 Points:
-
- Transforms particularly messy or complex data structures into tidy format
- Effectively uses both tidy and non-tidy versions of a dataset within a single project
- Describes how tidy format enables subsequent analysis steps
- Creates comprehensive documentation of transformation process
Core standard: Use multiple tidyr functions (pivot_longer/pivot_wider/separate/unite) to reshape data.
Grading Criteria:
4 Points:
5 Points:
6 Points:
-
- Handles complex reshaping scenarios
- Chains multiple tidyr operations effectively
- Combines
tidyrwithdplyrfunctions in sophisticated pipelines - Uses
tidyrwith nested data
Core standard: Use stringr functions (e.g., str_detect, str_replace, str_extract) to solve text cleaning or extraction tasks.
Grading Criteria:
4 Points:
-
- Common functions:
str_detect(),str_replace(),str_extract(),str_to_lower(),str_trim(),str_sub(), etc. - At least 1 function uses pattern matching (tidyverse simplified or regex)
- Common functions:
5 Points:
-
- Combining strings (e.g.,
str_c(),str_flatten()) - Changing case (e.g.,
string_to_upper(),str_to_snake()) - Detecting, modifying, or removing matched patterns (e.g.,
str_detect(),str_extract(),str_remove_all(),str_like()) - Computing, detecting, or modifying length and/or whitespace (e.g.,
str_trim(),str_trunc(),str_length())
- Combining strings (e.g.,
-
- Regular expressions
- Escaped characters
- Locale sensitive function with a meaningful
localeargument - SQL style matching (e.g., using
str_ilike())
6 Points:
-
- Handles complex text manipulation tasks
- Creates sophisticated patterns for extraction or replacement
- Combines
stringrfunctions with string/character manipulation functions from other packages
Core standard: Recode, reorder, and/or lump factor levels to prepare categorical variables for analysis or plotting.
Grading Criteria:
4 Points:
5 Points:
6 Points:
-
- Handles complex factor manipulation scenarios
- Creates custom factor level schemes with clear purpose
- Demonstrates advanced
forcatstechniques - Factor manipulation integrated into sophisticated analysis/visualization workflow
- Makes informed and well-explained choices about whether to treat variables as factors when not clearly required (e.g., deciding whether a Likert scale should be handled as categorical or continuous)
Core standard: Create simple ggplot2 plots and compute/report basic descriptive statistics (means, medians, counts, proportions) in a Quarto document with clear captions and narrative.
Grading Criteria:
4 Points:
-
- At least 1 plot must have 2 or more variables
- All plots must include at least 1
geomlayer and at least 1 specified aesthetic (aes())
-
- May be directly reported from the code chunk’s R output rather than integrated into Quarto markdown or presented in a styled table
5 Points:
-
- At least 1 categorical variable
- At least 1 continuous variable
- At least 1 layer other than the required
geom(may be a secondgeomon the same plot)
6 Points:
-
- Creates comprehensive reporting document
- Uses intermediate/advanced ggplot2 features (themes, facets, scales, etc.)
- Computes and reports results of complex descriptive statistics or hypothesis testing
- Highly polished, publication-ready output
- Sophisticated integration of code, output, and narrative
- Reports results using
kable,gt,stargazer, or similar
Submission & Grading
All core objectives projects should be submitted via GitHub pull requests and finalized for grading with the online Submission Form.
The final deadline to submit core objectives project is Friday, March 6th. Requests for extensions should be made by contacting the TA and are granted/denied entirely at the TA’s discretion.