• Time: Tuesdays 5:30 PM to 8:00 PM
  • Instructor: Dr. David Gerard
  • Email:
  • Office: DMTI 106E
  • Office Hours: Tuesdays and Wednesdays 4:00 PM – 5:00 PM

Overview of Topics and Course Objectives

This course provides an in depth study of the R ecosystem and software development using R. This is less of a statistics course and more of a software development course using the Statistical Programming Language R. By the end of this course, you should be able to design and implement your own R packages using some of the advanced programming methods available from R.

Course Websites

Computing and Software

  • R: http://cran.r-project.org/

    • Make sure this is up-to-date.
  • R Studio: https://www.rstudio.com/

    • Make sure this is up-to-date.
  • Windows Users will need to install Rtools: https://cran.r-project.org/bin/windows/Rtools/

    • Make sure to put Rtools on the PATH, as described by the instructions on the Rtools website.
  • Mac Users will need to install Xcode and a GNU Fortran Compiler: https://mac.r-project.org/tools/

    • Make sure to put gfortran on the PATH, as described by the mactools website.
  • R packages: After you have completed the above, run this in the R console

    install.packages("BiocManager")
    BiocManager::install(c("usethis", 
                           "devtools", 
                           "roxygen2", 
                           "testthat", 
                           "knitr",
                           "Rcpp", 
                           "RcppArmadillo",
                           "covr"))

    You can verify that you are all set up for R package development by running the following in R:

    devtools::has_devel()
    ## Your system is ready to build packages!
  • Git and GitHub: Go through Setting up Git and GitHub.

Assignments and Grading

  • Weekly Homeworks: 75%

  • Final Project: 25%

  • Usual grade cutoffs will be used:

    Grade

    A

    A-

    B+

    B

    B-

    C+

    C

    C-

    D

    F

    Lower

    93

    90

    88

    83

    80

    78

    73

    70

    60

    0

    Upper

    100

    92

    89

    87

    82

    79

    77

    72

    69

    59

  • Individual assignments will not be curved. However, at the discretion of the instructor, the overall course grade at the end of the semester may be curved.

List of Topics

  1. Git/GitHub
  2. R Packages
  3. Best practices and workflow.
  4. Data Structures
  5. Object-oriented Programming
  6. Environments
  7. Functional Programming
  8. Metaprogramming
  9. Performance/Profiling/Memory
  10. C++ and Rcpp

Important Dates

  • 03/08/2022: Spring Break, no class.
  • 04/26/2022: Spring Study Day, no class.
  • 05/03/2022: Final exam period (group presentations).

Late Work Policy

  • I expect the vast majority of your homeworks to be turned in on the day they are due.

  • But let me know a few days ahead of time if you need a couple days.

  • Don’t abuse this policy, or I’ll change it.

Sharing Course Content:

  • Students are not permitted to make visual or audio recordings (including livestreams) of lectures or any class-related content or use any type of recording device unless prior permission from the instructor is obtained and there are no objections from any student in the class. If permission is granted, only students registered in the course may use or share recordings and any electronic copies of course materials (e.g., PowerPoints, formulas, lecture notes, and any discussions – online or otherwise). Use is limited to educational purposes even after the end of the course. Exceptions will be made for students who present a signed Letter of Accommodation from the Academic Support and Access Center. Further details are available from the ASAC website.

Academic Integrity Code

  • Do not post homeworks online (e.g. Chegg, Course Hero, etc).

  • Standards of academic conduct are set forth in the university’s Academic Integrity Code. By registering for this course, students have acknowledged their awareness of the Academic Integrity Code and they are obliged to become familiar with their rights and responsibilities as defined by the Code. Violations of the Academic Integrity Code will not be treated lightly and disciplinary action will be taken should violations occur. This includes cheating, fabrication, and plagiarism.

  • I expect you to work with others and me, and I expect you to use online resources as you work on your assignments/projects. However, your submissions must be composed of your own thoughts, coding, and words. You should be able to explain your work on assignments/projects and your rationale. Based on your explanation (or lack thereof), I may modify your grade.

  • If you use an online resource, please cite it with a URL (this is perfectly fine!). If you do not understand an online resource, but believe it to be useful for a project/assignment, please ask me for help.

  • A short guide for students on how to meet the expectations of the AU’s Academic Integrity Code


National Science Foundation Logo American University Logo Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.