Students at the University of Texas at Austin have celebrated the conclusion of the first ever Python for Geoscience Research course. The course teaches the fundamentals of the programming language Python to future geoscientists and challenges them to put their coding skills to work in personal projects.
Despite this being the first time the course has been offered at the Jackson School, it made a lot of sense to students.
“Software and technology are a way to make really complex science available to the general public,” said Stephanie Forstner, a research scientist associate at the Bureau of Economic Geology currently in the first year of her PhD.
Stephanie is using Python to create figures and data visualizations about natural fracture systems in the Earth. As well as helping her save time she can now analyze data to create models that can predict such fractures.
“Learning Python gives me the tools to visualize my data and make it more understandable,” she said. “It’s important to be able to do this because there’s nobody better than scientists to make the science more accessible.”
Python is popular among scientists like Stephanie who do not have a background in programming because it is versatile, has an extensive and supportive community, and is easy to learn.
The new course was developed and taught by Gail Christeson, senior research scientist and Associate Director at UTIG. Gail is relatively new to Python and only got into it after she heard colleagues talking about Jupyter Notebooks, a popular online platform for sharing programs developed with Python, which struck her as a powerful tool for collaboration in science.
“I took a few online courses and quickly realized we should be teaching Python to our students,” said Gail.
The first ever Python for Geoscience Research course was offered in the Spring 2019 semester. Gail said the course is designed to guide students from “what is a variable” all the way to carrying out dataset analyses and producing figures.
Nicholas Montiel, a graduate research assistant at UTIG who is also in the first year of his PhD, was one of the students who had no background in programming. “I didn’t know how to code before this course,” he said. “I once took a MATLAB class at another university but it was terrible. This is way better.”
Nicholas jokes that just four months ago, he didn’t know his Numpy from his Pandas. Now he has developed a tool that crunches vast amounts of marine geophysical data to graphically show millions of years of tectonic changes on Earth in just a few minutes.
For the last class of the semester, six students were chosen by their classmates to present their final projects. The projects on show demonstrated the versatility of the language when applied to any scientific data. These ranged from phylogenetic visualizations to a project analyzing hydrocarbon reservoir data. Other projects included an analysis of renewable energy trends, rapid analysis of flooding data, a study of changes in riverways using satellite images, and a surprisingly informative visualization of Pokémon data.
Gail said that the students selected a really good mix of interesting projects. One of these was a project by Brandon Cooper, a Jackson School undergraduate, who gave an impressive demonstration of how geoscientists can quickly transform any large dataset into meaningful visual figures. According to Gail, this is especially important when faced with a new dataset, such as when scientists are working in the field.
Other projects, such as Jose Julian Salazar, went beyond the basics, using complex codes to carry out analyses of pressure and fluid flow in oil and gas reservoirs.
There is clearly high demand for such courses at UT and Gail plans to offer the course again in Spring 2020. Although the course focuses on applications in geoscience research, a third of the students who enrolled this semester were from outside the Jackson School. What’s more, the course seems to resonate with students at all levels. Gail said that although some students were novice programmers and others considered themselves expert, everyone seemed to get a lot out of the class.
One of the truly interesting features of this course, is the diversity of students. Of the six final projects presented in the last class, two were from undergraduate students, two from geoscience students, and two from engineering students.
“I think what’s also telling was that we had pretty much a full turnout today,” added Gail. “The students don’t have to turn up to the last class so I think it shows that all these students with these really different backgrounds were motivated to turn up and hear their classmates talk about their projects.”
Another reason, of course, might be the students’ fondness and respect for their instructor.
“Dr. Christeson did a really, really good job of teaching the course,” said Stephanie, “honestly, before this semester I didn’t know how to speak computer. Now I do!”
What the students had to say
For the last class of the semester, six students were chosen by their classmates to present their final projects. We asked these students to tell us what they thought of UT’s new Python for Geoscience Research course.
Cheng (Laurel) He
Cheng (Laurel) He is in the final year of a Geosystems Engineering and Hydrogeology undergraduate degree at the UT Hildebrand Department of Petroleum and Geosystems Engineering. Laurel wants to use her knowledge and skills to make positive changes in the world. Laurel first learned coding in a Matlab engineering class. Although powerful, Matlab is much less user-friendly than Python and for Laurel, as with many users, it was a daunting experience.
Laurel said that Dr. Christeson’s course helped her fall in love with coding. “I love the syllabus design of this course, Gail did an awesome job teaching. CS programming classes often have hundreds of people lining up or waitlisted to get in. By having our own GEO Python class, we can skip the long lines and learn the newest programming language and skills that are most relevant to our research. I would definitely recommend this class.”
Brandon Cooper first encountered Python as an engineering student, while learning to visualize abstract physics. Now an undergrad student at the Jackson School, Brandon jumped at the chance to learn how to apply Python in a more practical way.
“What I liked most was the way Dr. Christeson taught the course by giving us the basic knowledge and skills to be able to teach ourselves. It’s a great introduction to coding and I have already recommended this course to several students in the Jackson School.”
Shazzadur Rahman is a graduate student at the Department of Civil, Architectural & Environmental Engineering. For his final project, Shazzadur decided to step out of his field and channeled his efforts to create a Python-based program to help players matchup Pokémon in a fight! As well as a genuinely useful tool, Shazzadur also learned much about which data visualizations give the most insightful information.
Shazzadur said: “This course is well-structured: it starts with the basics and gradually steps up. Dr. Christeson is a very nice person who focused more on our learning experience rather than rushing things or working only for grades.”
Cole Speed is a graduate research assistant at the Bureau of Economic Geology and currently working on his PhD. Cole’s presentation was a visually striking analysis of how rivers morph over time. His project showed how tools developed with Python can be used to predict how rivers will evolve over time based on satellite data.
“I would highly recommend this course to all graduate and undergraduate students,” said Cole. “It has really opened my eyes to new ways of visualizing, analyzing, and interpreting my data.
Jose Julian Salazar
Jose Julian Salazar is a graduate research assistant at UT Petroleum and Geosystems Engineering where he is working on his PhD. Jose particularly enjoyed learning how to use Python libraries for visualizing geodata (especially Folium). These tools are especially useful to geoscientists in the field because they are simple and easy to use from a mobile device, allowing geoscientists to plot data gathered in the field onto maps with just one command.
Jose said: “I would definitely recommend the class because it has a hands-on approach. We started coding from the first day and the Jupyter notebooks are straightforward to use and really useful. Thanks to the class, I am able to integrate the skills I learnt in my research.”
Grace Musser is a PhD student in the Department of Geological Sciences at the Jackson School. For her final project, Grace used tools she developed with Python to study evolutionary relationships and patterns among bird species. This kind of work could aid conservation efforts to protect birds under threat of extinction as well as help scientists draw an evolutionary path from dinosaurs to modern birds.
“I learned so much in this course in terms of how to quickly pull data, analyze it and visualize it in many different ways,” said Grace. “There’s so much you can do with Python and this is a great and easy way to learn how to do it. It seems like it is applicable to any type of research.”