Learning Objects - open source
These learning objects are based on the idea that multiple representations of a concept help understanding. They can be just run as simulations or can be modified and experimented with by changing the source code. Putting it more simply, you can "look at the engine and kick the tyres".

They are the endpoint of a continum from animated demonstrations which can be observed but not altered, through virtual manipulatives which can be altered in predefined ways through to open source objects which can be observed, manipulated or totally reprogrammed. For more discussion of these ideas see Multimedia Learning in Games, Simulations, and Microworlds

I have chosen to program these open source objects in Gamemaker for two reasons:

1. Gamemaker is well suited to graphical representations of moving objects
2. It is an easy language for students to master via game creation

 dice.gmd probability Demonstrates coin tossing, dice tossing, bar graph of cumulative heads and tails, approximation of a normal distribution from repeated sets of 100 tosses frogjump.gmd acceleration, speed, position, sum of series, medium level violence (to frogs) 1/2 + 1/4 + 1/8 approaches 1 trig53a.gmd sin, cos, tan and their uses An explanation of trigonometric functions and 4 game samples using them (GM5.3a) newton.gmd newton - Newton's law of gravity, or newton1 - drop into lunar orbit (a bit more complicated)   Newton published his famous law of universal gravitation in his Principia Mathematica in 1687 as follows: F = G x m1 x m2        ______________________________               r² In this demonstration, an initial speed of 5 is used to escape the Earth's gravity and a further deceleration to speed 1after 40 steps is required to drop into lunar orbit. lander.gmd Lunar lander, Suggestions for improving this game: Sprites for lander with side rockets when firing; keyboard left & right event: change sprite, hspeed= +- value relative; fuel bar showing remaining fuel, no fuel means no rockets; rough terrain, collision event = failure; smooth terrain, collision event = success, if hspeed< value && vspeed