Complexity Science
Olin College
Fall 2017

This class is primarily about complexity science, but it is also about data structures and algorithms, intermediate programming in Python, computational modeling, and the philosophy of science.

Complexity science
Complexity is an interdisciplinary field—at the intersection of mathematics, computer science and natural science—that focuses on discrete models of physical and social systems. In particular, it focuses on complex systems, which are systems with many interacting components.

Data structures
A data structure is a collection of data elements organized in a way that supports particular operations. For example, a Python dictionary organizes key-value pairs in a way that provides fast mapping from keys to values.

An algorithm is a process for performing a computation. Designing efficient programs often involves the co-evolution of data structures and the algorithms that use them. For example, in the first few chapters I present data structures that implement graphs and graph algorithms based on those data structures.

Computational modeling
A model is a simplified description of a system, used for simulation or analysis. Computational models are designed to take advantage of cheap, fast computation. We use Python as the main platform for implementing computational models, though you are welcome to use other platforms for your projects.

Philosophy of science
The experiments and results in this class raise questions relevant to the philosophy of science, including the nature of scientific laws, theory choice, realism and instrumentalism, holism and reductionism, and epistemology.

Complex systems include networks and graphs, cellular automatons, agent-based models and swarms, fractals and self-organizing systems, chaotic systems and cybernetic systems.

This class allows students to explore a set of topics and ideas they might not encounter otherwise, practice programming skills in Python, and learn more about data structures and algorithms (or review material that might have been less engaging the first time around).


Instructor: Allen Downey

Meetings: Tuesday & Friday 9:00am to 10:40am, AC326.