Jupyter notebooks with coding exercises that pair with the labs for Columbia University's UN2200 Earth's Environmental Systems: The Solid Earth
When I was in undergrad, I was shocked by how few of the Earth Science / Environmental Science classes I took at Columbia introduced/implemented programming. Yet, in research opportunities (and even the department's senior thesis!) we were expected to use programming to various degrees. It's intimidating to learn a new, complex topic right when you need it. And, to some extent, I saw it be a barrier for people who felt they couldn't pursue certain opportunities or achieve the analyses they wanted because they didn't have an environment in which to gain these skills!
For the past two years, I've surveyed students before they take Solid Earth with us to gauge their exposure to programming. While over a quarter have generally been exposed to it in non-earth science courses, fewer than 15% have used Python in another earth science course.
While more computational and programming courses have begun to be offered in the department, we think it's useful to integrate these skills into existing courses. Especially given that in research and many other careers, analysis of data is likely to be done in Python or other similar languages like R and MatLab. Thus, rather than analyzing data by hand or solely in Excel, we aim to adopt these labs to involve working in Python based Jupyter Notebooks.
Students were surveyed about their knowledge and comfort level with working in Python in Jupyter Notebooks before the first lab of the semester. All surveys are anonymous to encourage students to be honest with their feedback.
As you can see, the majority of students are either very uncomfortable or uncomfortable with analyzing data and making plots in Python as well as with the tools used to work in Python.
- 00 - Introduction: Introduces Python fundamentals, NumPy, and plotting with Matplotlib
- 01 - Fractional Crystallization: A mathematical and visual conceptualization of fractional crystallization, a confusing topic!
- 02 - Plate Tectonics: Introduces querying databases and mapping
- 03 - Big Data and MORBS: Real-world practice/application using databases, plotting, and mapping
- 04 - Geochronology: Explores thermochronologic modeling
We asked the exact same questions as on the pre-course survey after the last lab with a programming component.
As you can see, we have many more students who now feel comfortable to very comfortable with working in Python. Very few remain uncomfortable or very uncomfortable.
Given that these were new additions to the course, we also asked students about whether they liked it and/or found it useful. We explicitly said they should be brutally honest.
We were excited to find that the vast majority think these Python skills will be useful! Additionally, we were happy how few students did not enjoy learning Python. Following the large amount of neutral replies in 2025, we assessed written feedback and made improvements to the labs. Perhaps these made a difference as over half of students agreed or strongly agreed that they enjoyed learning Python in 2026!




