Skip to main content

Recommended resources

Courses

Intermediate programming finished in 2024: https://iprogramming.bacpop.org/

Keep an eye on the courses available at Cambridge if you're a PhD student (https://www.training.cam.ac.uk), particularly from the 'Scientific Computing' theme. I strongly recommend 'Unix: Building, Installing and Running Software'. Be careful about some of the more basic courses, they might be too basic. We can discuss any that look interesting or useful to you.

Books

Molecular Evolution: A Statistical Approach, Ziheng Yang, 2014, Oxford University Press

Excellent guide to evolutionary models and phylogenetics, from a statistical and computational view.

An Introduction to Statistical Learning 2nd Edition, James, Witten, Hastie and Tibshirani

Free download: https://www.statlearning.com/. My favourite machine learning/AI primer. 2nd Edition includes a nice chapter on Neural Networks and Deep Learning.

Statistical rethinking 2nd Edition, Richard McElreath

I haven't read this, but apparently a nice introduction to STAN.

Doing Bayesian Data Analysis 2nd Edition, John Kruschke

Good intro to Bayesian statistics, MCMC sampling and some STAN code. Overly long, so I'd suggest just looking at the first section.

Handbook of Statistical Genomics, 4th Edition, Editor(s):David Balding, Ida Moltke, John Marioni

Chapter 36 covers statistical genomics of pathogens.

Websites

| Algorithmica | https://en.algorithmica.org/hpc/ | Optimising code, at a level getting close to how computers work

| Noun project | https://thenounproject.com/ | Logos for talks and software. We have a subscription

| Intro to CUDA | https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/ | https://developer.nvidia.com/blog/efficient-matrix-transpose-cuda-cc/ | Basic sum, then how to do a matrix transpose, showing the main memory optimisations

| How to visualise data | http://eagerpies.com/better-than-minard/

| How to actually visualise data | https://www.annualreviews.org/doi/abs/10.1146/annurev-biodatasci-080917-013424

| GPTs | https://bbycroft.net/llm

Code

| A good start on python packaging | https://gehrcke.de/2014/02/distributing-a-python-command-line-application/

| How linkers work | https://www.lurklurk.org/linkers/linkers.html

| Header only C++ libraries | https://github.com/nothings/single_file_libs

| Intro to rust for C++ programmers | https://fasterthanli.me/articles/a-half-hour-to-learn-rust

| Implementations of various compartmental models | https://github.com/epirecipes

| CUDA packages for biology | https://build.nvidia.com/explore/biology

| Assembly generation for your code | https://godbolt.org/

Videos

| Nice intro to sketching from Ben Langmead | https://www.youtube.com/watch?v=1y9wqQUTvC4 | Many other good videos on Ben's channel

| Convolutions | https://www.youtube.com/watch?v=KuXjwB4LzSA | I also like the various videos on FFTs

| A nice optimisation story based on randomness | https://www.youtube.com/watch?v=4y_nmpv-9lI&t=2s

| Intro to LLMs | https://www.youtube.com/watch?v=lnA9DMvHtfI | https://www.youtube.com/watch?v=LPZh9BOjkQs

| Using LLMs | https://www.youtube.com/watch?v=jkrNMKz9pWU | https://brunomaga.github.io/GPT-lite