Course syllabus

The main goal of this course is to give you tools that ease (high-performing and efficient) code development with . The performance side will come as a second part, and the initial tools introduced are also very useful in situations that do not require important computation times.

We will focus the presentation of these development tools on the notion of package. You are already familiar with this notion, as you have already already installed packages from the CRAN for example ! You also know that it is the most standard way in to distribute code and make it available. We will show you that the package is also an excellent tool for developing code.

We will follow the outline below:

  1. Build an package as a useful tool for code development

  2. Leverage git for tracking changes, and GitHub for sharing code, collaborative development, automating tests in a package and broadcast a companion website

  3. Measure computation time

  4. Profile the code

  5. Use Rcpp to optimize what needs to be optimized

  6. Parallelize the code easily

Required tools

To take this course, you will need to have the following softwares installed:

In addition, you will need an active internet connection (e.g.ย through eduroam)

NB: In case you have not the sufficient admin rights on your computer to install some of those tools, you can instead use the service Posit Cloud offered Posit (the company developing RStudio) signing up for their free plan. This will give you access to a remote RStudio session with all the necessary softwares available, leaving you only with the above list of packages to install.

Prerequisites

To be able to follow along this training, you must be comfortable with the following concepts:

  • programming with within the RStudio IDE
  • writing functions in
  • control structures, particularly for loops
  • apply family, and sapply() in particular
  • the calculation of the density for a multivariate Gaussian distribution