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 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. Getting started with Thonny is very easy, but you also have access to lots low-level features, e.g. direct register access using our rp2040hw library.