Skip to contents

Overview

Submit a public GitHub repository URL containing an R package for your chosen project.

The README should include installation instructions, quick-start examples for usage of the package and CLI, and a link to the pkgdown site.

Initial Due Date: Monday, April 20th - 11:59 PM

Generally, you should be able to complete most of this assignment during the unit 1 lab sessions.

There will be a review/help session on the Monday it is due for hands-on help from instructors.

Re-Submission Policy

  • Initial submission deadline: Monday, April 20th at 11:59 PM
  • Initial instructor feedback by: Tuesday, April 21st at 11:59 PM
  • Re-submission deadline: Friday, April 24th at 11:59 PM (4 days after initial submission)

Note: Grading will only be performed on your final submission. If you do not re-submit, your initial submission will be graded. Use the instructor feedback to address any issues before the re-submission deadline.


1. Package Structure & Installation (5 pts)

Points Criterion Check
1 Valid DESCRIPTION with correct metadata, Imports, and Suggests devtools::check() has 0 errors
1 NAMESPACE is generated by roxygen2 with correct exports/imports Exported functions are accessible after library()
1 Package installs from GitHub in a clean R session remotes::install_github("user/repo") succeeds
1 Includes example data (.rda in data/) usable via data() with a reproducible data-raw/ script data(example_se) or data(example_sce) works
1 devtools::check() completes with 0 errors devtools::check() — 0 errors

Note: Warnings and notes from devtools::check() should be minimized where possible, but they will not dock points. Only errors will result in lost points.

Checklist:


2. Core Analysis Functions (7 pts)

Points Criterion Check
1 Functions accept SE or SCE input and return well structured output (SE/SCE, list, data.frame) Input validation with informative errors
1 Plotting function returns a meaningful plot Returns ggplot object with informative labels
1 Functions are modular and composable (not one monolithic function) Each function performs a single logical step; can be used independently
1 Results are comparable to the original analysis Same data with same parameters produces comparable results (slight variation is expected for non-deterministic algorithms)
1 Improper parameter values produce informative error messages Graceful stop() with informative message if user feeds invalid input
1 An export/save function writes results to disk (e.g. CSV, TSV, or plot files) Function produces output files from analysis results
1 Functions chain together in a meaningful pipeline (e.g. filter → analyze → plot) Composability is demonstrated in examples or vignette

Checklist:


3. Testing (4 pts)

Points Criterion Check
1 testthat infrastructure set up correctly tests/testthat.R + tests/testthat/ exist
1 Tests cover both “happy path” and error cases At least 1 expect_error() for invalid input
1 All tests pass devtools::test() — 0 failures
1 Tests are meaningful — they verify what the code should do, not just that it runs without error Tests check expected output values, dimensions, types, or error conditions

Note: We recommend that most exported functions have at least one test, but meaningful tests are more important than test count. A small number of thoughtful tests that verify correctness is preferred over many trivial assertions.

Checklist:


4. Documentation (5 pts)

Points Criterion Check
1 All exported functions have roxygen2 documentation ?function_name shows help for every export
1 All @param, @return, @importFrom, and @export tags present No “Undocumented arguments” warnings
1 README with installation instructions and quick-start example README renders on GitHub with working example
1 At least one vignette vignettes/ contains at least one .Rmd with usage examples that renders properly
1 pkgdown site deployed successfully pkgdown::build_site() completes without error

Checklist:


5. Command-Line Interface (4 pts)

Points Criterion Check
1 CLI script exists in exec/ Rapp app file present and functional
1 Exported launcher installer function (e.g. install_mypkg_cli()) that wraps Rapp::install_pkg_cli_apps() After mypkg::install_mypkg_cli(), the CLI is available on PATH
1 --help displays usage information Shows arguments, descriptions, and defaults
1 CLI produces output files and calls package core functions output files created; uses package functions internally

Checklist:


Grading Summary

Category Points
Package Structure & Installation 5
Core Analysis Functions 7
Testing 4
Documentation 5
Command-Line Interface 4
Total 25