# CS50's Introduction to Programming with R

- Institution: Harvard University
- Department: CS50
- Taught by: Carter Zenke, David J. Malan
- Level: Undergraduate
- Language: English
- Subjects: Computer science
- Source: [CS50 at Harvard](https://cs50.harvard.edu/r/)
- Licence: [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) (Non-commercial use only.)
- Syllabus: [at the source](https://cs50.harvard.edu/r/syllabus/)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

An introduction to programming using a language called R, a popular language for statistical computing and graphics in data science and other domains. Learn to use RStudio, a popular integrated development environment (IDE). Learn to represent real-world data with vectors, matrices, arrays, lists, and data frames. Filter data with conditions, via which you can analyze subsets of data. Apply functions and loops, via which you can manipulate and summarize data sets. Write functions to modularize code and raise exceptions when something goes wrong. Tidy data with R’s tidyverse and create colorful visualizations with R’s grammar of graphics. By course’s end, learn to package, test, and share R code for others to use. Assignments inspired by real-world data sets.

Whereas CS50x itself focuses on computer science more generally as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50R, is entirely focused on R. You can take CS50R before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!

Watch an introduction

How to Take this Course

Even if you are not a student at Harvard, you are welcome to “take” this course for free via this OpenCourseWare by working your way through the course’s seven weeks of material. For each week, follow this workflow:

flowchart TD A\[Watch Lecture\] --> |recommended|B\[Watch Shorts\] A --> C B --> C\[Submit Problem Set\]

And then submit the course’s final project.

To submit the course’s problem sets and final project for feedback, be sure to create an edX account, if you haven’t already. Ask questions along the way via any of the course’s communities!

## Lectures

1. [Representing Data](https://invisiblenetwork.ai/learn/cs50/r/ee1f61c0dbb7) (Video)
2. [Transforming Data](https://invisiblenetwork.ai/learn/cs50/r/aa26d5c15386) (Video)
3. [Applying Functions](https://invisiblenetwork.ai/learn/cs50/r/aff7a0f313da) (Video)
4. [Tidying Data](https://invisiblenetwork.ai/learn/cs50/r/4fa8d120aeea) (Video)
5. [Visualizing Data](https://invisiblenetwork.ai/learn/cs50/r/eb486df769ec) (Video)
6. [Testing Programs](https://invisiblenetwork.ai/learn/cs50/r/69f3a8472148) (Video)
7. [Packaging Programs](https://invisiblenetwork.ai/learn/cs50/r/b4522f5ce453) (Video)
