TeachLab with Justin Reich

Modeling the Spread of a Virus with Daniel Wendel

Episode Summary

This week on TeachLab, Justin Reich is joined by Daniel Wendel, Research Manager and Software Developer of the MIT Scheller Teacher Education Program / Education Arcade. They discuss the importance and caveats of modeling, their use in the classrooms, and Daniel’s most recent collaboration project “Modeling the Spread of a Virus”, an interactive model designed to be used by teachers and parents for a conceptual understanding of how a virus spreads in a community, and how the individual can affect the collective. Learn more at www.virusmodel.org

Episode Notes

This week on TeachLab, Justin Reich is joined by Daniel Wendel, Research Manager and Software Developer of the MIT Scheller Teacher Education Program / Education Arcade. They discuss the importance and caveats of modeling, their use in the classrooms, and Daniel’s most recent collaboration project “Modeling the Spread of a Virus”, an interactive model designed to be used by teachers and parents for a conceptual understanding of how a virus spreads in a community, and how the individual can affect the collective. Learn more at www.virusmodel.org

“...one of the things with emergent models is that if you don’t understand the rules behind it, you might just think we just put those emergent things into the model. Being able to see in the back of the house, you can see those rules were never programmed into this model, it just kind of happened as a result of the other rules we did program into the model.”


Note to the audience:

The Teaching Systems Lab and the TeachLab team would like to thank all of our audience for their patronage as we attempt to shift our production and content in the light of the COVID-19 pandemic. We think it is of the utmost importance to continue distributing as much content as we can, and as widely as we can, to assist those who are in need of information in these difficult times. We are working to improve the quality of our content with these new constraints and get back to a more regular scheduling. Thank you for your patience.


Resources and Links

Visit Modeling the Spread of a Virus

Learn more about the STEP/Ed Arcade

Learn more about Starlogo Nova

Learn more about Teachers with GUTS





Join our course on edX!

Becoming a More Equitable Educator: Mindsets and Practices


Produced, edited and mixed by Garrett Beazley


Follow Us On:




Episode Transcription

Justin Reich:                 From the home studios of the MIT Teaching Systems Lab, this is TeachLab. I'm your host, Justin Reich. Today we're talking with Daniel Wendel about modeling, complex systems and modeling the coronavirus. Daniel, thanks so much for joining us today.

Daniel Wendel:             Hello. Thanks for having me.

Justin Reich:                 Daniel, how did you find yourself at MIT studying how students learn from models?

Daniel Wendel:             Sure. I started as an undergraduate student at MIT, and I was studying computer science and met a professor called Eric Klopfer and started working with him on modeling tools. Then over time, I just became more interested in the modeling and have been able to work with him ever since.

Justin Reich:                 So this may seem like a totally simple question, but I think it's worth unpacking from the beginning. What is a model and how does a computational model differ from other kinds of models?

Daniel Wendel:             Sure. I think everybody knows what a model is. I mean, everyone knows about a model airplane, for example. People have seen an atomic model, which is those balls and sticks that are held together. So a model is just a way of representing something in a simplified way so that we can understand it better. What makes a computational model different is that, instead of something like a model airplane that is meant to look like an airplane but it doesn't fly like an airplane, a computational model is more about replicating the behaviors or representing the behaviors as they change over time.

Justin Reich:                 So the modeling tool that you most work with is one called Star Logo, and people my age will remember the Logo programming language that Seymour Papert developed at MIT. How does Star Logo build off of Logo?

Daniel Wendel:             Right. Logo had a single turtle, and you could give it commands. StarLogo, the star is for many. In StarLogo we can have thousands or even tens of thousands of these computational entities that we call agents, who we can give them commands and then we can see how they interact with each other.

Justin Reich:                 Great. So when I played around with Logo when I was a kid, I would say forward 100, right 90, and more instructions like that. Then the turtle would draw a house. What you can do is sort of randomly sprinkle 1000 turtles on a screen and tell them all to go forward, right 90, until they bump into another turtle and then go backwards 90 and right 10, or whatever it is, and start seeing what kinds of patterns emerge from those different kinds of emergent behaviors of thousands of turtles that are doing things that were programmed, but the combination of their actions is unexpected. Is that a good way of summarizing?

