Education and Teaching

In my current role as a developer advocate I create educational resources for software developers and data scientists, as a natural extension of work I did as a professional educator during my academic career. As much as possible I try to ensure that my material remains publicly available, and on this page I’ve linked to various resources I’ve created.

Making Art from Code

Designed originally as a programming language for academic statistical computing, R is now a mainstream language for data science and analytics. Can it also work as an artistic medium? This workshop provides a hands-on introduction to generative art in R. You’ll learn artistic techniques that generative artists use regularly in their work including flow fields, iterative function systems, and more. You’ll also learn about R packages specialised for generative art. But more than that, you’ll learn how to reuse skills you already have as part of an artistic process: with a little work, ggplot2, dplyr, and Rcpp can become an artist’s best friends. The assumed background is that you’re reasonably comfortable using R and RStudio, and have experience with tidyverse.

Larger-Than-Memory Data Workflows with Apache Arrow

As datasets become larger and more complex, the boundaries between data engineering and data science are becoming blurred. Data analysis pipelines with larger-than-memory data are becoming commonplace, creating a gap that needs to be bridged: between engineering tools designed to work with very large datasets on the one hand, and data science tools that provide the analysis capabilities used in data workflows on the other. One way to build this bridge is with Apache Arrow, a multi-language toolbox for working with larger-than-memory tabular data. This tutorial you teaches the arrow R package for seamless engineering-to-analysis data pipelines. It covers file formats, read/write, data structures, and data manipulation for extremely large data sets. No previous experience with Apache Arrow is assumed.

An Introduction to Data Visualisation in R

Data visualisation is a fundamental research task that is necessary in almost every field of scientific work. The human visual system is a powerful information processing tool, and in practice scientists rely heavily on figures and graphs to make sense of data they have collected. In this class I’ll provide an introduction to data visualisation using the R statistical programming language. No prior knowledge of R is assumed. The class has two parts: the first half will be led by the instructor and based around formal teaching. The second half is self directed, with some input from the instructor. By the end of the class you should have the ability to take a messy data set and produce an elegant, production ready visualisation that cleanly illustrates what the data are saying.

Data Science with R: A Robust Toolkit for Psychological Research

The research toolkit in psychological science has changed a lot in the last decade. Across many areas there is a heightened emphasis on transparency, open access, and a preference for the use of freely available tools. These skills are rarely taught during undergraduate psychology classes, and because research methods classes tend to be statistics heavy, they’re rarely a part of research methodology classes either. This class provides a hands on tutorial in how to use these tools: it covers an introduction to R programming, modern data visualisation and data wrangling, how to structure your projects, version control and how to write professional documents in R. The course is designed for novices, and no preexisting familiarity with these tools and no programming background is assumed.

Complex Human Data Summer School

Researchers from psychology and other disciplines are increasingly relying on computational analyses of large data sets to draw conclusions about human behaviour. This kind of research requires skills that are not often taught as part of the psychology curriculum. In collaboration with colleagues at the University of Melbourne I ran a summer school to help people collect and analyse complex human data, from 2018-2019.

Data Visualisation

This site has links to all the course materials associated with the workshop on data visualisation in R that formed part of the 2019 satRday in Johannesburg meeting. The core of the workshop focuses on creating clean data visualisations with ggplot2, and turning them into animations with gganimate. The workshop is aimed at a beginner to intermediate level. Some prior familiarity with tidyverse would be helpful but not assumed. Materials posted at

Minds and Machines

From 2016-2019 I ran an honours elective class (part of PSYC4103) that provides a gentle introduction to computational modelling of human cognition. The class was structured around a series of case studies covering inductive reasoning, concept learning, decision making and language acquisition. Discussions focus on whether - and how - the comparison between human and the machine learning tells us something useful about the mind. Materials for this class are posted at

Learning Statistics with R

From 2011 to 2015 I taught an introductory statistics class at the University of Adelaide using the R statistical computing language, and wrote my own lecture notes, pitched at undergraduate psychology students. The notes became quite extensive, and are now effectively a book, available at

Cognitive Science

In 2018 I gave this lecture series as part of the Cognitive Science third year subject at UNSW (PSYC3211) which provides an introduction to topics in computational modelling of cognition at an informal level. Materials are available at

R for Psychological Science

Research methods in psychology have traditionally focused on study design and statistical analysis. The R statistical programming language is well-suited to these problems, but it’s also very handy for solving many other problems facing behavioural scientists. These resources were developed to support the programming component to the UNSW 3rd year psychology research internship (PSYC3361). I have taught this class since 2018. Since 2020 I have merged the content with the robust tools material listed above, but the 2018-2019 resources are available at

Perception and Cognition

This is a lecture series I gave as part of the PSYC2071 (Perception and Cognition) class at UNSW from 2016-2018, and provides an introduction to cognitive psychology. The lecture materials present a brief history to the field, and then discuss key ideas in human attention, categorisation and reasoning. The content is available at

Computational Cognitive Science

From 2010-2014, I jointly taught an introduction to computational cognitive science for undergraduate computer science students at the University of Adelaide. The course materials are archived at