I wrote this syllabus for a hypothetical undergraduate class on open source tools for geosciences. It's written as a 10-week 2-credit class, but feels very time-constrained. I might eventually extend it into a 4-credit class, or adapt it for a 15-week semester, depending on my needs in the future.
If you use any of this in your own course design, I'd be interested to hear feedback on it!
2 Credits. Meets 1x/week
Instructor: Jonathan Perry-Houts
Office Hours: TBA
Course Description
Earth sciences are moving towards increased use of computational
methods. Whether it be traditional data analysis, numerical modleing,
GIS, mapping, determining metamorphic phase equilibria, or otherwise,
computational skills are necessary in all subfields of Earth science.
Some existing tools in common use, including Matlab, ArcGIS, and Comsol,
come with restrictive and expensive licenses which limit their
accessibility and restrict the spread of quality, reproducible science.
Fortunately, through contributions from academic researchers, companies,
and individuals, all of the important functions of these commercial
software packages are possible with Free and Open Source Software
(FOSS).
In this course we will cover basic usage and capabilities of many open source tools for geosciences. Although terse, we will touch on the capabilities of many tools, and explore available resources for deeper involvement with each tool. The culmination of these efforts will be a whole-class collaborative project, in which we contribute to the development of a FOSS project.
Course Objectives
This course is intended to familiarize students with the capabilities of
free software tools for Earth sciences, and with the process by which
free software is developed. By the end of the term, students will be
able to:
Prerequisites
Students will need a basic background in computing, equivalent to the
introductory computer science course sequence. Exceptions can be made
for anyone who feels comfortable with the fundamentals of programming
such as loops, conditionals, and functions. Contact me for registration
approval if you have not met the specific prerequisites. Also, feel free
to contact me if you’re unsure whether you are prepared for this class.
Chances are, the answer will be a tentative yes.
Course Materials
No paper books are necessary, but many online resources will be
discussed throughout the class. Access to computers is provided in the
computer lab, and in the library, but having a personal computer on
which you may install software is helpful. Most of the programming
assignments in this class will be done in the Python programming
language. Students will have access to a “JupyterHub” server on which
they can complete their assignments. JupyterHub is accessed through a
web browser, and no special software is technically necessary. Contact
me if any of this presents a challenge to you because of technical or
accessibility reasons.
Term projects
The culmination of this class involves a class-wide collaboration which
will result in a patch for widely used open source software package. The
exact project will be announced at the beginning of the term.
Expectations and Grading
Students are expected to attend every lecture period. There will be
in-class activities almost every day, for which you will forfeit points
if not in attendance. I will do my best to make rubrics available ahead
of time for all assignments to make my grading methods as transparent as
possible. Grades will be divided as follows:
50% | In-class participation |
25% | Weekly homework assignments |
25% | Contributions to class project |
Diversity
Open inquiry and freedom of expression are fundamental to higher
education. As an institution, we are committed to encouraging
exploration of divergent perspectives and diverse identities. For that
reason, and many others, all students are expected to respect one
another. Harassment or bullying will not be tolerated, and will lead to
disciplinary action to the extent permitted by institutional policies.
Academic Integrity
All students are expected to complete assignments in a manner consistent
with the spirit in which they were assigned. Group work is encouraged on
most assignments, and I will make it clear when it is not allowed on a
per-assignment basis. Individual submissions based on group assignments
are expected to be each individual's own work. Sources for quotations,
paraphrases, and very specific ideas are to be acknowledged (style of
attribution doesn't matter to me — just be consistent). Academic
dishonesty will be dealt with following all applicable institutional
policies.
Students with Disabilities
I strive wherever possible to make my courses inclusive of all students.
If there are aspects of the instruction or design of this course that
create barriers to your participation, please notify me as soon as
possible. I always encourage you to discuss concerns with me during
office hours, so that we can strategize ways for you to get the most
out of the course.
Additionally, I encourage you to take advantage of the resources on campus for accessible education. They can provide services beyond this particular course to help you get the most of your college experience.
Tentative Course Outline (subject to change, depending on student interests)
Week | Topics |
---|---|
1 |
Intro:
course overview
technical setup / orientation discuss final project topic and mechanics |
2 |
Intro to Python:
capabilities
packages "Hello World" |
3 |
Resources:
community documentation (forums, wikis, etc.)
API references accessing the source code, reading comments |
4 |
GIS:
intro to qGIS / GRASS
scripting (python interface) |
5 |
Data manipulation and visualization pt 1:
types of data
numpy, scipy, pandas, etc. methods of data representation graphical representation best practices:
axes, colormaps, hillshade, contours, etc.
tools overview: matplotlib, mostly.
|
6 |
Numerical modeling pt 1.:
partial differential equation primer
into to numerical methods finite difference method (how it works, strengths, limitations) |
7 |
Contributing to open source projects:
common software project layouts
version control code peer review programming stylistic best practices |
8 |
Numerical modeling pt 2. (existing tools)
PDE modeling packages
phase equilibrium modeling tools overview of other modeling techniques (finite element, finite volume, etc.) |
9 |
Visualization pt 2 (complex multidimensional data)
overview of available tools
intro to Paraview + VisIt use cases for various tools and methods |
10 | Wrapping up term project, and exam review |