Daniel Wendel:             Yeah. In Logo, you know exactly what you're going to get. I mean, you're trying to get something specific. Whereas in StarLogo, a lot of times we're trying to see what happens that we didn't exactly program in explicitly. It's that emergent behavior, as you said.

Justin Reich:                 So all of this then is about trying to make sense of complex models and complex systems. There's all kinds of complex systems that people encounter in the world and in schools of population growth and biology and all kinds of other things. When you all are trying to use these complex systems models in a curriculum, when you're trying to teach something through a model, what's your kind of go-to pedagogical strategy that teachers or parents can use when thinking about teaching with complex computational models?

Daniel Wendel:             Sure. Well, so there are two important things. One is this connection between the individual and the group. So being able to think about a complex system from the perspective of an individual within that system, and then also thinking about just how the overall system works. One way of getting those two perspectives is through an agent-based modeling experience like StarLogo, where you can think about how the actions of the individual lead to the collective.

Daniel Wendel:             So usually we'll follow what we call the use, modify, create progression. We'll start with a computational model that we've built, and we can have the students run some experiments, do some exploration and learn about the topic that we're modeling that way. After that, once they've gotten a feel for it, we can guide them through modifying that model to represent something in a different way or in a better way. Then finally, as they become more fluent with the tools, they can begin to create their own computational models of complex systems.

Justin Reich:                 So the cool thing about StarLogo is that there's kind of like a front of the house and the back of the house. In the front of the house, you see this space in which a model is unfolding, and you can change a couple of the parameters. But then you can kind of go into the back of the house, in which you see a programming environment, and you can reprogram that environment first by modifying individual lines of code or individual blocks or things like that, and then later on by just starting from scratch, kind of creating your own.

Justin Reich:                 So when you talk about use, modify, create, the use happens when you're in the front of the house kind of playing around with the things. The modify is when you sort of have students dip quickly into the back of the house, change a few things, and then go back in the front of the house and see what it looks like. Then create is kind of starting from scratch or starting from a template to create something new.

Daniel Wendel:             Yeah. I think it's important to have that back of the house even if you're just in the use stage. Because one of the things with emergent models is that if you don't understand the rules behind it, you might just think that we put those emergent things into the model. People are always inventing things that the model did, but being able to see into the back of the house, you can see those rules were never actually programmed into this model. It just kind of happened as a result of the other rules that we did program into that model.

Justin Reich:                 Great. That's a whole new notion of sort of epiphenomenal behavior, that a bunch of individual agents can be programmed to do specific things. Then when each of those individual agents follows their own behavior, there's some kind of group behavior that emerges from that, that wasn't programmed into the model, but emerges from the instructions that were given in the interactions between the individual agents.

Justin Reich:                 Let's get concrete by talking about a coronavirus model because this is something that I think a lot of teachers and parents are thinking about right now. How can we help students understand what's happening with the coronavirus, with closures, with reopenings, with these debates, by trying to model what happens as the virus goes through a population? So you all built a coronavirus model using StarLogo. Where can people find this, and what will it look like when they get to the screen where this model is?

Daniel Wendel:             Sure. So we put together a website called virusmodel.org, and on that website you can see the written description. Then as you scroll down the page a little bit, there is the StarLogo model running on that page. On the top third of that portion, you'll see the 3D simulation area where you can click on some buttons, setup and mingle. That's how you can give these little creatures, these agents, their instructions to begin the simulation.

Justin Reich:                 So the things that you can set up in advance are how many kind of agents are in the little mini-world, and then what else can you modify? How many of them start as infected? How infectious they are? What else can you change to start the model with?

