Skip to Main Content

Scientific Programming for Earth and Ecological Discovery

Course Description

An introduction to scientific programming, this class will develop students’ quantitative problem solving skills using a high-level, freely available programming language (Python). Students will apply skills to develop computer code to perform data analysis and modeling commonly required in Earth and ecological sciences. Additionally, students will develop code to produce explanatory graphics and visualizations using Python. To promote the sustainability and continued maintenance of skills, students will be exposed to the diverse ecosystem of online Python resources.


  • BIOL/GEOS 497: MATH 175 and PHYS 112 or PHYS 212
  • BIOL/GEOS 597: Instructor permission

Course Objectives

  1. Set up a python programming and development environment
  2. Construct logical statements to demonstrate code branching
  3. Explain and use best practices in the naming of variables, functions, and programs
  4. Formulate a prototype for a program based on specified input and output variables
  5. For a particular program or function, identify potential errors, reason how they could be caught, and apply a reasonable method to handle these errors
  6. Create visualizations (e.g., flowcharts, concept maps) of a program to produce a set of specified outputs from given inputs
  7. Develop an outline of the sequential steps required to take given input and produce required output
  8. Describe what a Python module is and why it is advantageous; write a program that demonstrates how an existing module is used
  9. Write a program, making effective use of available programming constructs and libraries, a program that solves a scientific problem
  10. Develop meaningful visualizations of model outputs using the Python programming language and available utilities and libraries
  11. Write a simple dynamical systems model using Python
  12. Review and provide constructive feedback – via written correspondence – as on your colleagues’ code
  13. Identify an online programming resource (e.g., discussion forum entry, documentation, blog) and apply it to solving a problem in a way that can be communicated to collaborators
  14. (Undergrad) Write a program that reads a scientific dataset, performs a statistical analysis, and writes output for later use
  15. (Grad) Write a program that reads a geospatial dataset, performs a geostatistical analysis, and produces summary results in the form of output or a visualization

Boise State University Learning Outcomes

The Foundational Studies Program is organized around eleven University Learning Outcomes (ULO’s), which every Boise State University graduate is expected to have met, regardless of major or baccalaureate degree.  These outcomes guide the development of the courses that students take throughout the undergraduate degree.  Please review the Boise State University Learning Outcomes.

The University Learning Outcomes developed in this course include: (list)

  • ULO1: Write effectively in multiple contexts, for a variety of audiences.
  • ULO4: Think creatively about complex problems in order to produce, evaluate, and implement innovative possible solutions, often as one member of a team.
  • ULO7: Disciplinary Lens: Mathematics. Apply knowledge and the methods of reasoning characteristic of mathematics, statistics, and other formal systems to solve complex problems.
  • ULO8: Disciplinary Lens: Natural, Physical, and Applied Sciences. Apply knowledge and the methods characteristic of scientific inquiry to think critically about and solve theoretical and practical problems about physical structures and processes.

Course Materials

Course Texts

A Primer on Scientific Programming with Python, 4ed., Langtangen, H. P. (editor), Springer, ISBN 978-3-642-30293-0.

This text is required for the class. The print version is fairly heavy (literally), so if you prefer the electronic version, it is also slightly less expensive.