Check back often for homework assignments, tutorials, and key topics covered each day.
"This is the plan, until it is no longer the plan"!
Words to live by in the time of Corona.
By Sunday, January 31:
- Very important: Make sure you know how to sign into Zoom using your @login.cuny.edu account. Check your email or our Campuswire community for the link to join the class Zoom Room on Monday morning.
- Sign on to our Campuswire Community. Join using your QC email account and sign up using code 7859. Reminder: Your QC Email will look something like Alicia.Lastname42@qmail.cuny.edu.
- Explore Campuswire. The "Class Feed" is where you can should ask questions and where announcements will be posted. In the Class Feed there is a post asking you to say hi and share a fun link. Please contribute.
- Visit our Flipgrid page and record a 1-minute introductory video about yourself. Click on "Join with Microsoft" and use your Queens College email account to log in.
- Get pumped to join us on Zoom at 10:45am on Monday, February 1!
Monday, February 1
In class:
- Welcome!
- Introduction & Syllabus Discussion
- Section 1.0 of Modeling and Simulation in Python.
- What is Mathematical Modeling?
- Steps of the Modeling Process
- Course Philosophy
- Meet the model(er)s
Wednesday, February 3
Before class:
- Thoroughly read through the class web page including the syllabus.
- Complete this Doodle to let me know when you would be available for office hours during a normal Monday–Friday week.
- Make sure you are able to log on to your Queens College Google Account.
- Click on these links for our Chapter 1 Colab notebook and Chapter 2 Colab notebook. For each of these files, save your own copy of the file to Google Drive by clicking on the "Copy to Drive" button in the menu. I also suggest changing the name of the file to something like "chap01XXXX.ipynb" where XXXX is your name.
- Read Chapter 0, Section 1.0 (pages 1–3), and Sections 2.1–2.4 (pages 7–13) of Modeling and Simulation in Python. It is OK if you do not understand everything. You are priming your brain for the video lectures below. You may wish to write yourself some notes about questions that come up or concepts that you'd like to discuss in class.
- Watch the following video lectures on material about getting started with Colab and first steps in Chapter 2. Follow along in the colab notebooks you created above. Ask one question on the "Daily Question for February 3" post on our Campuswire Community about something that was confusing or for which you'd like additional information. I will use your questions to start off class.
- Getting started with Jupyter Notebooks in Colab (13 minutes)
- First steps with a bikeshare model (13 minutes)
- Defining a function to move bikes (16 minutes)
- Random numbers and If statements (13 minutes)
In class:
- Discussion of your questions from Campuswire
- What makes a good problem statement?
- Groupwork on precise problem statements
- Debriefing
- Discussion about Homework for Monday 2/8
Monday, February 8
Before class:
- Meet for one hour outside of class with at least one other classmate. Your goal is to get together to talk about the class so far and compare answers to the homework questions below. Type up one paragraph (5–7 sentences) about something that you learned or experienced that you would not have if you had worked alone. Submit your paragraph and the name of the person you met with. This will contribute to your participation grade.
- Read Sections 2.4–2.8 (pages 13–18) of Modeling and Simulation in Python.
- Here is a link to a Homework Template that you can use to type up your homework this semester. Save a copy to your Google Drive, modify the filename of the notebook, and make sure your name appears at the top. (Remember: To edit a cell, double click.) You will notice that there are already three Sections (labeled Objects, Comprehension/Vocabulary, and Coding) created and subsections started in each of them (labeled Question 1-1, 1-3, and 1-5) corresponding to the questions below. Please adhere to this structure in the homework notebook you will be submitting, adding ## subsections as necessary for every question in that # section. The first video from 2/3 has some pointers about how to do this. Feel free to ask on Campuswire if you are still confused.
- Homework Questions: Complete the following homework questions in your homework notebook (that you just created in the previous bulletpoint) and be prepared to discuss them in class. As always, you are welcome to work with classmates on homework questions; just make sure to write up your solutions in your own words. Objects (We're creating a dictionary of the objects we encounter.)
- 1-1. Write a sentence that explains what a State object is.
- 1-2. Write a sentence that explains what a TimeSeries object is. How does it compare to a State object, if at all?
- 1-3. In the introduction to Chapter 1, the author explains a quality of a model that might be desirable. Copy down the paragraph that starts "But often ".
- 1-4. Write a short paragraph that explains in your own words what the step(p1,p2) function is doing and why.
- 1-5. What is the process called that makes the functions defined in modsim.py available to Python? What is the block of code that accomplishes this?
- 1-6. How do we read (aka extract the information from) the variables inside a State object?
- 1-7. Define the function bike_to_olin() and make sure that it works like you expect it to by running it multiple times. Make sure to copy it into your personal chap02 notebook so the rest of the sections work correctly.
- Watch the following video lectures on material from Chapter 2. Follow along in the colab notebook you used before. It will be important to run all the cells and define the bike_to_olin() function correctly.
- The step() command (11 minutes)
- Creating a function with parameters (11 minutes)
- Basics of for loops and the range() command (17 minutes)
- Running the bikeshare model, then collecting and visualizing the data (20 minutes)
- Answer the Daily Question for 2/8 on our Campuswire Community.
In class:
- Discussion of your questions from Campuswire
- Homework Discussion
- Group coding
Wednesday, February 10
Before class:
- Read through the description of Project 1. Determine who you will want to work with on your project, and think about how you are interested in generalizing the simple bikeshare model. If have been unable to find a group, let me know in class. Your project proposal will be due next Wednesday by email.
- Read Chapter 3 of Modeling and Simulation in Python.
- Homework Questions: Complete the following homework questions in your notebook. It is highly suggested that you work with one or more classmates on this assignment!!! Comprehension/Vocabulary (Fill in the blanks)
- 2-1. Write down the syntax for a for loop. Explain in your own words what happens when a for loop is run.
- 2-2. In Python, True and False are _______, not to be confused with 'True' and 'False', which are _______.
- 2-3. What is the difference between the the two functions bike_to_wellesley() and bike_to_wellesley(state)? Write a paragraph that gives one or more reasons why the first would be better than the second and one or more reasons why the second would be better than the first.
- 2-4. A _______ causes a function to end immediately without running any additional statements.
- 2-5. == is a(n) _______, and should not be confused with =, which is a(n) _______.
- Make sure you are comfortable with the coin flipping coding we did in class.
- Here is our Chapter 3 Colab notebook Make your own copy and follow along with the following video lectures on material from Chapter 3.
- Answer the Daily Question for 2/10 on our Campuswire Community.
In class:
- Homework Discussion
- Discussion of your questions from Campuswire
- Implementing Metrics
- Introducing Project 1 and finding a project statement
There is no class on Monday, February 15.
- Work with your group to create a precise problem statement that you will investigate for Project 1. By Monday, February 15, one group member per group should submit this form which asks the questions:
- What are the names of your group members?
- Please situate your project in a real-world situation. What is the concrete scenario in which the bikeshare (or similar) takes place?
- What aspect of the computer simulation have you decided to modify?
- What is the metric that you have decided to measure during your simulation?
- What is your precise and concise problem statement that gets to the heart of the question you want to investigate?
- Prof. Hanusa will give feedback so you can revise if necessary.
- If you get your proposal done early and would like feedback early so you can get started on the simulation, send a DM or email to let me know your proposal is submitted!
Wednesday, February 17
Before class:
- Read Sections 3.6, then Section 4.5, then Sections 4.1–4.4 of Modeling and Simulation in Python.
- Homework Questions: Complete the following homework questions in your notebook. Remember you are welcome to work with classmates on homework assignments. Objects
- 3-1. Write a sentence that explains what a SweepSeries object is. How does it compare to a TimeSeries object, if at all?
- 3-2. Iterative modeling and incremental development sound similar. Are they the same thing? Write a paragraph where you explain the difference.
- 3-3. Write down the definition of a metric. Write a sentence that explains what a metric is in your own words. Give an example of a metric that you interact with in daily life.
- 3-4. What does the author consider to be one of the most useful tools for debugging? Write a sentence explaining why it would be a helpful tool.
- 3-5. Write down the syntax for the linspace command. What array is generated by linspace(0,1,5)?
- 3-6. In a paragraph or two, explain what it means to sweep a variable. Why would this be a useful thing to do?
- Here is our Chapter 4 Colab notebook. Make your own copy and locate your Chapter 3 Colab notebook. Follow along with the following video lectures on material from Chapters 3 and 4.
- Keeping track of unsatisfied customers (sorry it cuts off abruptly!)
- Comparing Outputs for Different Inputs
- Coding the SweepSeries
- Answer the Daily Question for 2/17 on our Campuswire Community.
In class:
- Homework Discussion
- Chapter 3 Coding Discussion
IMPORTANT: Start working on your simulation early. If you and your group are confused or have issues with the coding of the simulation, schedule a visit to office hours on Friday afternoon 2/19, Monday afternoon 2/22, or schedule an alternate appointment to talk with me by DM or email.
Monday, February 22
Before class:
- Complete the modification of your bikeshare simulation to address your problem statement.
- Watch the following video lectures on concepts useful in Project 1.
- If you have any questions about the structure of the project, feel free to ask in the Daily Question for 2/22 on Campuswire.
- Prepare the questions you want to ask Prof. Hanusa during our in-class meeting.
In class:
- PLEASE log in to class using your CUNY ZOOM ACCOUNT
- In-class work on your projects. Prof. Hanusa will come around to every group and talk about your project.
- Check the schedule on Campuswire to see the approximate time for our meeting.
Wednesday, February 24
Before class:
- Run your simulation, collect data, create figures, and start writing your report about Project 1.
- Turn in your Colab homework notebook containing Assignments 1, 2, and 3 by doing the following:
- In your Colab notebook, click on the "Share" button at the top left of the screen.
- In the space where it says "Add people and groups", type in "chanusa@qc.cuny.edu"
- Uncheck the box labeled "Notify people" and click "Send" so that I have access to your notebook. This will return you to the notebook screen again.
- Go back and click on the "Share" button again and this time click "Get link".
- Copy the link and paste it in this form.
In class:
- PLEASE log in to class using your CUNY ZOOM ACCOUNT
- In-class work on your projects. Prof. Hanusa will come around to every group and talk about your project.
- Check the schedule on Campuswire to see the approximate time for our meeting.
Monday, March 1
Before class:
- No later than Sunday night: Complete your report and clean up your python notebook. They should be in a final form. Send these files to your peer review partners.
- No later than Monday night: Complete the peer review.
In class:
- Today's class time is asynchronous. (There is no formal class time.) Prof. Hanusa will connect to the Zoom Room during class time in case you have questions you want to ask about the project or anything else.
Wednesday, March 3
Before class:
- Use Monday's peer feedback to revise your project for submission.
- Turn in your final project here:
- Upload your writeup here. Your file should be a Word (.docx) file or a PDF file. No other file types are permitted. Only one submission per group is necessary.
- Submit a link to your python notebook here. Make sure that the notebook has been shared with "chanusa@qc.cuny.edu". Only one submission per group is necessary.
- Submit your group dynamics paragraph here. (Type or paste into the form.) Reminder: Everyone must submit a group dynamics paragraph, and your paragraph should be written independently.
- Please answer a brief survey about how class is going.
- If you have a few minutes, skim Section 5.1 of Modeling and Simulation in Python.
In class:
- We'll be starting our discussion about population growth models.
- Here is a link to the Chapter 5 Colab notebook
Monday, March 8
Before class:
- Important Shift: To better align with the upcoming colab notebooks, we will be transitioning to using Version 4 of Modeling and Simulation in Python. To read this text, you will need to click on the Chapter links on the left side of that page. For example, Chapter 5 can be found here.
- Read through Chapters 5 and 6, as well as the "Quadratic Growth" section in Chapter 7 in Modeling and Simulation in Python.
- Here is a link to the Chapter 5 Colab notebook and the consolidated Growth Models Colab notebook. Make your own copies.
- Follow along with the video lectures on material from Chapters 5 through 7. Note that I am synthesizing and streamlining the content so it doesn't follow the chapter content exactly.
- System Parameters for the Constant Growth Model (16 minutes) (The details missing from class.)
- Mathematics of Three Population Growth Models (20 minutes)
- Creating the General Population Simulation (11 minutes)
- System Parameters, Growth Functions, and Coding! (20 minutes)
- Optional: Ask a question about the videos or the following homework questions as a response to the Daily Question for 3/8 on our Campuswire Community.
- Homework Questions: Complete the following homework questions in your colab notebook. Remember you are welcome to work with classmates on homework assignments. Objects
- 4-1. Write a sentence that explains what a System object is. How does it compare to a State object, if at all?
- 4-2. Write a sentence that explains what a DataFrame object is. How does it compare to a TimeSeries object, if at all?
- 4-3. How do you access the first element of a Series object? The last element?
- 4-4. Write down the definition of proportional. It is not defined in the book; you'll need to do some outside research if you don't know this definition.
- 4-5. Write a paragraph that explains what the author means when they talk about "factoring out the update function", the title of Section 6.3.
- 4-6. Complete the exercise that is at the end of Chapter 5, in which you try to find a constant growth model that fits the world population data better based on more recent data.
In class:
- Answering your questions about the models and homework.
Wednesday, March 10
Due to family obligations, class on 3/10 will be asynchronous.
Instead of class today:
- By the end of the day Tuesday, please fill out this brief survey about forming groups for Project 2.
- Read through Chapters 7 and 8, especially the Exercise at the end of Chapter 8 in Modeling and Simulation in Python.
- Here is a link to the Chapter 8 Colab notebook. Make your own copy.
- Follow along with the video lectures on material from Chapters 7 and 8.
- Graphing Net Growth as a Function of Population (8 minutes)
- Creating Population Projections (3 minutes)
- Growth Rate Visualizations of Real World Populations (10 minutes)
- Homework Questions: By the end of the day Wednesday, please work with some classmates to complete the following homework questions in your colab notebook. Comprehension
- 5-1. There are three different graphs that involve the change in population: the first two graphs in Chapter 7 and the first graph in the Exercise section of Chapter 8. Work to understand the usefulness of each of them. In a paragraph, explain what each one represents and then discuss the similarities and differences between them.
- 5-2. What is the difference in how we used plot() in the first third of the class and how the plot() function is applied to a Series object?
- 5-3. What is the syntax of the diff command? (Remember syntax covers the inputs, outputs, and the rules to get from the inputs to the outputs.)
- 5-4. (parts a, b, c, and d) Read the section of Chapter 7 of Modeling and Simulation in Python entitled "Dysfunctions". (The examples from the text are coded in the "Computing the Equilibrium Value" Section of the Growth Models Colab notebook posted for Monday.) Work through these examples and try to understand the issues surrounding each of the examples. In your homework notebook, write a paragraph in your own words that explains what is happening in each example.
- 5-5. (a) Find any webpage that has a table of data that changes over time. (b) use the tools we discussed from Chapter 5 to import this data into python with the time column as the index column. (c) Change the column headings to have short, simple names. (d) Choose one column to single out as a Series object, and plot the dataset.
- If you and your classmates have questions about the material or these questions, post it as a question on our Campuswire Class Feed.
- If you have some insights, please respond to your classmates' questions. Later in the day Prof. Hanusa will answer the questions that haven't been sufficiently addressed.
Monday, March 15
Before class:
- HAPPY Pi Day on Saturday!
- Read through the description of Project 2. Start to think about which of the options you are most interested in simulating.
- The groups for Project 2 are posted on Campuswire. If you have a new groupmate or two, say hello and exchange contact information. Then share your thoughts about the population you are most interested in modeling with your groupmates.
- Homework Questions: Complete the following homework questions in your colab notebook. Coding
- 6-1. For your dataset in Question 5-5, plot both the net growth rate as a function of population and as a function of time, and try to determine a simple function that fits one of those two scatterplots. (This is a skill that will be helpful when coming up with a growth function for your simulation.)
- 6-2. The plots we have been creating in class are using pyplot's plot function.
- Skim through the documentation about pyplot using the following links and keep track of the most interesting ways that you can style your plot.
- Modify to your liking the style of any plot we have created in class.
- Practice exporting your plot to a file using the savefig command and share it with the class as an answer to the Daily Question for 3/15 on Campuswire.
In class:
- Importing real-world data.
- Calculating and plotting the net growth over time.
- Link to the in-class notebook.
Wednesday, March 17
Before class:
- Work to internalize what we did in class on Monday 3/15.
- Spend time on Homework Problems 5-5 and 6-1.
- Look at the feedback provided for Project 1 and discuss with your groupmates a plan to revise it before Spring Break, and ideally before Monday, March 22. Links for resubmitting Project 1 are below.
In class:
- Discussion about Homework 5-5 and 6-1.
- Completing our discussion about the population model.
- Explanatory vs. Predictive models
- Assumptions vs. Expectations
- Different growth functions
Optional: Turn in your Revised Project 1 here:
- Upload your writeup here. Your file should be a Word (.docx) file or a PDF file. No other file types are permitted. Only one submission per group is necessary.
- Submit a link to your python notebook here. Make sure that the notebook has been shared with "chanusa@qc.cuny.edu". Only one submission per group is necessary.
Monday, March 22
Before class:
- With your Project 2 group, decide what population you would like to model.
- Work together to settle on a dataset for your population.
- Work together to import the data into python.
- Determine if you want your model to be an explanatory or predictive model.
- Come up with a draft project statement.
- Create the graphs of:
- (net population growth) vs time
- (net population growth) vs population
- (net population growth rate) vs time
- (net population growth rate) vs population
- [You might be substituting some other quantity for population in your model.]
- Determine the growth function that you want to use to model the population.
In class:
- In-class work day.
- Prof. Chris will come around to each group and make sure you are on track.
Wednesday, March 24
Before class:
- Finalize your project statement.
- Program your growth function into python.
- Run your simulation to model your population.
- Explicitly determine the assumptions underlying your model and the methodology you used to determine your growth function and its parameters.
In class:
- In-class work day.
- Prof. Chris will come around to each group and make sure you are on track.
Monday, April 5
Before class:
- Tweak your growth function to better fit your data.
- Start assembling your poster slides and thinking about what you want to say during your presentation.
In class:
- In-class work day.
- Prof. Chris will come around to each group and make sure you are on track.
Wednesday, April 7
Before class:
- No later than Tuesday night: Complete your poster slides, clean up your python notebook, and record a presentation about your work. Send these files to your peer review partners. You can upload your presentation to Flipgrid here if you prefer sending a link than sending the video file. (Or if you just want practice uploading to Flipgrid.)
- No later than Wednesday night: Complete the peer review, and send a copy of the confirmation email back to the authors. Each group member should give feedback about the whole submission.
In class:
- Today's class time is asynchronous. (There is no formal class time.) Prof. Hanusa will connect to the Zoom Room during class time in case you have questions you want to ask about the project or anything else.
Monday, April 12
Before class:
- Revise your project and presentation based on the feedback you received during peer review.
- Turn in your final project here:
- Upload your presentation here. Only one submission per group is necessary.
- Convert your presentation slides to PDF and upload your PDF here.
- Submit a link to your python notebook here. Make sure that the notebook has been shared with "chanusa@qc.cuny.edu". Only one submission per group is necessary.
- Submit your group dynamics paragraph here. (Type or paste into the form.) Reminder: Everyone must submit a group dynamics paragraph, and your paragraph should be written independently.
- On Campuswire there will be a list of
fourthree other presentations that you will need to watch and comment on (using a video response) and you should choose at least four other presentations to watch. Before Friday 4/16, Provide feedback about one presentation that you thought was well done. - Skim Sections 11.1 and 11.2 of Modeling and Simulation in Python. If you have extra time you may want to start on Wednesday's homework.
In class:
- Discussion of Chapter 11 of Modeling and Simulation in Python.
- The SIR model
Wednesday, April 14
Before class:
- Read Chapter 11 of Modeling and Simulation in Python.
- Here is our Chapter 11 Colab notebook. Make your own copy. Follow along with the following video lectures on material from Chapters 11 and 12.
- Programming the SIR Model (15 minutes)
- The update function for the SIR Model (14 minutes)
- A run_simulation function for the SIR model (11 minutes)
- Homework Questions: Complete the following homework questions in your class notebook. Comprehension/Vocabulary (Fill in the blanks)
- 7-1. An SIR model is an example of a _______ model.
- 7-2. In our model, we will model vaccination as moving people directly from the Susceptible state to the Recovered state. Why is this a reasonable thing to do?
- 7-3. Getting vaccinated is not just good for you; it is also good for the people you might otherwise infect. What is this phenomenon called?
- 7-4. Suppose frame is a TimeFrame object with columns labeled 'A', 'B', 'C', and 'D'.
- What do you type to access frame's first column?
- What do you type to access frame's first row of data?
- What do you type to plot all the data in frame?
- 7-5. If S is a TimeSeries object, What is the difference between S.max and S.idxmax?
- If you have questions about the SIR model or the accompanying programming, post it as a response to the Daily Question for 4/14 on our Campuswire Community.
In class:
- Discussion of your questions
- Programming the SIR model
Monday, April 19
Before class:
- Read the "Now with a TimeFrame" Section of Chapter 11 and the "Immunization" and "Metrics" Sections of Chapter 12.
- Here is our Chapter 12 Colab notebook. Make your own copy. Follow along with the following video lectures on material from Chapters 11 and 12.
- Now with a TimeFrame (7 minutes)
- Collecting Metrics (13 minutes)
- Implementing Interventions(16 minutes)
- Homework Questions: Complete the following homework questions in your class notebook. Comprehension/Vocabulary
- 8-1. For what real-world reasons might we like to know the largest value of (one or more of) S, I, or R and when it might happen?
- 8-2. If you decrease the likelihood that the disease is transmitted, how do you expect that that will change the dynamics of how many people are infected by the disease over time? How do you expect will it impact the total number of people who will be infected?
- 8-3. If the amount of time it takes to recover increases, how do you expect that that will change the dynamics of how many people are infected over time? How do you expect will it impact the total number of people who will be infected?
- 8-4. Modify the parameters of our model to match the assumptions of Question 8-2. Re-run the simulation and see if the results match your expectations.
- 8-5. Modify the parameters of our model to match the assumptions of Question 8-3. Re-run the simulation and see if the results match your expectations.
- 8-6. Consider the following metrics that we could calculate for our model.
- The fraction of people who are sick at the peak of the epidemic.
- The date when the peak occurs.
- The time it takes for the percentage of infected people to decrease to below 0.1% for the first time.
In class:
- Homework Discussion
- Implementing other interventions
Wednesday, April 21
Before class:
- Read over the information about Project 3.
- Complete the partner preferences survey for Project 3.
- Read the remainder of Chapter 12 and the first two sections of Chapter 13.
- For Project 3 you will be expected to use a parameter sweep. Follow along with these video lectures from Chapters 12 and 13 that show two different ways to use a parameter sweep with the SIR model. Here is a link to the Chapter 13 Colab notebook.
- Using a parameter sweep to see how a metric is affected by a change in parameter. (10 minutes)
- Using a parameter sweep to determine a good estimate for the value of a parameter. (10 minutes)
- Comparing multiple parameter sweeps. (5 minutes)
- Additional (optional) reading:
- Chapter 14 explains that beta and gamma are related and it is only the ratio beta/gamma that matters in your SIR simulation.
- If you are interested in how to code a different kind of intervention, check out: Intervention: Hand Washing
In class:
- Your Questions
- Project 3 discussion
Monday, April 26
Before class:
- In Project 3 you have a choice of different first-order differential equation models. Watch the following video lectures to see how they compare and get a better feel for how they might apply to a subject of interest.
- Product Adoption Model (10 minutes)
- Competing Population Models: Predator-Prey and Resource Competition (7 minutes)
- Thermal Systems and Pharmacokinetics (9 minutes)
- Interested in more details about these models? Here are some more resources:
- For the Product Adoption Model, consider the part of the Wikipedia page about System Dynamics and look at the pictures on this webpage about Stocks and Flows. Also consider the Bass Diffusion Model.
- Information about the Lotka-Volterra equations for Predator-Prey systems and Competitive Lotka-Volterra Equations for populations competing for common resources
- For information on thermal systems, read Chapter 15 and Chapter 16 of Modeling and Simulation in Python.
- For the discussion on pharmacokinetics, read Chapter 17 and Chapter 18 of Modeling and Simulation in Python.
- Meet with your partners from Project 3 and determine which of the general project types you will have as the basis for your project and what about that project type is interesting to you. Come up with a couple of ideas that you might explore, and what kind of questions that you might ask about those concepts. In the back of your mind you should be thinking about the interventions you will be instituting and the way you'll be integrating a parameter sweep.
In class:
- Professor Hanusa will meet with each group to hear about the type of model you are considering and provide feedback on the feasibility of possible projects, interventions, and parameter sweeps.
Wednesday, April 28
Before class:
- Meet for at least an hour with your groupmates and finalize your project statement in concert with honing in on the data you want to use for your project. Come up with a first approximation of your differential equation system for your interacting populations and figure out what challenges lie ahead.
- Read this article entitled Limitations on the use of mathematical models in transportation policy analysis and then answer the following homework questions.
- There is no homework question to be inserted into your homework notebook. Instead, complete the Daily Question for 4/28 on Campuswire. You are asked to write one to two paragraphs that answer one of the following questions.
- What was the most important piece of information you learned when reading the article? What about the piece of information is important?
- Which limitation do you feel is the most relevant to your modeling of Project 2 or Project 3? What about it is relevant?
- At the end of the article are nine questions that a policymaker should ask before using a model. Choose one of the questions and discuss how you will be addressing the concerns when you are writing your report.
In class:
- Prof. Hanusa will come around to give feedback about your progress so far. In particular he will be asking you the following questions:
- Have you finalized your project statement?
- Where are you getting your data?
- What is your plan for finding the parameters you need?
- What is your plan for your differential equation model?
- What challenges do you foresee?
Monday, May 3
Before class:
- Meet with your groupmates.
- Work to finalize your theoretical differential equation model. What parameters do you know? Which ones will you need to assume? Which ones will you need to calculate? How will you do that?
- Set up a skeleton python notebook with the basics of your simulation. Make sure the simplest version of your model is working correctly before you start making any modifications related to your project statement.
- Come up with some expectations about what the results of your model will say about the real world scenario.
In class:
- Prof. Hanusa will come around to give feedback about your progress so far. In particular he will be asking you the following questions:
- Did you finalize your choice of dataset and have you been able to import it into python?
- Have you finalized your differential equation model?
- Have you started programming your simulation in python?
- What do you expect your model will say about the real world scenario?
- Where are you planning to implement a parameter sweep?
- What challenges do you foresee?
Wednesday, May 5
Before class:
- Read through the updated information about Project 3 and ensure that you understand the expectations for the writeup and presentation.
- Meet with your groupmates.
- Complete your python simulation and run it to give results.
- Interpret your results as real-world answers to your problem statement(s).
- Have you run a parameter sweep?
- How have you included and programmed an intervention?
- Create a rough outline for your writeup. Include:
- How are you going to motivate your project statement?
- What aspects of methodology are you going to address? (What choices have you been making when constructing your model?)
- What charts will you need for your results section?
- Brainstorm a bullet list for the parts of the analysis section that you want to include.
- Watch these video lectures about the ways in which a model can be good:
- Accuracy, Realism, Precision (12 minutes)
- Robustness, Generality, and Fruitfulness (12 minutes)
- Here are the slides from the lecture.
- Here are some resources that help to explain some of the concepts in the video:
- Section 3.3 of Assessment of the Adequacy of Mathematical Models helps convey the difference between Accuracy and Precision. [In fact, all of Section 3 in that paper is highly suggested reading and Section 2 gives some additional context that revisits many of the ideas we have emphasized in this class.]
- Section 4.3 of Modelling in Population Biology discusses the tradeoffs that modelers have to make between Precision, Generality, and Realism. This is represented visually in Figure 4.1 by way of a triangle.
- Do you understand the definitions and distinctions between Accuracy, Precision, Realism, Robustness, Generality, and Fruitfulness? Ask or answer a question in the Daily Question on Campuswire about these or something else you are wondering related to the analysis of mathematical models.
In class:
- Prof. Hanusa will come around to give feedback about your progress so far. In particular he will be asking you to do the following:
- Show the simulation and visualization of how the populations are changing over time and how it compares with the real world data.
- Describe your real world intervention and how are you are coding it in your model.
- Explain your parameter sweep.
- Share your outline for the writeup.
- Discuss the challenges you have been having.
Monday, May 10
Before class:
- Prepare your homework notebook (assignments 4-8) for submission by Wednesday. Make sure all of homework assignments 4-8 are in the same notebook. Wednesday's link is active.
- Meet with your groupmates.
- Finish your coding.
- start your writing based on your outline. (Create an outline first if you haven't done so yet!)
- Start work on your methodology and results sections.
- There are multiple sources of error that may impact your model and that you can include in your analysis: (See page 4 (aka 108) of this textbook.)
- Formulation Error: Arises from ignoring variables, or over-simplifying the relationships among the variables.
- Measurement (or Observation) Error: Arises when data collection, transcription, or reporting is incorrect or imprecise due to laboratory equipment.
- Discretization (or Truncation) Errors are due to implementing approximations of the actual dynamics. Our models especially are subject to these due to approximating continuous differential equations using discrete time steps.
- Round-off Errors have to do with the fact that our programs don't hold infinitely many digits in their memory. In our case these errors are basically negligible.
- Furthermore, if you are creating a predictive model, you are extrapolating your model (which is based on existing data) to the future and assuming the future will be like the past. The quality of an extrapolation diminishes as the time horizon gets further and further from the range of existing data.
- I suggest you take a look at the following article:
- This article about Error and uncertainty in modeling and simulation talks about the modeling process and places where errors can occur. Take a look at Figure 1, Figure 2, and Figure 3, which compare historical ways to understand the modeling process and the new way proposed in this article. Figure 4 (page 341) details many different sources of error that have crept into the modeling process and can be helpful for you when you are trying to find sources of error in your own projects.
In class:
- In-class work on your project.
Wednesday, May 12
Before class:
- Make sure all of homework assignments 4-8 are in the same notebook.
- Turn in your Colab homework notebook containing Assignments 4–8 by doing the following:
- In your Colab notebook, click on the "Share" button at the top left of the screen.
- In the space where it says "Add people and groups", type in "chanusa@qc.cuny.edu"
- Uncheck the box labeled "Notify people" and click "Send" so that I have access to your notebook. This will return you to the notebook screen again.
- Go back and click on the "Share" button again and this time click "Get link".
- Copy the link and paste it in this form.
- Prepare your homework notebook for submission and submit the link here.
- Continue writing Project 3. Finish writing the methodology and results sections and make progress on your analysis section. Remember the focus of the analysis is on your model and how good it is. Have you addressed its positives and negatives? Have you analyzed the quality of your assumptions? Have you addressed the model's limitations? errors? How do your results compare with your expectations? How might someone improve the model in the future?
- About your paper's Abstract:
- The LAST thing you should write for your paper is the abstract. Think of this as an elevator pitch that conveys the essence of your paper, including what you wanted to learn, how you approached learning it, your main results and conclusions. AND it should be no more than 75 words! The point is to explain to people why they should read your article. Don't forget to put the abstract on your title page.
- I thought you might want to see some examples of abstracts so you can see what qualities of an abstract you think are the most powerful.
- Start assembling your project content into digital slides for your presentation. The content should follow the same outline as the paper, with more opportunity to discuss (briefly) the process or trials that you went through to get to your final model and conclusions.
In class:
- In-class work on your project.
Monday, May 17
Instead of class:
- Today is an asynchronous peer review day.
- Your peer review partners are posted on Campuswire.
- In coordination with your peer review partners but definitely NO LATER THAN Thursday, May 20: Complete the peer review, and send a copy of the confirmation email back to the authors. Each group member should give feedback about the whole submission.
In class:
- Today's class time is asynchronous. (There is no formal class time.) Prof. Hanusa will connect to the Zoom Room during class time in case you have questions you want to ask about the project or anything else.
Thursday, May 20 (optional)
- If you have one or multiple parts of your project completed, peer reviewed, and revised by Thursday, 5/20, you can send them to me and I will let you know where you should focus your energy on fixing before the final submission on 5/24.
Monday, May 24
Before class:
- It's presentation day! All your hard work has paid off!
- Revise your project and presentation based on the feedback you received during peer review.
- Turn in your final project here:
- Upload your presentation here. Only one submission per group is necessary.
- Convert your presentation slides to PDF and upload your PDF here. Only one submission per group is necessary.
- Upload your writeup here. Your file should be a Word (.docx) file or a PDF file. No other file types are permitted. Only one submission per group is necessary.
- Submit a link to your python notebook here. Make sure that the notebook has been shared with "chanusa@qc.cuny.edu". Only one submission per group is necessary.
- Submit your group dynamics paragraph here. (Type or paste into the form.) Reminder: Everyone must submit a group dynamics paragraph, and your paragraph should be written independently.
- On Campuswire there will be a list of three other presentations that you will need to watch and comment on (using a video response) and you should choose at least four other presentations to watch. Before Wednesday 5/26, Provide feedback about one project that you thought was well done.