Complexity Science is an approach to modeling systems using tools from discrete mathematics and computer science, including networks, cellular automata, and agent-based models. It has applications in many areas of natural and social science.
Python is a particularly good language for exploring and implementing models of complex systems. In this tutorial, we present material from the draft second edition of *Think Complexity*, and from a class we teach at Olin College. We will work with random networks using NetworkX, with cellular automata using NumPy, and we will implement simple agent-based models.