Java Language | Numerical Techniques | Physics | |
---|---|---|---|

Hello, World! | Classes, methods, parameters, variable names, objects, constructors, comments, strings, console output | ||

Range of a Projectile | Real-number variables, expressions, trig functions, conditions, loops, parsing and formatting
numbers, plotting graphs with the Plot class |
Range formula from introductory physics | |

Adding Sine Waves | Integer variables, functions that return a value, Plot variations |
Fourier series | |

Simulating Projectile Motion | Graphical user interfaces, event handling with anonymous inner classes | Euler and Euler-Richardson algorithms, estimating truncation error, interpolation | Newton's second law, air resistance, terminal speed, vectors |

Pendulum | Rounding, extending a class, implementing an interface, graphics primitives, threads, animation | Using natural units, monitoring a conserved quantity | Rotational dynamics, large angle motion, damping and driving forces, chaos, phase space plots |

Orbits | Calling superclass methods, synchronizing threads | Verlet (STA) algorithm, adaptive step size control | Gravitational force and energy, Kepler's laws, Halley's Comet, effect of Jupiter on asteroid orbits |

Molecular Dynamics | One-dimensional arrays | Optimizing performance | Lennard-Jones fluid, phase transformations, pressure, temperature, heat capacity |

Random Processes | Math.random() |
Using a pseudo-random number generator | Random walk, radioactive decay, binomial and Poisson distributions |

Ising Model | Two-dimensional arrays, double-buffered graphics | Metropolis algorithm | Boltzmann statistics, ferromagnetism, critical behavior |