Learning resources for interdisciplinary scientists

This page contains a opinionated guides to cultivating quantitative/analytical skills for chemists, especially those interested in interdisciplinary research. It is meant to be a live resources, so if you would like anything included or have any suggestions please feel free to reach out.

Programming for chemists

Programming can be a skill as well as a craft. This guide is squarely aimed at facilitating the former where lots of online resources target existing programmers seeking to hone their skills and make their craft more fun.

The basics

Languages: For most people and unless your work requires a specific language, I recommend building proficiency in Python along with bits of HTML/CSS/Javascript rather than learning bits of many languages.

Installing Python: There are many ways to install Python. Here are some recommendations but feel free to use what works for you.

On Windows: First install the Windows Terminal and winget (often already available on modern Windows versions), then use winget install vscode python to install everything else.

On macos: First install homebrew then use brew install python vscode to install the rest.

On Linux: Feel free to use your system Python interpreter as long as it’s fairly recent (3.10+ recommended).

Learning Python itself: I would resist the temptation of trying to learn the entire language in one sitting/day/week. What tends to work best is learning by applying Python either to a research problem, however small, or coming up with a toy problem to solve using code — how about a Slack/Telegram bot to monitor your experiment or Google Sheet and send you an alert when something happens? One of my first Python programs was a very hacky go at using the Hückel method to calculate the energy levels of conjugated hydrocarbons.

There are lots of good online resources for learning Python, most of them free. A few examples:

Editor: Use VS Code if in doubt. It is easy to get started with an very powerful. It also has built in support for Jupyter Notebooks.

Python in practice

Numerical computing: Virtually all scientific use-cases will touch a numerical library like numpy, with support for fast vector/matrix/tensor operations and advanced mathematical functions.

Data analysis: Most of us will have to do some data analysis. I would definitely recommend learning the pandas library for this. There are more efficient/powerful options but most of the time pandas gets the jobs done.

Code notebooks: Jupyter notebooks are an excellent option for exploratory coding, iterating on ideas, and playing with data. VS Code has built-in support for these; you just need to give your files the .ipynb extension.

Python virtual environments: For anything but the most basic tasks, using virtual environments along with a tool like uv is highly recommended. If using Jupyter notebooks, VS Code automatically offers to create/activate a dedicated virtual environment when you open a notebook.

Using Python in the lab

MicroPython: If your experiments involve controlling any electronic devices, MicroPython is an excellent choice. It runs on wide range of small microcontroller boards like the Raspberry Pi Pico, ESP32/ESP8266, and some Arduino boards. The easiest way to get start is using the Pi Pico (or any other board powered by the Pi Pico’s RP2040 chip) with the Thonny editor, which has built in support for MicroPython.

Raspberry Pi Pico: The Pi Pico is an inexpensive (£4) and widely available board featuring the Raspberry Pi RP2040 microcontroller that can be purchased with optional WiFi connectivity (Pi Pico W, £6). Getting started is very easy using the open source Thonny editor, but you also have access to lots low-level features, e.g. direct register access using our rp2040hw library.

Pi Pico’s board layout (pinout).

For beginners, the Raspberry Pi Foundation has a very handy getting started guide that you can buy, although an earlier version is available as a PDF free of charge.

Pimoroni Tiny 2040: The Tiny 2040 is our favourite little microcontroller board. It is powered by the same RP2040 chip as the Pi Pico but has a much smaller footprint, a very useful RGB LED, more intuitive pin layout (pinout) than the Pico, and a USB type C connector. You can buy a read-to-use board with 8 MB of program memory (effectively infinite for its intended applications) and header pins soldered for £11.

Pimoroni Tiny 2040’s board layout (pinout).