Daniel Wendel:             Right. So the way we've made it is there are 3000 of these agents, and one of them is infected to begin with. You could, of course, go into the code and change that into the back of the house, as you said. We also have three sliders, and those sliders indicate how often people are washing their hands, or when there are little virus particles, how often those get cleaned up. There's another one for people covering their coughs, and that just limits the spread of the virus particles. Then there's a third slider for social distancing. We call it the social circle size.

Justin Reich:                 The social circle size controls how far away the agents stay from each other or ...

Daniel Wendel:             It's pretty funny. It's kind of a pun because these little agents walk around in this world in circles. So if you make that slider big, then they walk in really big circles. So over the course of their day, that means they are going to interact with a bunch of other circles. They're all big. Whereas if everyone's circle is really small, the number of agents that any one agent is going to come in contact with is going to be a lot smaller.

Justin Reich:                 So I, as a user of the model, can then take these 3000 agents. I can set them up to follow these different rules. Maybe one of the most important ones is, am I going to walk in tight little circles sort of near where I started, or am I going to walk in big circles all across the field? So I set some parameters that decide that, and then I run the model. What will I see when I run the model?

Daniel Wendel:             Right. You'll be able to see the spread of the virus. There is one button for mingling, which is just they're all moving around, and there's another button that you can click that shows the trails of the infected agents. Also, when the agents become infected, they turn red. So you'll be able to watch this red boundary kind of moving outward from the middle.

Daniel Wendel:             We also have a little sneeze or cough that happens where some little particles go out from the infected ones. So you'll be able to see as these coughs are going out, whenever they bump into an uninfected agent, then that one will turn red, and you see the spread going from the middle of this little town out to the edges.

Justin Reich:                 So what I can do then with his model is I can set the people to move very little and tell them to cover their mouths and to not sneeze so much. Does the virus still always infect everyone, or is it a model of how slowly it spreads, or are there, in fact, some people that can remain kind of protected in this particular model?

Daniel Wendel:             Right. It's almost always almost everyone gets infected in the model that we've done. But what you can see is that if you're interacting with fewer people, the virus spreads a lot more slowly. So we have a line graph in the corner of the model that shows how many people are currently infected, and you can see how the smaller social circles really flatten that curve, as everyone has been talking about. We can keep the number of infected at any given moment down below what we call the care capacity of that town. Whereas if people have large social circles, then a lot of people will get infected very quickly, and the number of infected will go way past the care capacity.

Daniel Wendel:             But there are some scenarios where you can actually make this virus die out in the model. If you shrink the social circles all the way down, and you crank hand-washing all the way up and covering your cough all the way up, then it is possible to have a person get better before they infect the next person, and then you can actually stop the spread in its tracks that way.

Justin Reich:                 In that little town?

Daniel Wendel:             Right.

Justin Reich:                 So if you were to have teachers or parents using this model to try to help a fifth grader or sixth grader make sense of what's going on in the world right now, what steps would you encourage them to use with this model? Or there are lots of other coronavirus modeling tools that are out there. This is just one example of them. So how would you think about a computational model like this fitting into a sequence of learning that I might do over a couple of days with my kids or something like that?

Daniel Wendel:             Sure. Yeah. I think it's important to remember that as Box said, all models are wrong but some are useful. This model is useful for certain things, and it's really good at looking at the effect of that social circle size on how quickly a virus spreads. So if you've already set up that conversation, then a good place to begin would be to run a series of controlled experiments on this model. Try setting it up with really large social circles and click setup, click mingle and let the model run until it's all done.

Daniel Wendel:             It only takes a couple of minutes, and then you'll be able to see how that curve looked and how many people got infected. Then just go through a series of values of for that social circle and see how reducing the number of contacts that everyone has through the day can really flatten that spread. In the extreme, you can actually be left with people in this town who never got infected at all.

Justin Reich:                 Great. So I might keep a little lab notebook or start with a piece of paper and say, all right, here are the values that I started with. Here are the effects afterwards. Let's see how they change as they grow and shrink, and I can sort of play around with the model that way. Then if I'm working with a student who is sort of really excited about this and I want to start playing around with the functions of the model itself and go into the back of the house, how would I go about doing that and what are some good sort of first things?

