Phylogenetic Software Development Tutorial (version 1)

Important: this version of the tutorial is now obsolete. You probably want to be using the latest version.

This tutorial teaches you how to create C++ software that performs Bayesian phylogenetic analyses. This tutorial was written to help my own students develop software that they can later modify for their own purposes, but I hope it is more broadly useful.

The tutorial assumes you have some experience with C++ programming

All tutorials must make some assumptions about the student’s background. This tutorial is designed for those with some background in C++ programming and thus does not explain in detail how C++ works. If you have never written anything in C++, you will still end up with a working program and may, given sufficient motivation, find it useful as a vehicle for learning C++.

The tutorial assumes that you have some experience with Bayesian phylogenetics

This tutorial will be most useful to a biologist who has experience with Bayesian phylogenetics software such as MrBayes/RevBayes or BEAST and is interested in developing new phylogenetic methods/models.


The software that you will create falls under the permissive open-source MIT License.


This tutorial was developed as a broader impact project associated with National Science Foundation grant DEB-1354146 (Estimating the Bayesian phylogenetic information content of systematic data, PI Paul O. Lewis).

Get started!

The menu in the sidebar on the right will appear on every page of the tutorial and list each step in order. Use the sidebar menu to navigate through the tutorial, starting with Create a C++ project, which will help you set up a development environment on either Windows or Mac.