Overview
The materials are designed for undergraduate students who have completed an introductory class in Atmospheric Sciences and Atmospheric Thermodynamics. However, the modules are also suitable to supplement graduate student instruction and also be used by professionals who seek simple introductory materials on the topic.
The modules are designed for students to construct knowledge by interacting with the web-apps. They can do so by working alone or collaborating in small teams. The modules are interconnected and somewhat build on each other. However, the modules can also be used independently as assignments for special topics in graduate classes, which include a more mathematical treatment of the subject.
When used in a class setting, some of the individual apps are introduced with mini lectures. Students can work alone or in groups interacting with the individual apps in the module on prompt. This is followed by a whole-class discussion, soliciting responsed from each group, clearing up muddy points, and summarizing the main takeaway messages. Some of the exercises are specifically designed as homework, e.g. the programming exercises. Others can be assigned as either in-class or homework assignment, depdending on the class flow.
Modules are grouped by topic and not tailored to be completed within a single class period.
Notable Influences
- Process Oriented Guided Inquiry Learning POGIL pedagogy. Although the modules do not strictly apply all POGIL components, they embrace the idea that knowledge is constructed by the learner through actively manipulating, concepts, data and equations using peer instruction.
- Rogers, R.R. and Yau, M.K.: A Short Course in Cloud Physics. Especially the collision/coalescence chapter.
- Bjorn Stevens: Twelve Lectures in Cloud Physics. Especially the scripts' minimalist approach distilling the topics to its essentials.
- Hinds, W. C.: Aerosol Technology. Especially the author's extensive example calculations.
- Petty, G. W.: A First Course in Atmospheric Radiation.
- Glossary of Meteorology. Used for definitions of key concepts.
Hosting
The docker image can be served to a large group using jupyter-hub with Kubernetes. Running the Kubernetes engine for students to access the content 24/7 costs ~$30/user and semester. Cloud hosting is needed because
- Hosting the service in the cloud makes the notebook available on tablets, mobile devices, and any computer that has browser access, thus broadening the opportunities to use the apps outside of class, and for students that need to use library computers.
- Install on local machines can be tricky, especially for the notebooks that interface with atmospheric models written in other languages (e.g. python and fortran).
- The notebook widget state can potentially be corrupted during saving and restart, which leads to a delay in spin-up and student frustration. The Kubernetes engine serves a non-persistent container image that is guaranteed to work.
- The Kubernetes engine can scale up and down with student demand.
- The cloud services are almost 100% reliable.
Contributing
If you wish to use the material in your course I recommend forking the repository and adapting the content as needed. If you do so, please share the improved content. Linking the repositories will help others to find the class materials.
If you have suggestions for improving the questions please email the author and/or open the discussion in the issues tab.
Software
The apps are programmed using the Julia Progamming Language using the reactive prgramming paradigm. Some of the key packages that are used:
- Gadfly.jl for standard plotting
- Compose.jl for vector graphics
- Interact.jl for reactive widgets
- Documenter.jl for creating the documentation
- Makie.jl for GPU plotting and movie animations
- PyCall.jl for calling Python-based parcel model
- IJulia.jl for Jupyter integration
- WebIO.jl for rendering Apps
- Fezzik.jl for creating a precompiled system image to speed up execution time
The key packages key pacakages that create the content are Gadfly and Interact. Note that Gadfly is based on the Grammar of Graphics. It is built on top of Compose.jl, declerative vector graphics written in pure Juia.
There are pros and cons of this approach. The pros for Gadfly.jl are
- The grammar of graphics creates a paradigm for easy to decode and clear visualizations. This is critical for learning, as reading complex graphs and reasoning about the content is part of the learning objectives.
- The visual appeal and rendering is of high quality (e.g. compared to default matplotlib).
The main cons are
- The rendering can be slow(er).
- Grammar of graphics code can be verbose.
- The syntax is very different than most other scientific plotting packages (e.g. MATLAB, python, IDL).
Interact.jl works with most of the available plotting packages (e.g. Plots.jl, GR.jl). In fact, the first version of these notebooks used Plots.jl. Note that Makie.jl is very promising but requires cloud-based GPU resources to be deployed effectively in this context.