Scientific knowledge should not be a black box, and we should not advocate that any part of what we do not know should remain a mystery. Data collected in the field are the data used to generate a model, and so understanding where the data are headed is enormously important for knowing what to collect and how to collect it. Teaching the various elements of computational thinking in the context of disclosing scientific knowledge and current understandings of Earth processes goes hand-in-hand with advocating communicating science and making it public. While most geology students do not become programmers, it is important for them to understand that the computational and modeling aspects of science are not trivial matters. With a little understanding and groundwork, a non-programmer can know enough to ask probing questions about programming output. Thus, learning to program can help students develop:
- Computational confidence, including the lack of fear of the program
- Problem solving skills
- Logic and reasoning when dealing with big data and models
- Dirt (data collection) to desktop - transform raw collected data to the program so it can be read
- Control of the data - the opposite of a black box. Reading the code and know what it does and why!
- Communicating science
- Reproducible research
Programming with MATLAB
In addition to the overarching benefits of MATLAB, there are specific benefits of learning to program using MATLAB, including:
- Interacting directly at the command line making it easy to debug
- Powerful enough for computationally intensive numerical modeling (e.g. Parallel computing toolbox)
Approaches to Getting Students StartedFrederik Simons (Princeton University) presented his approach to introducing students to MATLAB at the 2015 Workshop: Hello Earth! A grounded introduction to MATLAB. Simons focuses on building programming skills and uses many engaged pedagogies including teaching with data and incorporating research-like experiences. His methods launch students into utilizing many MATLAB features and thinking like an expert.
Download PDF of presentation (Acrobat (PDF) 3.7MB Oct19 15)
Other approaches discussed at the workshop included:
- written diaries recording and reflecting on code, syntax, and programming
- plotting simple things (illustrating that the program produces things they are familiar with)
- assigning variables / using command line
- anatomy of a program - what is it? script, functions
- Diagramming - coding with intention
- Metacognitive opportunities reflection about a problem, such as calculations, correlations, spatial and temporal scales, dimensionality, conversion, functionality, and error.
- Join the Teaching with MATLAB in the Geosciences Community to discuss ideas and get expert answers.
- Using Autocorrelation and Cross-correlation to Explore Links Between River Discharge and Regional Climate, Peter Adams. Students learn to write an efficient MATLAB script to load data, conduct analyses, and plot the results, followed by "publishing" their code.
- Volume of Oceans, and Sea-Level Variations, Charly Bank. In addition to advancing their computing skills, they also need to consider the limitations of their model and are asked to compose a scientific paper.
- Isostasy and crustal thickness, Audrey Huerta. Students learn to manipulate and code algebraic equations.
- Introduction to MATLAB for Geomorphology, Risa Madoff. MATLAB is used to expose beginning students to using computer programming and mathematical concepts to quantify hillslope elevation change over time.
- Global Warming: A Zonal Energy Balance Model and Tracking Groundwater Pollution, Victor Padron. Students develop basic skills in programming and scientific computing by writing their own MATLAB code with graphical representation of the solutions.
- Quantitative Data Analysis, Scott Marshall
- An Introduction to MATLAB for Geoscientists, David Heslop
- Journal of Computational Science Education NSDL/CSERD
- Computational Geosciences: Modeling, Simulation and Data Analysis Springer
- Computers & Geosciences Elsevier