Course information


Course time & location


Instructor & office hours

  • Prof. Marisa Eisenberg (she/her)
  • Email: marisae@umich.edu
  • Office Hours
    • Tuesdays & Thursdays after class - 2:30 - 3:30 on Tuesdays, 2:30 - 3pm on Thursdays
    • Additional office hours by appointment
    • Same zoom link as class

Syllabus

  • Syllabus - includes course overview, grading information, prerequisites, etc.


HW/Lab information


Course topics

Topics are subject to change and rearrangement! (We may also not get through all the topics listed)

Lecture slides, links to assignment instructions, and readings will be posted in each topic as we get to them.


1. Introduction to agent-based models (ABMs)

Topics covered: overview of basic concepts, coding intro, why model?, intro to ABMs and their pros/cons, philosophy of complex systems, emergent behavior/phenomena, classic examples in biological, social, and physical systems, etc.






2. Cellular automata

Topics covered: overview of basic cellular automata (CA) concepts, emergent behavior, classes of CA, examples of CA (e.g. Conway’s Game of Life), coding and analysis methods for CA, applications




3. Networks





4. Parameter sweeps, sampling, and sensitivity analysis



  • Lecture 12: Model Analysis (4/1/21)

5. Advanced/additional topics

  • Potential Topics:
    • parameter estimation, MCMC
    • parameter identifiability & uncertainty
    • model comparison (e.g. AIC/BIC/etc)
    • introductory decision/game theory
    • parallelization in Python
    • classic example complex systems models (Kuramoto oscillators, Sugarscape, etc.)
    • more advanced environments (e.g. GIS)
    • active subspaces, dimension reduction (not sure if there will be time)

  • Lecture 13: Introduction to parameter estimation (4/6/21)
    • Thinking about the challenges of linking data with models, and what these approaches can (and can’t) tell you
    • Slides



  • Lecture 16: Identifiability


  • Lecture 18: ABM Environments
    • Slides
    • Mapping tutorials
      • Making 3 Easy Maps in Python - the point map example here may be particularly useful for visualizing agents on a map (where you can define their x,y locations in terms of e.g. latitude and longitude). This uses the module folium, which is one of the common mapping packages.
      • Making maps in Basemap This is another package for mapping, and you can similarly do point maps and plot other features on the map. The syntax for basemap seems pretty straightforward, so this may be a useful package to consider also. There’s an additional tutorial for Basemap here also.

Additional useful info

Useful links and extra readings will be posted here.

Coding and typesetting resources

Overall Coding Resources

ABM Resources

Math Resources


Books used in the course


Interesting papers and extra readings