"Physics for Video Games" is a lab-based physics course for non-science majors. It has no prerequisites. Here are some notes about the course.
-- The course web site has video and code snippets.
-- The 2013 course used Classic VPython. The 2016 course used GlowScript VPython.
--The class was a "lab-based course" so it included labs. I mostly used video analysis with Tracker video analysis software for the labs.
--The course is for non-science majors so the physics is fairly low level on the one hand. On the other hand, we used 2-D vectors and examined collisions with friction which makes the course higher level than most conceptual physics classes, in this regard.
--We mostly built and studied games like the old Atari games: space invaders, pong, lunar lander, tank wars, asteroids... The asteroids game was the culmination of the course because it included relative motion, Newton's second law, and conservation of momentum. It turns out that old Atari games mostly had wrong physics, like the bullets in space invaders had wrong relative motion (unless you imagine a different launch angle). In asteroids, the ship slows down in space. I guess there's drag in space? Go figure.
--We had a midterm project and a final project. The midterm project was a game that used constant velocity motion (except for collisions). The final project was non-uniform motion.
--If you teach a similar class with physics and/or math majors, you can do a lot more with correct rigid body motion (including rotation) than I did. What's neat is that you can tailor my class to an upper level audience quite easily.
--Each programming project had three levels: A, B, and C. If they finished the exercises in the chapter, it was a C. If they added features, they could get to the A or B level. Because of tests and projects, I didn't have a problem with grade inflation. Averages were in the C+ range. But the kids who loved the class had the incentive to shoot for A level programs, and kids who hated programming could escape with a C on the programs.
--Each chapter corresponds to a 100 minute class period. There were a few short lectures, but each class period was mostly devoted to an experiment or a programming activity.
--Often I had kids play the original game before programming our version of the game.
--Before developing the class, I wrote a missile command game in VPython in order to gauge what kinds of programming and physics content I would have to teach in the class. This was a great game to illustrate vectors and uniform motion but was too hard for non-science majors.
--I thought about using pygame but after investigating it, I realized that VPython would help me emphasize the physics and de-emphasize programming. Pygame was going to be too much programming. They would have always used pixels, etc.
--Students uploaded their VPython programs by posting the URL to their program on glowscript.org in WebAssign.
--If you use WebAssign, please contact me. Many of the end-of-chapter problems, experiment questions, and program activities are in WebAssign.
I'd like to receive feedback, whether positive or negative, if you use these materials. Also, please send me corrections.
Aaron Titus atitus@highpoint.edu