Here is a prototype example of how these projects may be integrated into a sequence of physics lab sessions. The programming lab sessions are given a double-length class period (typical for science labs) and students either produce a simple program or modify an existing program in that time. Over the course of the term, some of the programs will become quite sophisticated through repeated additions and refinements. The projects described below show a sample progression towards a sophisticated program for simulating wave motion in a solid.
1. One dimensional motion: In this first lab project, the primary goal is to introduce the programming environment and produce some visible result. The goal is to make balls that move in one dimension, bouncing off of the walls of a box. The students vary the speed of the ball, the size of the box and the time step. Questions guide the explorations, e.g., "Count the number of times the ball crosses the box in 30 seconds. How many crossings will it make in ten seconds if the speed is tripled? (Predict and test.)"
2. Two dimensional motion: The previous program is modified for two dimensions. Students set up initial conditions that arrange the balls in some shape moving with a constant velocity and see how the shape is modified by collisions with the walls, and they explore the vector components of velocity.
3. Motion with a constant force: Students modify their previous program by adding a constant force that will change the velocity of the objects between each time step. With a downward force (gravity), students complete some projectile experiments, e.g., "Launch balls with the same speed but at different angles. Which angle produces the greatest range?" Students use screenshots to support their conclusions.
4. Basic orbits: Students add code to make the force position-dependent, using Newton's universal law of gravitation. Scaled Earth and Sun data should produce a nearly circular orbit. Students modify the data and place numerous objects in orbit simultaneously, exploring orbital shapes. Students investigate the relationship between a circular orbit's radius and the orbital period.
5. Multi-body orbits: Students modify their orbit program to make the forces dependent on the relative positions of objects, first for two objects and then for three. This is the first problem they implement that they cannot study analytically. Students should create a system with a Sun and two planets, a Sun, Earth and Moon system, a planet orbiting a binary star and a system with three objects of similar mass.
6. Wave motion: In this lesson, the gravitational force is replaced by a spring force. Students should first experiment with two and then three objects connected by springs. This stretchy string of objects will put on quite a show bouncing about in their box. A stretchy string of ten objects will allow them to observe both transverse and longitudinal waves in the string.
This sequence of six labs would fit well into the mechanics unit of any introductory physics class.