Rationale:
Mathematical Modeling is a unique math class since its goal is to give you the tools necessary to use mathematics outside of school. The language of mathematical modeling is the language that real-world companies and business managers understand. If you are trying to convince your boss that she or he should follow a course of action that you suggest, you will need to justify yourself; basing your reasoning on a mathematically-sound model can provide the basis of your justification.
In this class, you will be creating three mathematical models based on the material that we learn throughout the semester. I would like to extend a large thank you to Allen Downey at Olin College who has been extremely generous in providing materials from when he taught this class.
You will be creating and analyzing a bikeshare model that builds on the bikeshare model from Chapters 2–4 of the ModSimPy book as your starting point. Your goal will be to determine a precise problem statement, develop the methodology to investigate this problem statement, run a simulation that implements the methodology, and interpret the results of this simulation.
You will work in a group of at least two and at most three people. It is important that you choose a group of people with whom you can work well. You will have to meet outside class with your groupmates.
Here is a list of vague ways in which one might modify the bikeshare model.
- More than two locations
- The number of bikes changes over time
- The probabilities change over time
- Competition comes in
- Money gets involved
As a group, choose one of these areas and decide upon a precise problem statement that you will investigate. (Other topics are also allowed; check with Prof. Chris first.) As you choose your topic, consider the ways in which you will need to modify your simulation.
- Project Proposal due Friday, September 13:
Decide who you want to work with on your project and come up with a precise problem statement and a plan for modifying your simulation. Send an email to Prof. Chris with this information; he will give feedback so that you can revise the proposal by Monday, September 16, if necessary.
- Simulation Complete by Wednesday, September 18:
Work in your group to simulate the modified bikeshare model.
- Draft Writeup due on Monday, September 23:
By this date, you are expected to be have completed the final draft of your project. On this day, we will spend time doing peer review, sharing your project with the other group at your table and discussing ways to improve it.
- Final Project Due on Wednesday, September 25:
Each group will turn in their final writeup and python notebook through the Dropbox links on the course content page. Your (individual) group dynamics essay is due that evening.
The final deliverables of this project will be a two-page (group) writeup, your python notebook, and an (individual) group dynamics paragraph.
The writeup must:
- Adhere to the correct format.
- Two full pages of content. (2.5 pages max)
- 1 inch margins, 1.5x spacing, 11-point Times New Roman font.
- Discuss the Objective.
- Here you give a brief introduction to the real-world scenario and introduce the problem statement and set the stage for the type of answer you are looking for. This should be at most 1/2 page.
- Discuss the Methodology.
- Transition into a discussion of how you created a simulation to answer your problem statement. You should explain how this model is different from the classic bikeshare model (from class). Include the main assumptions you made, why you made those assumptions, relating them back to the real-world situation and the objective.
- Discuss the Results.
- Here you discuss what results your simulation produces. Include a chart that shows the evolution of your bikeshare over time. The axes must be labeled. The chart should not take up more than 1/4 of a page. Integrate a discussion of what the viewer is supposed to be understanding from your figure.
- Analyze the results.
- Interpret your results as an answer to your problem statement. What is the real-world significance of your results? Be honest and critical of your work. It is OK if you say your model didn't work. Show that you know it doesn't work and explain why. Here is a good place to discuss whether the assumptions you made are realistic and discuss how you or someone else might improve the model/simulation in the future.
Write one paragraph that includes your impression of the contributions of the group members. Do you feel like each group member participated equally? Did each member contribute to the project throughout the process, including forming the project topic, developing the project methodology, planning and running the python simulations and results, analyzing the model, and contributing to the writing?
This project represents 20% of your semester grade. You will be graded on each of the following standards.
- Timeliness and Style:
- Did you make steady progress on your project from start to finish, respecting project deadlines?
- Did you turn in your final project by the deadline?
- Did you follow the writing format requirements?
- Do you use complete sentences and proper English?
- Objective:
- Did you situate your project in a real-world scenario?
- Have you given a precise problem statement that you are trying to answer?
- Does the objective section lead well into the methodology section? Is there a good transition?
- Methodology:
- Do you explain the method you used to simulate your situation?
- Do you explain the philosophy behind your simulation?
- Have you based your model on clear, well thought-out assumptions?
- Did you explicitly state these assumptions?
- Results:
- Did you choose your figure carefully?
- Is your figure relevant?
- Is the plot labeled correctly?
- Do you EXPLAIN to the reader how they should be understanding your figure? (NOT an analysis -- simply an explanation.)
- Are these results situated well in the flow of the paper, well transitioned from methodology and leading into the analysis?
- Analysis:
- What do your results say as an answer to your question?
- Have you interpreted your results in terms of the real world scenario?
- Is your simulation modeling the real-world situation well? (Remember: Be critical and truthful.)
- Do you discuss the validity of your assumptions?
- How might you or someone else improve upon your model in the future?
- Do you conclude your paper so that it does not end abruptly?
- Python Notebook:
- Did you use python techniques that we learned in class?
- Did you create a python simulation to model your bikeshare model?
- Did you use python to create labeled plots of your model?
- Is your python notebook organized neatly? Have you broken down your notebook into sections?
- Have you used text cells or comments to explain to the reader what you are doing in your code?
You will be assigned a score for each standard from the following scale.
Your final project grade will be based on the number of scores at each level as follows.
4 Truly Exceptional: Goes above and beyond expectations. 3 Exceeds Expectations: Meets all requirements at a high level. 2 Meets Expectations: Meets all requirements at an competent level. 1 Acceptable: Meets minimally acceptable standards. 0 Unacceptable: No work, a weak start, or does not meet minimum acceptable standards.
If you do not participate equally in the groupwork, your grade will be reduced accordingly.
A+ (100+) Earn a score of 4 on at least three standards and no score lower than 3. A (95) Earn a score of 3 or more on at least four standards and no score lower than 2. B (85) Earn a score of 2 or more on at least five standards and no score lower than 1. C (75) Earn a score of 2 or more on three of six standards and no score lower than 1. D (65) Earn a score of 1 or more on at least five standards. F (0-50) Earn a score of 0 on two or more standards.
You will be creating and analyzing a population dynamics model, using Chapters 5–8 of the ModSimPy book as your starting point. The book analyzes various models based on explicit assumptions that have a basis in the real world. Your project will also relate to population dynamics and be based in real world assumptions. Here are some possible themes to consider:
The first option is to ask and answer an interesting question about a human population or an animal population on Earth by extending the model developed in class. You will collect data online relevant to the questions you want to answer.
For this option, you can try to simulate a human or animal population's growth over time using random processes, similar to how we used randomness in the Bike Share model. Instead of a deterministic growth rate, consider a model in which the growth rate for each time period is drawn at random from a probability distribution (which might in turn be estimated from empirical data). One question that a stochastic population model might address is the likelihood of a population dying out. You will find that there is a wealth of information (including time-series data) available for many different species in many areas of the world.
As a third option for the project, you might choose to investigate the interactions between multiple species. Can you determine the populations of two competing species by using a deterministic or probabilistic model? Just as in the other two options, you will be required to use real world data and realistic assumptions to model their interaction.
You will work in a group of at least two and at most three people. It is important that you choose a group of people with whom you can work well. You will have to meet outside class with your groupmates throughout the next few weeks. Together you will come up with a project topic (vetted by Prof. Chris), determine the mathematical model you wish to study, collect relevant data, program a simulation in Python, and present your results to the class.
- Initial Planning due Wednesday, October 16:
Decide who you want to work with on your project and decide which of the project options you are most interested in pursuing. Start collecting data for your populations of interest. Bring these ideas to the brainstorming session in class this day.
- Project Statement, Methodology, and Imported Data by Monday, October 21:
Hone the primary question you and your group wish to investigate and have it ready for class this day. Think about the growth function(s) assumptions underlying your simulation. Make progress on importing the data you want to analyze into a Python notebook.
- Primary simulation complete by Wednesday, October 23:
By this date, you must have translated your population dynamics model into Python and run the simulation. You should have decided upon a secondary question and that you will answer by determining a metric and sweeping a value.
- Parameter sweep complete by Friday, November 1:
By this date, you should have completed the parameter sweep that answers your secondary question.
- Draft Quad Chart due on Wednesday, November 6:
By this date, you are expected to be have completed the final draft of your project. On this day, we will spend time doing peer review, sharing your project with the other group at your table and discussing ways to improve it.
- Final Quad Chart Due and Project Presentation on Monday, November 11:
On this day, your group will present your project to the entire class and turn in your quad chart for grading. Please also turn in your brainstorming worksheet, your first cut model worksheet, and send your python notebook by email. (One of each per group.) Your (individual) group dynamics essay is due the evening of your presentation.
The final deliverables of this project will be a (group) quad chart, a (group) five-minute presentation, and an (individual) group dynamics paragraph.
The quad chart must:
- Have a descriptive and meaningful title.
- Adhere to the correct format.
- Use four 8.5" × 11" sheets of paper.
- Each sheet should be in landscape format with at least 0.5" margin around.
- The fonts should be no smaller than 24pt.
- Each sheet must be headed either "Objective", "Methodology", "Results", or "Conclusions".
- Include an Objective Section.
- Include an Methodology Section.
- Include an Results Section.
- Include an Conclusions Section.
- Be formatted in a clear and organized manner.
Spend time organizing your text and images. Your quad chart should not be only text. Work to make your final layout visually appealing.
Here you introduce the primary and secondary problem statements, highlighting the population being modeled, who cares about the problem, and setting the stage for the type of answer you are looking for.
Here you include the main assumptions you made, why you made those assumptions, the way you decided to model the growth function, where you got your data, and the types of simulation you used, relating it back to the objective.
Here you include chart(s) that show your most important results, with labeled axes, and a description of what the viewer is supposed to be getting out of your figure. You also need to explain how you validated or verified your results (variable sweeping perhaps?) Interpret your results as an answer to your question.
What does the model you created say? What are the limitations of your model? Are the assumptions realistic? Be honest and critical of your work. It is OK if you say your model didn't work. Show that you know it doesn't work and explain why.
The presentation must:
- Include an introduction.
Introduce yourselves, your topic, and explain who is the audience of your presentation.
- Discuss each of the sections in the quad chart.
Spend time making sure that the class learns about your objective, methodology, results, and conclusions.
- Use your quad chart as a visual aide.
- Involve each of the groupmates.
- Be organized and rehearsed.
You need to make sure that you have practiced what you are going to say a couple of times.
- Respect the time limit.
Five minutes is a very short amount of time! This means you really need to have practiced multiple times so that you use your time efficiently.
Use it as such. Do not read from your chart.
Make sure each person speaks for at least two minutes (for a group with two members) or at least one minute (for a group with three members).
Write a paragraph that includes your impression of the contributions of the group members. Do you feel like each group member participated equally? Did each member contribute to the project throughout the process, including forming the project topic, developing the project methodology, planning and running the python simulations and results, analyzing the model, compiling the quad sheet, and preparing for the presentation?
This project represents 30% of your semester grade. You will be graded on each of the following standards. You are expected to arrive on time and make comments on your classmates' presentations and projects. If you are late or absent, this will negatively affect your own grade.
- Timeliness:
- Did you make steady progress on your project from start to finish, respecting project deadlines?
- Did you take the brainstorming worksheet seriously?
- Did you contribute seriously to the peer review?
- Did you turn in your final project by the deadline?
- Quad Chart Style:
- Did you follow the Quad Chart format requirements?
- It your quad chart well organized?
- Does it capture the attention of the audience?
- Is it visually appealing?
- Objective:
- Have you given a precise population dynamics question that you are trying to answer?
- Have you given a precise secondary question that you are trying to answer?
- Have you been explicit about whether your project is explanatory or predictive?
- Is it obvious who your target audience is?
- Methodology:
- Have you based your model on clear, well thought-out assumptions? (Both about the variables you included and didn't include, and the structure of the population growth.)
- Did you explicitly state these assumptions?
- Do you give and discuss the population change function behind your model?
- Did you discuss where your data came from and why you chose it?
- Results:
- Are the plots that you chose to include relevant to your Primary and Secondary problem statements?
- Are the plots labeled correctly?
- Do you include an explanation for the observer about how they should interpret your plots?
- Have you interpreted your results in terms of the real world scenario and given answers to your problem statements?
- Conclusions:
- Is your simulation modeling the real-world situation well? (Remember: Be critical and truthful.)
- Do you discuss the validity of your assumptions?
- Have you analyzed how good your model is? (Remember the criteria: Accurate, Descriptively realistic, Precise, General, Fruitful.)
- How might you or someone else improve upon your model in the future?
- Python Notebook:
- Did you use python techniques that we learned in class?
- Were you able to import real-world data into python?
- Did you create a python simulation to model population growth?
- Were you able to use python to create labeled plots of your model?
- Did you sweep a parameter?
- Is your python notebook organized neatly? Have you broken down your notebook into sections?
- Have you used text cells or comments to explain to the reader what you are doing in your code?
- Presentation Style:
- Did you include an introduction?
- Did you discuss each of the sections?
- Have you ensured that your presentation does not end abruptly?
- Did you use the quad chart as a visual aide, and not read from it?
- Did you involve each of the groupmates?
- Is it obvious that you were organized and had practiced for the presentation?
- Do you keep the audience's attention?
- Did you respect the time constraints?
- Did you arrive on time for everyone else's presentation?
You will be assigned a score for each standard from the following scale.
Your final project grade will be based on the number of scores at each level as follows.
4 Truly Exceptional: Goes above and beyond expectations. 3 Exceeds Expectations: Meets all requirements at a high level. 2 Meets Expectations: Meets all requirements at an competent level. 1 Acceptable: Meets minimally acceptable standards. 0 Unacceptable: No work, a weak start, or does not meet minimum acceptable standards.
If you do not participate equally in the groupwork, your grade will be reduced accordingly.
A+ (100+) Earn a score of 4 on at least four standards and no score lower than 3. A (95) Earn a score of 3 or more on at least six of eight standards and no score lower than 2. B (85) Earn a score of 2 or more on at least six of eight standards and no score lower than 1. C (75) Earn a score of 2 or more on four of eight standards and at most one score lower than 1. D (65) Earn a score of 1 or more on at least seven of eight standards. F (0-50) Earn a score of 0 on at least two standards.
You will build a simulation that models the interaction between multiple populations / quantities based on a system of first-order differential equations, using ideas that you have learned in Chapters 11–17 of the ModSimPy book. You'll also keep working on crafting interesting and appropriate questions—those that can be answered with the tools you're learning and that are reasonable in scope—and interpreting the results of your model to answer those questions.
You will expand upon the basic models to answer a question of your choosing. Here are three possible themes to consider:
The first option is to begin with the SIR model in the book and find an interesting way to extend it. You will identify one or more (closely related) questions you can answer with your new model.
The second option is to begin with the pharmacokinetics model in the book and find an interesting way to extend it. You will identify one or more (closely related) questions you can answer with your new model.
The third option is to explore the ways in which products or ideas are adopted, similar to what is discussed on the Wikipedia page for System Dynamics. You will identify one or more (closely related) questions you can answer with your new model.
The third option is to investigate some other system in which multiple populations or quantities interact by way of differential equations. This option will necessitate some additional research.
- Team Formation survey due Tuesday, November 16:
This project will be done in teams of 2–3 students. I will form teams based on the partner preference survey you submit by this date. I plan to pair everyone with a new partner for this project.
- Project Proposal and Basic Simulation due Monday, December 2:
Before class this day, come up with a research question that can be answered by a computer simulation that meets the above criteria. Come up with your expectations about what your results will say. You should also set up a skeleton python notebook with the basic simulation related to your project.
- Project Final Draft on Wednesday, December 11:
By this date, you are expected to be have completed most of your project and be prepared for your presentation. You may wish to schedule an appointment with the Writing Center BEFORE this meeting. Bring in THREE copies of your final writeup draft. The class period this day will be a peer-review session with some in-class polishing time. Prof. Chris will walk around and consult with you on any last-minute questions you might have.
- Project Presentation on Wednesday, December 18:
On this day, you will present your project to the rest of the class, explaining the question you investigated, discussing your modeling approach and the simulation you created, highlighting your results, analyzing your model and sharing your thoughts on the modeling process. You are expected to attend all presentations; your presentation grade will be reduced if you are late or do not attend. Your project materials are all due this day.
You will be working on your project in multiple stages including work outside of class. The final deliverables of this project will be a five-page (group) writeup, your python notebook, and a (6–8)-minute final presentation, and an (individual) group dynamics paragraph.
The writeup must:
- Adhere to the correct format.
- Five full pages of content
- 1 inch margins, 1.5x spacing, 11-point Times New Roman font.
- Have a title page
- The title page must include the name of the project, the abstract, and the names of group members. (This page does not count toward the length of the paper.)
- Include an abstract.
- An abstract is a brief summary of the main content of our paper. 100 words at most!
- Give an Introduction.
- This should provide the reader with the necessary background information about why your project is an interesting and worthwhile project, and where the project fits into real life. Explicitly state the question you are investigating.
- Discuss the Methodology.
- Transition into a discussion of how you created a simulation to answer your problem statement. Explain in depth the mathematical model you are using to solve the problem. Explicitly state any assumptions that you are making in your research. Discuss how you worked to make your model as representative of real life as possible. Describe how you modified the simulation from class to address your question. Explain where your data came from and how reliable it is. This portion of the paper should be at least one page.
- Discuss the results.
- Here you discuss what results your simulation produces.Explain the results of the simulation. Include a few plots that highlight the message readers should take away, and discuss what these plots mean. Your project should include a parameter sweep; include a plot of this information. Discuss what the simulations say and what conclusions you can draw in terms of the real-life problem.
- Analyze the model.
- Every model makes simplifying assumptions. You need to elaborate on yours and explain what is good and what is bad about your model. Is your model accurate? How do the results match with your expectations? This portion of the paper should be at least two full pages.
- Conclude.
- Explain briefly the take-away message of your project, especially the real-life consequences. What future research should be undertaken?
The python notebook must:
- Be commented and explained so that others can understand your work.
Your Python notebook will be filled with complex code; you must make sure that the code you create is readable by people familiar with programming in Python. Use text cells to give others reading your code an explanation of the overarching philosophy behind the organization of your code. Throughout the code, to explain what you are doing, insert comments
# # like this. #
- Use simulation techniques learned in class.
This project is for you to create a first-order system, similar to the SIR problem. You should be using techniques similar to (but not exactly the same as) those from class, using System objects, State objects, an update function, a run_simulation function, and collecting metric information.
- Use sweeping techniques learned in class.
As you run your simulations, use SweepSeries or SweepFrame objects to collect metrics relevant to your project, and use the collected information to come to real-world conclusions related to your main question.
- Use plotting techniques learned in class.
The charts you create for your writeup and presentation should be generated using Python. They should have titles and labeled axes.
- Only include relevant Python code.
Do not include all your scratch work in your final Python submission.
- Have a title and the names of group members.
The presentation must:
- Include an introduction.
Introduce yourselves, your topic, and why you were motivated to work on this topic.
- Discuss each of the sections.
Spend time making sure that the class learns the important details about your project statement, methodology, results, analysis, and conclusions.
- Debrief about your project.
Give us some personal stories about your project and the journey to complete it. Some questions you might think about addressing: What was surprising along the way? What was the most difficult challenge? What are you happiest about? What would you like to do if you had more time to work on it?
- Involve each of the groupmates.
Make sure the speaking time is equitable.
- Be organized and rehearsed.
You need to make sure that you have practiced what you are going to say a couple of times.
- Use time wisely and respect the time limit.
Your presentation is supposed to take 6–8 minutes. Use your limited time efficiently and plan wisely. You will need to have practiced multiple times to get the timing correct.
Write one paragraph that includes your impression of the contributions of the group members. Do you feel like each group member participated equally? Did each member contribute to the project throughout the process, including forming the project topic, developing the project methodology, planning and running the python simulations and results, analyzing the model, contributing to the writing, and preparing for the presentation?
This project represents 35% of your semester grade. You will be graded on each of the following standards. You are expected to arrive on time and make comments on your classmates' presentations and projects. If you are late or absent, this will negatively affect your own grade.
- Timeliness:
- Did you make steady progress on your project from start to finish, respecting project deadlines?
- Did you take the brainstorming worksheet seriously?
- Did you attend class and contribute constructively during in-class project work days?
- Did you turn in your final project by the deadline?
- Writeup Format, Style, and Focus:
- Did you follow the writing format requirements?
- Do you use complete sentences and proper English?
- Have you stayed on topic throughout the writeup?
- Does the paper flow well from one section to the next?
- Title and Abstract:
- Did you give your project a relevant title?
- Have you captured the essence of your paper in the abstract?
- Is your abstract concise and precise?
- Introduction:
- Do you motivate the project by providing enough context for the reader? Can you convince your audience of the importance of your project?
- Have you given a precise question that you are trying to answer?
- Have you been explicit about whether your project is explanatory or predictive?
- Methodology:
- Have you based your model on clear, well thought-out assumptions? (Both about the variables you included and didn't include, and the structure of the changes over time.)
- Did you explicitly state these assumptions?
- Are you able to convey the "update" function to the reader with a justification about why this function is the right way to approach your model?
- Did you discuss the metric that your model uses and why you chose it?
- Did you discuss where your data came from and why you chose it?
- Results:
- Are the plots that you chose to include relevant to your problem statement(s)?
- Are the plots labeled correctly?
- Do you include an explanation for the observer about how they should interpret your plots?
- Analysis:
- Do you discuss the validity of your assumptions?
- Have you analyzed how good your model is? (Remember the criteria: Accurate, Descriptively realistic, Precise, General, Fruitful.)
- Do you explain the errors that might occur in your modeling process?
- Do you discuss the limitations of your model?
- Is your simulation modeling the real-world situation well? (Remember: Be critical and truthful.)
- Conclusions:
- Have you interpreted your results in terms of the real world scenario and given answers to your problem statements?
- Do you compare your expectations to the results?
- How might you or someone else improve upon your model in the future?
- Python Notebook:
- Did you use python techniques that we learned in class?
- Were you able to import real-world data into python?
- Did you create a python simulation to model to interacting populations?
- Were you able to use python to create labeled plots of your model?
- Did you sweep a parameter?
- Is your python notebook organized neatly? Have you broken down your notebook into sections?
- Have you used text cells or comments to explain to the reader what you are doing in your code?
- Presentation Style:
- Did you include an introduction?
- Did you discuss each of the sections?
- Have you ensured that your presentation does not end abruptly?
- Did you use the quad chart as a visual aide, and not read from it?
- Did you involve each of the groupmates?
- Is it obvious that you were organized and had practiced for the presentation?
- Do you keep the audience's attention?
- Did you respect the time constraints?
- Did you arrive on time for everyone else's presentation?
You will be assigned a score for each standard from the following scale.
Your final project grade will be based on the number of scores at each level as follows.
4 Truly Exceptional: Goes above and beyond expectations. 3 Exceeds Expectations: Meets all requirements at a high level. 2 Meets Expectations: Meets all requirements at an competent level. 1 Acceptable: Meets minimally acceptable standards. 0 Unacceptable: No work, a weak start, or does not meet minimum acceptable standards.
If you do not participate equally in the groupwork, your grade will be reduced accordingly.
Scores of "4" will be rare since they are reserved for exceptional work. Each "4" will add two points to the grade calculated below.
A (95) Earn a score of 3 or more on at least seven of ten standards and no score lower than 2. B (85) Earn a score of 2 or more on at least nine of ten standards with at least three scores of 3, and no score lower than 1. C (75) Earn a score of 2 or more on five of the ten standards with at most one score of 0. D (65) Earn a score of 1 or more on at least eight of nine standards. F (0-50) Earn a score of 0 on at least two standards.