Problem #2:
Free-Form Internal Wave Assignment

Order vs. Chaos?  Conformity vs. Creativity?   What it the best way to teach
atmospheric dynamics with Mathematica?  Here I will try an experiment: I will give you some tools, examples, knowledge and we will see what happens!

After using (playing with) wavepackets.nb, internalwaveshoot.nb, plotinternalwave.nb, animator.nb, do some "science" with Mathematica. If you don't feel a light bulb turning on inside your head, I suggest maybe trying one of the following:
 ☺ internalwaveshoot.nb finds (OverHat[w])(z) and ω in internal waves for general profiles of N(z).  Find the rest of the fields (OverHat[u])(z), (OverHat[b])(z),  (OverHat[φ])(z) and make a vertical cross-section plot of a wave, as was done for the very simple wave in plotinternalwave.nb.
 ☺ Make an animation of a standing internal wave.  (Although animation is easy in Mathematica, animating plots as in plotinternalwave.nb could be difficult since a single frame requires superposition.  You may need to read about Modules,
 which are Mathematica's version of subroutines.
  ☺ Make an animation of a wave packet of waves with dispersion relation:
  (ω^2)=gH(k^2)+(Subscript[f, o]^2)
 ☺ Be creative (but be profound, wise and eloquent!)