Advanced Course: R programming and development

24.-25. January 2013 (Thursday-Friday), EMBL Heidelberg
by the Centre for Statistical Data Analysis
(part of the EMBL centres for Bioinformatics / Bio-IT)

Teachers: L. Gatto, R. Stojnic (Univ. of Cambridge)
Organiser: W. Huber

R is a language and computational environment for statistics, advanced data analysis, machine learning and visualisation; it is the most widely used programming language in bioinformatics.

This course is designed for users who have experience with writing R scripts, and who now want to advance one step further, into producing more durable and robust software projects and code that is usable by others.

The first part of the course will introduce object-oriented programming using R's S3 and S4 system and describe how to define classes, generic functions and methods. It will also present how to write efficient and elegant code using vectorisation, parallelization, and the functional programming paradigm. The second part will focus on R package development, including documentation, debugging, code profiling and unit testing. These topics will be illustrated using a small real-life bioinformatic case study. Participants will produce, at the end of the course, a fully fledged Bioconductor compliant R package.

Pre-requisites: Good knowledge of R and active programming experience. Familiarity with object-oriented programming and LaTeX is helpful, but not essential.

The course will take place on Thursday and Friday 24.-25. January 2013 at EMBL Heidelberg, room 202. Participants are expected to bring their own laptop with R version >=2.15.2 installed. Participation is free for people working at EMBL. Participation needs to be confirmed by the group leader, and for cancellations where attendees do not provide replacement, a no-show fee of 100 Euro will be charged.


The number of participants is limited to 30. Registrations will be processed on a first-come first-serve basis. Registration before 23 November 2012 is recommended, since after that any remaining places will be opened to outside participants. Register here.

Course content


Day 1

09:00 - 10:30Introduction: OO programming and working example
11:00 - 12:30S3 OO framework
14:00 - 15:30S4 OO framework
16:00 - 17:30OO continued. Functional programming, vectorization, parallelisation. Wrap-up.
19:00 - Social event / dinner.

Day 2

09:00 - 10:30R packages: introduction and structure
11:00 - 12:30R documentation: Rd files, in-code docs and vignettes. Let's build our own functional package
14:00 - 15:30Testing, debugging and profiling code
16:00 - 17:30Calling C[++] code; Distribute your package; Wrap-up

Contact: Wolfgang Huber