15-236: Saving Humanity with Computational ModelsSpring, 2021
Description
We live in a complex society and on a complex planet; but we tend to think about the world through simplified models and assumptions.
How do we know if our simplified mental models make sense?
Computational modeling is an approach to understanding our understanding of the world wherein we write down our mental models as computer code, mix in a bit of real data, and run it to see what we can learn.
Models can help us to understand ourselves, the world around us, and how to shape the future.
This course will teach the basics of computational modeling through hands-on exercises investigating student-directed topics.
We will cover the basics of computational modeling, finding and processing data, visualization, modularity, and interactivity.
Students will build a series of models throughout the course, starting with smaller warm-ups and culminating in a final project in which students will work together to create a high-quality model and interactive web-based visualization with the goal of informing public discourse and policymaking.
Prerequisites
15112 and 21120
Evaluation
Students will be awarded points as follows:
- 1 point (total) for class participation; approximately 0.04 points per class.
- 2 points (each) for every assignment, of which 0.5 is awarded for critique participation and 1.5 for the assignment itself.
- 5 points for the final project, of which 0.5 is awarded for midpoint critique participation, 1 is awarded for the state of the project at the midpoint, 0.5 is awarded for final critique participation, and 3 for the project as finished.
The class contains 1 + 2*5 + 5 = 16 points in total.
This means points are really big! They are each worth 6.25% of your grade.
Assignments may be submitted up to a week late for 50% of the points; however, no critique participation points will be awarded for a late assignment.
Thus, the maximum score for a late assignment is 0.75 points.
Extra credit may be awarded for particularly excellent work.
How Assignments Work
Assignments in this class are evaluated by critique.
This means that we will view and discuss your work as a class and provide constructive feedback.
(Indeed, part of your assignment grade is based on giving and accepting feedback during critique sessions!)
In order to facilitate this process, you need to make sure the class has access to a working copy of your assignment.
We will begin this process with an ad-hoc system, but will eventually use the AFS -> www capabilities provided by Computing Services.
Collaboration
Please work together. Talk about methods and ideas; provide feedback on each-others drafts; and, yes, show each-other source code!
But (1) everything you turn in, you need to understand and type in yourself.
No copy-pasting!
(2) Always give credit. Comments and citations help you (and others) follow your reasoning!
Schedule
This schedule is subject to change in cases where my estimation of the time required to cover a topic does not match the reality.
Monday
1
February
- Course roadmap.
- Why argue with interaction?
- Set up your development environment.
- An event-driven [re-]computation.
- Discuss: How can we use this?
Wednesday
3
February
- Giving constructive feedback.
- Mini-critique for A1.
Monday
8
February
- Data records outcomes, not processes.
- Data requires context.
- Provenance.
- What data do you want?
- Start harvesting data.
Wednesday
10
February
- Drawing on a <canvas>.
- Experiencing data.
- The language of graphs.
- Start graphing your data.
Monday
15
February
- Common pitfalls.
- Good graph or bad graph?
- Make progress on A2.
Wednesday
17
February
- Some Tufte notes.
- Make progress on A2.
Wednesday
24
February
- Modules and making your code modular.
- Sampling.
Monday
1
March
- How do you resolve the envelope paradox?
- Random variables.
- Distributions.
- What does probability mean?
- Bootstrapping.
Wednesday
3
March
- Depictions of uncertainty.
- Markov models.
- Make progress on A3.
Wednesday
10
March
- Defining a lie.
- "How to lie with statistics."
- How to lie with models?
- Logical fallacies.
- Correlation and causation.
Monday
15
March
- "P-hacking" and the significance trap.
- Dead salmon brain activity.
- Work together to perfect your lies.
Wednesday
17
March
- Meta-critique of lies in A4.
- How can we detect our own lies?
Monday
22
March
- Introducing utility.
- Decision trees.
- Opportunity cost.
- Solve rent vs buy.
- Sunk cost.
Wednesday
24
March
- Turn-taking and game trees.
- Nash equilibria.
- Does reflexive morality work?
Monday
29
March
- Why do people gamble?
- Problems with measuring utility in dollars.
Wednesday
7
April
- Feedback loops.
- Saturation.
- Race to the bottom.
- Simulate predators, prey, and plants.
Monday
12
April
- Things over space.
- Add agents to simulation.
- Discounting the future.
Wednesday
14
April
- Project group formation.
- What and how will you argue in your final project?
Monday
19
April
- In-class project planning.
Wednesday
21
April
- The tyranny of objective functions.
- Evolution as optimization.
Monday
26
April
- Project midpoint critique.
Wednesday
28
April
- reserved for delayed topics.
Monday
3
May
- reserved for delayed topics.
out 1 February
Assignment 1: Argue with interaction.
due before class,
3 February
out 8 February
Assignment 2a: Scrape some data.
due before class,
10 February
out 10 February
Assignment 2b: Argue by showing data.
due before class,
22 February
out 24 February
Assignment 3: Argue by showing futures.
due before class,
8 March
out 10 March
Assignment 4: Argue in bad faith.
due before class,
17 March
out 24 March
Assignment 5: Argue about connected actions.
due before class,
31 March
out 19 April
Project: An argument of your own design.
due before class,
5 May