Note that this problem is from an earlier version of CS50 AP and is no longer supported or updated, but still may be a valuable addition to your classroom curriculum.
Simulate!
tl;dr
Explore a computer simulation’s functionality, uses, and impact.
Pi in the Sky
What comes to mind when you think of the word “simulation”? Maybe you thought of a video game called The Sims, in which you create virtual people and control their moods and actions. Or maybe you thought of a scene in some action movie, where the characters have huge floating screens they use to control reality.
A simulation is defined by Webster’s Dictionary as “something that is made to look, feel, or behave like something else especially so that it can be studied or used to train people”. So a bank might create a simulation in which someone pretends to be a robber, to train their tellers on proper procedure.
A computer simulation is simply a computer program that attempts to simulate something. For instance, that same bank might create a computer program that models how long it would take everyone in the bank to evacuate the building in an emergency. They could test the accuracy of the model by comparing the results of the program with actual evacuation times they’ve recorded.
A bank may seem like a pretty complicated thing to model, with a lot of factors to account for. So let’s start with a simpler simulation: Finding the value of π.
You know that you need π to calculate the area of a circle (π r2). Let’s pretend that we don’t know what the value of π is. Can we find it? We know how to find the area of a square (which we do: just square the length of a side!), and how to define the boundaries of a circle (which we do: all points equidistant from a center point). What if we placed points randomly within the square, and then calculated whether they were in the square (by determining if the distance from the point to the center is less than the radius of the circle)? We could get a ratio of points within the circle to points outside the circle, and find the value of π that way. Play around with the graphical program below. What happens when you add the points yourself? What happens when you hit run?
How close could you get to the actual value of π? Did the simulation get more accurate the longer you ran it (or the more data points you had)?
Augmented Reality
In the above example, we found an approximate value of π. That’s a pretty cool thing for a program to find! But we already knew what the value of π was (ish!). Can we use simulations to find something that we don’t already know? Perhaps to visualize how something might look in a particular setting!
In the video below, a French developer explains the advantages of using simulation software to preview products before purchasing them, as well as other uses.
T-Shirt Designs
As you can see, models and simulations can be used in everyday situations. For instance, have you ever wanted to design a custom t-shirt, perhaps one that says “I took CS50 AP”? T-shirt companies like CustomInk use software to model what your design might look like. Head over to CustomInk’s Design Lab, and try your hand at designing a T-shirt.
How many times did you change the text, or font, or image size? Imagine if each time, you had to make and print an entire physical T-shirt, just to see what a small change might look like. Clearly, you can often benefit from the rapid prototyping that computer models and simulations allow.
Your Turn
Now that we’ve identified a couple of simulations and their uses, it’s your turn! In this writing problem, we’d like you to research a computer simulation of your choice. Feel free to choose any sort of program, from something esoteric (like flight simulators) to common (like T-shirt designing software). Just make sure that you can explain how the simulation is a computer program, and the benefits of using it. First open a text editor and create a file called simulate
(be sure that the file extension is either .doc
, .docx
, .pdf
, or .txt
)
Identify the users of the simulation, and the situations in which it is used. Then, show your lower level understanding by finding what inputs the program takes, and what data it outputs (if any). Does the program account for all the features it is trying to model? Does the model rely on any assumptions? Are there downsides to using a program instead of testing in the real-world? What are those downsides?
You should aim to write about 300 to 400 words in this part of the problem.
Need some ideas? Check out:
- Honda’s crash test simulation, or
- Loma Linda University’s Medical Simulation Center, or
- 3D Home Remodeling visualization software, or
- Baylor’s Dental Simulation Lab, or
- Physics Simulations of towers falling over.
More Thoughts
Once you’ve finished your writing problem, go ahead and watch the video below, in which Elon Musk (of SpaceX and Tesla) discusses a theory of his.
Ponder that. Was someone programming you to write this problem?