Daniel Wendel:             Sure. So lower down on that page, below that 3D area, is the blocks programming area, and that's where the code for this whole model is. There are a couple of interesting things to try. One is to change the population density. Change how many people are in this town and see how that affects things. You can do that by changing the number of people that are created when you click that setup button. That's just a number on one of those blocks.

Daniel Wendel:             Another interesting thing is to think about what it means to have a vaccine. So in a case where you have a vaccine, what you're doing is giving immunity to some portion of the population, however many people can get that vaccine. So you can do some experiments where, instead of making all of the agents yellow to begin with, which indicates that they are uninfected, you could change some of that code so that some portion of them are yellow but some of them start as blue, which is what we use to indicate immune.

Daniel Wendel:             You could actually do a whole series of experiments there on the concept of herd immunity. How many people need to get the virus or be vaccinated before so many people are immune that the virus will not be able to spread through that population?

Justin Reich:                 How hard is it to learn how to change these underlying code blocks? If I already had some experience with a block-based programming language like Scratch or other things like that, would I be pretty ready to jump right into it? If I wanted to learn more, what are some good ways of going deeper into this?

Daniel Wendel:             On our website, the education.mit.edu, we have a link to the project page for StarLogo Nova, and there we have a couple of tutorials. In fact, one of them is an epidemic building tutorial. So that's a great place for people who want to get into the create part of it. They can learn more about the blocks, and we have some ideas for modifications to make. But it's easy enough even without any of that. If you just look at the blocks and just read what they say, it says create 3000 people, and you could change that number.

Daniel Wendel:             So it kind of depends how deep you want to get into it. But being able to make those changes that I just mentioned, you should be able to just scroll down to that block part and look at it and understand it. If you have programmed in Scratch before, you totally have a leg up. It should come fairly easily. The only difference is that in Scratch you make one sprite at a time, and you give that one sprite it's instructions, and then you move onto the next sprite. But as I mentioned in StarLogo, you create thousands of these things. So we have a single tab for the people, and it has one set of instructions. But you just have to understand that those instructions are applied to all 3000 of those agents in the model.

Justin Reich:                 What are the misconceptions that people are most likely to develop looking, say, at the particular model that you developed, and then how do you attend to that? I mean, one of the things we said at the beginning about models is that all models are wrong, some are useful. So this one sounds like it's useful for understanding certain kinds of dynamics. What would be the kinds of things that you would warn kids and parents not to over-read into this particular model?

Daniel Wendel:             Yeah. One of the things that we simplified in this model is the idea of time. So we wanted you to be able to have an interesting experience and learn about things in a fun, short amount of time. So we didn't do a great job of representing how long things actually take.

Daniel Wendel:             So it's not a good idea to run some simulations on this model and say, oh, that's great. That means we just need to keep things close down for two minutes, and then after that everyone will be fine. I mean, in general, all of kind of the numerical accuracy of the model or precision is not there. What we've tried to do is represent the behaviors and the kinds of relationships between social distancing and the spread of the disease or hand-washing and the spread of the disease. But you don't want to run those experiments and come away and say, it's this number of days and you have to wash your hands this number of times. Much more complicated models would be used for those kinds of, I guess, predictive modeling tasks.

Justin Reich:                 Then one of the things that strikes me that older students might be able to do with this is to then start reading a little bit about the conversations happening online amongst epidemiologists to figure out what parts of their models they are still exploring and trying to figure out.

Justin Reich:                 As I understand it, one of the questions that still remains, not precisely estimated, is this unit, this variable called are not, which is if someone gets sick, how many people do they then go on to infect? If the are not of other virus is high, if it's three or four or five, if every sick person goes on and, on average, affects three or four or five other people, then because of exponential growth, that's part of how we see this kind of global pandemic happening, and that the task of social distancing, of all of these other strategies for mitigating the spread of the virus is to get are not below one. So that each person who gets infected goes on affect fewer than one people.

