2016-02-25-adv-programming-EMBL
2016-02-25-adv-programming-EMBL copied to clipboard
More robust R programming, testing and debugging
R debugging and robust programming
Short link to this page: http://bit.ly/advrEMBL2016
25-26 February 2016 (Thursday-Friday), EMBL Heidelberg
Instructors: Laurent Gatto, Robert Stojnic (University of Cambridge)
Organiser: Wolfgang Huber (EMBL)
This two-day course will teach participants debugging techniques and good practice in writing reliable, robust code. The material will provide the opportunity to gain experience and understanding of how to identify, resolve, and avoid bugs, in order to produce publication-quality code. The course will be taught using R and will be driven by many practical exercises. Course outline
The material will focus on:
- debugging, to fix problems with code
- defensive programming - writing effective tests to detect bugs
- profiling and optimisation of code
Pre-requisites
The course is aimed at those with experience of scripting, who want to learn more about writing robust and efficient code and who may want to develop and release packages in the future.
Content
Part I:
- Coding style(s)
- Interactive use and programming
- Environments
- Tidy data
- Computing on the language
Part II: Functional programming
- Functions
- Robust programming with functions
- Scoping
- Closures
- High-level functions
- Vectorisation
Part III: Debugging
- Defensive programming
- Debbugging: techniques and tools
- Condition handling: try/tryCatch
- Unit testing
Part IV: Performance
- Benchmarking
- Profiling
- Optimisation
- Memory
- Rcpp
Other topics
- Packages and documentation
- Reproducible research and vignettes (
Rmarkdown) - Source code versioning with (for example) git and GitHub
- Automation with (for example)
Make
See the TeachingMaterial repository for content.
References
- Previous courses and here.
- Advanced R, Hadley Wickham.
- The R Inferno, Patrick Burns.
- An Introduction to the Interactive Debugging Tools in R, Roger D. Peng.
- R Programming for Bioinformatics, Robert Gentleman.
License
This work is licensed under a CC BY-SA 3.0 License.