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 80% in 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 assessments are in Canvas and you must log in using your UVA email address. Once you log in, you have 30 days to take the assessments. Most students take 1-3 hours to complete each section. 

  • MSDS Residential and Online Cohorts Starting Fall 2025:
    • April 1: the assessment opens; you will receive an email with access information after matriculating
    • By mid-May: recommended deadline to complete the assessments
    • August 1: deadline to complete module(s) and upload proof of completion certificate(s) to portal
  • MSDS Online Cohort Starting Spring 2026:
    • April 1: the assessment opens; you will receive an email with access information after matriculating
    • By mid-November: recommended deadline to complete the assessments
    • January 5: deadline to complete module(s) and upload proof of completion certificate(s) to portal

The MSDS Programming Assessment will be on the enrollment checklist in the Application Portal. You must upload your certificate(s) of completion to the portal by the deadline or your offer of admission will be rescinded. 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 Close Icon Close

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 Close Icon Close

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.