Can anyone recommend a good book(s) or journal article(s) on object-oriented program design patterns/principles and simulation modeling of diseases?

I received the above question this morning by email. It was sent to a SIAM list service I belong to. I don't know the asker, and I don't know a good answer either. I figured, though, if some people here had good suggestions, either theoretical or practical, I could send him the link to this question.


Edit: I sent the asker a copy of this question, with Artem K's answer visible. He responded, saying thanks.

  • 1
    $\begingroup$ What do you mean by modelling of diseases? If you mean modelling how diseases spread then cellular automata could be very useful. Example,here. $\endgroup$ – Pratik Deoghare Jul 5 '11 at 19:08

My answer addresses the general theory of disease (and similar) modelling and only briefly touches on the implementations. For simulations (as opposed to analytic work, which usually uses evolutionary game theory or SIR models) the popular paradigm is agent-based modeling (ABM). A good recent book on agent-based modelling from a CS perspective is:

Yoav Shoham and Kevin Leyton-Brown [2009], "Multiagent systems: algorithmic, game-theoretic, and logical foundations", Cambridge University press.

A big general conference of agent-based modeling is AAMAS (links to 2011 and 2012). They don't specialize in disease modeling in particular, but a lot of the techniques they use can be applied there.

In terms of software for doing rapid prototyping of ABMs, a popular one is NetLogo. This seems to be particularly popular in the social sciences, where they do slight variations of standard epidemic models to describe certain social processes.

Currently, it seems like the focus of theoretical work in this field (and this is obviously biased by my own interests) is to consider environments where agents are limited in their interactions. If you just have agents meet randomly, then ABMs are usually overkill and things can be done analytically. However, if there is some interesting network structure (fixed or dynamic) to the interactions (as there often is in real life) then ABMs become an essential tool. A fun recent book that discusses some of these ideas (once again from a CS perspective) is:

David Easley and Jon Kleinberg [2010], "Networks, crowds, and markets: Reasoning about a highly connected world," Cambridge University press. (a draft is available online)


If the disease you are interested in is zombie-ism, then you can look at the seminal paper:

The conclusion, jumping to the punchline, is that if a zombie infection ever occurs, we're screwed.

An agent-based framework for performing such simulations has also been published:

Perhaps more interestingly, though I can hardly imagine, are the references in these papers. They point to many varied techniques for simulating zombie and other infections.

There is also a lot of work on viruses spreading through social networks (which surprisingly enough is applicable to computer viruses spreading through online social networking sites). Two of many papers available on Arxiv are Affinity Paths and Information Diffusion in Social Networks and Viral Processes by Random Walks on Random Graphs. The book cited by the other reference and a similar one called Networks by Mark Newman have chapters covering the topic too, though without the zombies.

  • $\begingroup$ Hahahahaha!!!!! $\endgroup$ – Aaron Sterling Jul 6 '11 at 21:48
  • $\begingroup$ I thought that paper was hilarious when I first read it. I wanted to mention it in my answer, but went with the serious approach. I am glad someone mentioned it :D $\endgroup$ – Artem Kaznatcheev Jul 10 '11 at 6:36
  • $\begingroup$ @Dave, your answer is now immortalized $\endgroup$ – Aaron Sterling Jul 17 '11 at 18:12
  • $\begingroup$ @Aaron: I feel honoured. $\endgroup$ – Dave Clarke Jul 17 '11 at 18:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.