Interpreting population interactions as contact networks provides powerful mathematical and computational frameworks for modeling infectious diseases. This course introduces network concepts (e.g., nodes, degree, clustering, and modularity), and analytical and simulation-based approaches to contact network epidemiology. We will discuss both idealized and empirical networks and how modeling assumptions affect the tractability of different methods. Students will use simple analytical models to predict disease properties such as threshold conditions, final sizes, epidemic probability, and epidemic dynamics. They will use the Python programming language and NetworkX software library to represent and analyze networks, construct epidemic simulations, and model various intervention strategies. Previous programming experience is helpful but not required.