Cracking the code: An evidence-based approach to teaching Python in an undergraduate earth science setting
Scientific programming has become increasingly essential for manipulating, visualizing, and interpreting the large volumes of data acquired in earth science research. Yet few domain-specific instructional approaches have been documented and assessed for their effectiveness in equipping geoscience undergraduate students with coding and data literacy skills. Here we report on an evidence-based redesign of an introductory Python programming course, taught fully remotely in 2020 in the School of Oceanography at the University of Washington. Key components included a flipped structure, activities infused with active learning, an individualized final research project, and a focus on creating an accessible learning environment. Cloud-based notebooks were used to teach fundamental Python syntax as well as functions from packages widely used in climate-related disciplines. By analyzing quantitative and qualitative student metrics from online learning platforms, surveys, assignments, and a student focus group, we conclude that the instructional design facilitated student learning and supported self-guided scientific inquiry. Students with less or no prior exposure to coding achieved similar success to peers with more previous experience, an outcome likely mediated by high engagement with course resources. We believe that the constructivist approach to teaching introductory programming and data analysis that we present could be broadly applicable across the earth sciences and in other scientific domains.