Program

 

Monday 25th. 09:30-17:30

 

Session 1: Data Structures


In the first session we will survey data structures in R. We'll cover assignment, indexing and programmatic interaction with a number of types of objects, including vectors, matrices, lists and data frames.

 


Session 2: Conditionals and Iteration


Building on the data structures overview, we'll explore approaches for implementing logic, testing conditions and iterating over R objects. The material will include comparisons via operators, looping, vectorization, "apply" functions and control flow.

 

 

Tuesday 26th. 09:30-17:30

 

Session 3: Functions


This session will introduce essentials of writing functions in R. We will discuss methods for passing arguments, establishing return values and handling errors. We'll also spend time covering R environments, as well as the system of searching for objects from within a function and beyond.

 


Session 4: Debugging, Performance and Optimization


Writing a function is one thing ... fixing semantic and syntactic errors is another altogether. We'll dive into this topic by way of looking at tools that are built into R and RStudio for debugging code. This lesson will also cover methods for diagnosing performance roadblocks and profiling code.

 

 

Wednesday 27th. 09:30-17:30

 

Session 5: Object Oriented Approaches


In the context of data analysis, R is most commonly used as a functional programming language. This session will introduce methodology for object oriented programming (OOP) in R. The material will include how to define S3 and S4 classes, as well as how to establish methods for generic functions.

 


Session 6: Version Control with Git and Github


Git is a powerful program for version control and collaboration. This session will introduce workflows for using Git and Github, which is a popular platform for managing projects and distributing code. We'll pay particular attention to how these tools are implemented in the context of R programming and package development.

 

 

Thursday 28th. 09:30-17:30

 

Session 7: Package Development Tools (Part 1)


In this session, we'll survey tools, techniques and use-cases for R package development. In addition to version control tools (i.e. Git), there are a quite a few packages, frameworks and convenient integrations with the RStudio IDE that can facilitate the package development workflow. We will focus on package structure, documentation, building and checking, handling dependencies and unit testing.

 

 

Session 8: Package Development Tools (Part 2)


We'll continue to explore tools for package development in this lesson. In particular, we'll discuss how to implement more robust checks, continuous integration methods, vignettes, protocols for releasing a package and best practices for including data.

 

 

Friday 29th. 09:30-17:30

 

Session 9: Package Development in Practice


With a baseline understanding of tools for package development, we'll explore several case studies that further enumerate the motivations and practical applications of developing your own package. This session will also feature time allocated for individualized research and development on a project of your choosing.

 


Session 10: Next Steps


R is a dynamic resource, with new features being added and new trends in how it is used as a programming language. We'll conclude with an overview of emerging areas of R development, including some specific technologies like htmlwidgets and Shiny. This session aims to embolden attendees with the necessary perspective to follow new developments and implement the skills from the course in future projects.