All M.S. in Data Science students enrolling Fall 2025 and later will be required to take an assessment to evaluate their level of proficiency in Python and R. You must earn an 85% on each area to pass; those who do not pass will be required to complete a free, asynchronous six-week module in each area in which they need to gain proficiency. 

Incoming students will receive access to the MSDS Programming Assessment after accepting their offer of admission and paying the enrollment deposit. The MSDS Programming Assessment will be on the enrollment checklist in the Application Portal. You will upload your certificate(s) of completion to the portal. Reach out to sdsadmissions@virginia.edu if you have questions.  

The following knowledge, skills, and abilities will be evaluated on the MSDS Programming Assessment: 

Python

Basic Programming Concepts

Working from the Command-line

  • Distinguish between major operating systems.
  • Recognize the command line of a Unix-family operating system.
  • Use basic shell commands for navigating and modifying directories and files.

Git and GitHub

  • Distinguish between Git and GitHub.
  • Perform basic Git operations, such as clone, add, commit, push, and pull.
  • Perform basic GitHub operations, such as repository creation, fork, pull request, and fetch upstream.

Programming Editors

  • Be able to use a standard programming editor, such as VS Code or JupyterLab, for coding Python and RStudio for R. 
     

Python

Python Basics

  • Determine which version of Python you are using on a machine.
  • Locate where the Python interpreter is installed on a machine.
  • Use the print function.
  • Write a simple “Hello, World!” .py file.
  • Execute a Python program file from the command line.
  • Read and write files from disk within a program.

Variables, Data Types, and Data Structures

  • Describe and use Python’s basic data types: integers, floats, booleans, strings, and complex numbers.
  • Define literal representations of each data type.
  • Cast data from one type to another.
  • Inspect the data type of a variable.
  • Describe and use Python’s built-in data structures: lists, dictionaries, tuples, and sets.
  • Describe and use the basic operators associated with each data type and structure.
  • Initialize new data structures.
  • Define the difference between mutable and immutable data structures.
  • Add and remove data from mutable data structures.
  • Perform variable interpolation with Python strings.

Syntax and Grammar

  • Write valid variable names.
  • Assign values to variables.
  • Define expressions and statements.
  • Use proper indentation for code blocks.

Control Structures

  • Write for-loops, while-loops, and describe their general use cases.
  • Employ conditional logic statements that return boolean values and structure program flow.
  • Define exit conditions of for- and while-loops.
  • Use the proper keywords to break out of loops and skip iterations.
  • Use list, dictionary, and set comprehensions for compact looping.
  • Create and use iterators.

Functions

  • Access common built-in functions, such as print and open.
  • Import Common libraries, such as math and random.
  • Import and alias attributes (function, classes, variables) from a module.
  • Create user-defined functions.
  • Understand variable scope, including global, local, and nonlocal.
  • Create and use lambda functions.
  • Understand general design principles for functions.
  • Recognize and write a recursive function.

NumPy

  • Describe key features of NumPy array design.
  • Recognize NumPy data types.
  • Perform basic array indexing, slicing, and broadcasting.  
  • Perform boolean indexing.
  • Perform fancy indexing.
  • Perform basic arithmetic operations with arrays.
  • Understand and perform universal and vectorized functions.

Pandas

  • Describe key features of Pandas DataFrame and Series design.
  • Understand role of indexes in Pandas data structures.
  • Perform indexing using loc and iloc.
  • Perform column selection and creation.
  • Apply vectorized functions to Pandas data structures.
  • Reshape, transpose, stack, unstack Data Frames.
  • Summarize Pandas Data Frames with value counts and groupby.

R

R Basics

  • Use RStudio to edit and run R programs.
  • Understand the essential differences between R and Python syntax.
  • Understand R’s rules for naming variables.
  • Describe and use R’s basic data types: logical, character, integer, float, and complex.
  • Assign values to variables with R’s assignment operator.
  • Understand the difference between R’s assignment operator and assigning values to parameters in functions.
  • Describe and use R’s basic data structures: vector, matrix, list, and dataframe.
  • Extract values from data structures with indexes, slicing, and boolean indexing.
  • Create for- and while-loops with conditional statements.
  • Produce scatterplots, bar graphs, and histograms with the plot function.
  • Summarize data in data frames with the table function.
  • Create user-defined functions.
  • Install and use libraries.
  • Understand how R handles namespaces.

The Tidyverse and Dplyr

  • Awareness of the Tidyverse and how it differs from basic R.
  • Define the expression “tidy data.”
  • Describe and use Tibbles.
  • Describe and use the basic data transformation verbs: select, filter, arrange, rename, mutate, and summarize etc.
  • Use the pipe operator to chain functions together.
  • Describe and use the split-apply-combine pattern for generating aggregate statistics on data sets.

Visualization

  • Understand the layered architecture behind the grammar of graphics approach to visualization.
  • Create layered graphics using the plus operator.
  • Create graphics that visualize data from Dplyr operations.
  • Create and render RMarkdown documents. 

MSDS Residential Dates & Deadlines

MSDS Residential, entering Fall 2025

  • March 10 – April 15: Incoming students will receive access to the MSDS Programming Assessment within 1-2 business days of paying their enrollment deposit
  • May 15: Deadline to take the assessment*
  • July 1: Deadline to complete all modules*

Those who enroll after May 15, such as those admitted from the waitlist, must take the MSDS Programming Assessment within two weeks of paying their enrollment deposit; the final deadline to complete all modules is August 1.*

*If you do not complete these steps by the listed deadline, your offer of admission will be withdrawn.

MSDS Online Dates & Deadlines

MSDS Online, entering Fall 2025

  • March 10: All incoming students who previously accepted their offer of admission and paid their enrollment deposit will receive an email notifying them that the MSDS Programming Assessment is open*
  • After March 10: All incoming students will receive access to the MSDS Programming Assessment within 1-2 business days of paying their enrollment deposit
  • June 15: Deadline to take the assessment*
  • August 1: Deadline to complete all modules*

*If you do not complete these steps by the listed deadline, your offer of admission will be withdrawn for that term, and you will be asked to defer to Spring 2026.

 

MSDS Online, entering Spring 2026

  • All incoming students will receive access to the MSDS Programming Assessment within 1-2 business days of paying their enrollment deposit
  • November 15, 2025: Deadline to take the assessment*
  • January 5, 2026: Deadline to complete all modules*

*If you do not complete these steps by the listed deadline, your offer of admission will be withdrawn for that term, and you will be asked to defer to Fall 2026.