Monday, May 12, 2014

New advanced JS course: Learn to program natural simulations!

Last fall, I discovered an online and print book about programming natural simulations using the Java version of ProcessingJS. I started going through the book myself, porting the programs to JavaScript and trying the suggested exercises. It was so much fun that I thought, hey, let's put this on Khan Academy so that all of our students can have this much fun learning!

Fortunately, author Daniel Shiffman CC-licensed the book, so we were allowed to port over the text, and add our interactive coding challenges and projects on top.

We've just released the new course as "Advanced JS: Natural Simulations," and we think that teachers and students alike will find it a great way to practice JavaScript, learn new ProcessingJS functionality, and brush up on basic math and physics concepts along the way. Here's a run-down of the units, to give you a better idea of what's covered:
  • Randomness: Learn about randomness, probability, and normal distributions, and use those techniques to make all sorts of "random walkers."
  • Noise: Learn about Perlin noise, which you can then use to create animated clouds and mountain ranges.
  • Vectors: Learn how to program with vectors and use them to simulate lightsabers, braking cars, and mouse-following motion.
  • Forces: Use forces to make more realistic simulations, modeling gravity, friction, and fluid resistance.
  • Angular movement: Use angles, polar coordinates, and trigonometry to simulate angular movement like batons spinning, boulders rolling, and cars rotating as they turn.
  • Oscillations: See how you can use the sine function to model simple harmonic motion, how to simulate a pendulum, and how to program Hooke's law for spring forces. Create programs that simulate slinkies, waves, and puppets along the way.
  • Particle Systems: Now that you've learned many ways to program the movement of single objects, you'll create particle systems, the standard way that games and movies simulate movement of groups of particles, like for smoke, wind, fire, and water.

Intrigued? Check out the intro video here, and you'll be on your way!