Justin Reich:                 But epidemiologists still don't actually know what the are not of this virus is or how the are not changes in different kinds of places or conditions or other things like that. So they're running a whole lot of studies to be able to get more precise estimates of these kinds of numbers, which they can then plug into their models, which the model that you're generating is trying to sort of develop some conceptual understanding. Epidemiologists are trying to build models that tell us, well exactly how much are we at risk, how much are we at risk of different kinds ... in some ways very similar to yours. How much are we at risk of different kinds of scenarios of social distancing?

Daniel Wendel:             Yeah. It's funny because are not is an emergent phenomenon of that virus, that if everyone were socially distancing themselves to begin with, then the are not would be measured as being lower. So it's kind of a property of the virus, but it's also kind of a property of the society that that virus is traveling through.

Justin Reich:                 I mean, part of what we're having debates on right now in society is, how much does universal mask-wearing reduce the transmissibility of that, which is exactly what your model has a simplified version of around coughing and covering your coughs and other kinds of things. Then what people are starting to do in the real world is say, well, okay, in places in East Asia where it's relative, where because of the history of swine flu and other kinds of things, it's not hard to get the whole population to wear masks, how do we think that affects transmissibility versus Europe where that's less common versus America, those kinds of places?

Daniel Wendel:             Yeah. It's interesting because we just had to program some assumptions into our model. Our cover your cough slider, what that does is changes the number of particles that are generated and how far they go away from people. But at the same time, we just assumed that if a person comes into contact with a particle, then they're going to get infected. But in real life it's much more complicated. There's all this research about what is the viral load that is necessary to actually create an infection, and so what is the probability of infection after coming into contact with some infected droplets?

Daniel Wendel:             So all of these areas that are being researched, we had to make some assumptions and program those in. Those are things that someone who is interested in modeling and who is reading about this stuff could actually go into our model and change some of those things as well. You could change the probability of transmission right there in the collision block between a person and a particle or a droplet, as we call it.

Justin Reich:                 What else would you encourage people, students or parents who are playing around with these models, they use some, they modify some. What other kinds of good learning steps would be in a sort of sequence or progression of a few days of playing around with these kinds of models to learn more? Or for people who are super excited based on what they're learning, where else should they dig in and explore?

Daniel Wendel:             Right. Well, I mentioned our website, education.mit.edu. That's the place where we have posted the link to those tutorials. We have some tutorials on modeling an epidemic. We have some on ecosystems. We also have some just game programming tutorials where you can program a paintball game. So those are good places to develop that literacy, that skill of being able to create the model as you want it to be. I would definitely recommend going there.

Daniel Wendel:             There is also a great project called Project GUTS, and Growing Up Thinking Scientifically. They've created several different models of all kinds of things from the greenhouse effect and global climate change to epidemics, chemistry, a bunch of different things. So also check out Project GUTS. Some of those things are available on, I think it's projectguts.org. Definitely the website teacherswithguts.org is where there are a bunch of teacher resources and forums for teachers who want to support their students in this kind of modeling.

Justin Reich:                 That's great. Well, I think there are a lot of folks out there who are trying to make some study of the coronavirus be part of their at-home curriculum, and these seem like some great tools to help people be able to tackle that. So, Daniel, thanks so much for spending some time with us today, talking us through how we can play around with some computation models on the web and what we can learn from them.

Daniel Wendel:             Thank you so much for having me.

Justin Reich:                 I'm Justin Reich. Thanks for listening to TeachLab. I hope you enjoyed that conversation with Daniel Wendel from MIT's Education Arcade. You can find links to all the simulations and tutorials that Daniel mentioned at our show notes and at virusmodel.org. Be sure to subscribe to TeachLab to get future episodes on how educators from all walks of life are tackling remote learning during COVID-19. This episode of TeachLab was produced, edited, and mixed by Garrett Beazley. Stay safe, everyone. Until next time.