Effective Computing is about improving your skills and adopting Best Practices to help make you a better programmer, and a better scientist. This is a curated short list of resources to help you achieve these aims.
We welcome community contributions. If you have a suggestion or comment, please post an Issue.
-
A guide to reproducible code in ecology and evolution: skills and tips for making your code more reproducible. (See also "A Guide to Data Management in Ecology and Evolution.")
-
Jupyter notebooks. See here for the list of >40 programming languges supported by Jupyter notebooks.
-
Embedding math in webpages: MathJax.
-
Creating a "permanent resource" for your project: Zenodo; Data Dryad.
-
A short tutorial by Karl Broman on creating a website from Markdown using Github Pages. See also this short tutorial on creating a website using Github and Jekyll.
-
The Practical Programmer, a book giving practical tips for software development.
-
Jeff Leek's guide to developing R packages (cross-listed below).
-
D3 ("Data-Driven Documents").
-
It is important to choose colors wisely so that they are visually distinguishable by most people.
-
CRAN.
-
Efficient R Programming, see in particular Efficient set-up.
-
Software for Data Analysis: Programming with R by John Chambers.
-
Unofficial Rcpp documentation: a reference for Rcpp all in one place.
-
Jeff Leek's guide to developing R packages (cross-listed above).
-
Tutorials on a variety of topics in R, from basic to advanced.
-
Google's R programming style guide aimed at making R code easier to read, share and verify.
-
Data Analysis for the Life Sciences is available or free and all the examples and data anlyses are done in R. See here for the R Markdown source in the book.
-
STAT Labs: Mathematical Statistics through Applications uses R in its data analysis examples.
-
Generalized Linear Models course at Princeton University with detailed illustrations of using generalized linear models in R.
-
R tutorials available from the Institute For Quantitative Social Science at Harvard.
- Python tutorials available from the Institute For Quantitative Social Science at Harvard.
-
Fast Tack to Julia: a quick and dirty overview of Julia.
-
The Julia Express: a concise Julia language introductory manual for programmers.
-
Julia Manual: the official documentation for the Julia Language.
-
Explanation of the difference between Anaconda, conda and Miniconda.
-
Well-maintained Linux guides, including the Advanced Bash-scripting guide. Appendix B of the Advanced Bash-scripting guide is a useful reference card.
-
Julia Evans' Bash scripting quirks & safety tips: an accessible primer on writing bash scripts.
-
explainshell.com: resource for understanding shell scripts.
-
ShellCheck find bugs in your shell scripts.
-
TLDR pages: shell commands reference by example.
-
Mac OS X Setup Guide for development. More setup advice.
-
Some more recommended practices: Noble, 2009.
-
Licenses for open source projects: choosing a license; how to add a license to a project; licensing data.
-
Ince et al (2012) The case for open computer programs.
-
Morin et al (2012) Shining light into black boxes.
-
R. D. Peng (2011) Reproducible Research in Computational Science.
-
The state of Jupyter by Fernando Perez and Brian Granger: How Project Jupyter got here and where we are headed.
Copyright (c) Peter Carbonetto, 2017
This work is licensed under a Creative Commons Attribution 4.0 International License.
You must give appropriate attribution: mention that your work is derived from work that is Copyright (c) Peter Carbonetto and, where practical, linking to this Github repository; provide a link to the license; and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
People who have contributed to these materials: John Blischak, Peter Carbonetto, Matthew Stephens.
*Title adapted from Effective Computation in Physics.