Java Course Project Summary

This table, intended mainly for instructors, gives an overview of what is covered in each of the nine projects in Physics Simulations in Java: A Lab Manual. As the table indicates, the manual has three interwoven threads: one that teaches the Java programming language, a second that teaches numerical techniques, and a third that reviews and expands students' understanding of physics.

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