# Course syllabus **ATM 433/533: Advanced Geophysical Data Analysis & Visualization** Fall 2023 (Hybrid) ## Instructor **Kevin Tyle**, ETEC-419 Phone: 518-442-4578 ktyle\@albany.edu ## In-class meeting hours **3:00-4:20 PM Tue, ETEC 480** ## Office hours **10:30-11:30 AM Mon. and 3-4 PM Thu**. *(or by appointment)*; **in-person** *or* via **Zoom**: **670 330 460 (ask Kevin for the password)** ## Class webpages Brightspace (Announcements, Grades, Forum): Jupyterbook (Course content, assignments): Jupyterhub servers (UAlbany and DAES computing account required): Primary Server: https://turing.atmos.albany.edu:8000 Backup Servers: 1. https://lore.atmos.albany.edu:8000 2. https://ash.atmos.albany.edu:8000 Git Classroom: ## Prerequisites **ATM433**: ATM350; **ATM533**: Check with instructor ## Required Textbook: None ## Required external account: [GitHub](https://github.com/); sign up for a free account [here](https://github.com/join) ## Credits: 3 ## Grading: A-E ## Objectives This course prepares students to learn, develop, and refine best practices in geoscience-centric data analysis and visualzation using free- and open-source software written in Python. Students will develop interactive, shareable software using what is often termed the *Python Geoscience Software Ecosystem (PGSE)*, a continuously evolving set of Python software libraries with particular application to atmospheric and climate science-related data access, analysis, and visualization tasks. Additionally, students will learn and practice *version control* using Git and GitHub. ## Learning Outcomes By the end of the class, students will have accomplished the following: 1. Accessed, analyzed and visualized geoscience datasets using the *PGSE* demonstrated in class and with online resources such as 2. Minimized the need to download copies of datasets from remote servers in favor of using PGSE client-access methods 3. Developed publication/presentation-ready visualizations, both static and interactive 4. Mastered the use of Git and GitHub for software developement and version control 5. Contributed reproducible, citable workflows in the form of Jupyter notebooks to Project Pythia's [Cookbook Gallery](https://cookbooks.projectpythia.org) ## Course Delivery Plan This class is presented in a hybrid, synchronous/asynchronous manner. The following content methods will be used, although each week may vary in the use of each method: 1. In-class lectures 2. Interactive, self-paced tutorials, such as [Project Pythia](https://projectpythia.org) 3. Jupyter notebook-served content, using the department's Jupyterhub servers 4. Instuctor-authored and third-party videos, such as the [Unidata's Metpy Monday weekly YouTube video series](https://www.youtube.com/playlist?list=PLQut5OXpV-0ir4IdllSt1iEZKTwFBa7kO) 5.Readings from published material, such as journal articles or online-accessible textbooks ## Course schedule (subject to change) | Week | Period | Topics | Python Libraries | Assignment Milestones | | ---- | -------------- | ----------------------------------------- | --------------------------------- | ----------------------------- | | 1 |Aug. 21-27 |Introduction; Git, Python and Jupyter |Jupyterlab |Set up GitHub account | | 2 |Aug. 28-Sep. 3 |Git & Github; Plotting |Matplotlib, Cartopy | | | 3 |Sep. 4-10 |Tabular datasets |Pandas | | 4 |Sep. 11-17 |Georeferenced tabular datasets |Geopandas | | 5 |Sep. 18-24 |Gridded datasets |Xarray, MetPy |HW 1 due | | 6 |Sep. 25-Oct 1 |Gridded datasets,Zarr |Zarr | | | 7 |Oct. 2-8 |Gridded datasets |Xarray | | | 8 |Oct. 9-15 |ARCO Gridded Datasets |Xarray, Zarr |HW 2 due | | 9 |Oct. 16-22 |Rasters and shapefiles |Rasterio, Contextily |Midterm assignment assigned | | 10 |Oct. 23-29 |Cloud-optimized Data |Parquet |Final project introduction | | 11 |Oct. 30-Nov. 5 |GPU-optimized data analysis/visualization |RAPIDS environment, Datashader |Midterm assignment due | | 12 |Nov. 6-12 |Interactive visualization |Holoviz suite | HW 3 due | | 13 |Nov. 13-19 |Interactive visualization |Holoviz suite |HW 4 due | | 14 |Nov. 20-26 |3D-viz |PyVista, VAPOR, Napari |HW 4 due | | 15 |Nov. 27-Dec. 3 |Project presentations | |Final Project due | ## Grading and assessment
  1. Weekly class participation, which may include one or more of the following each week (15%):
    1. Version control and repository syncing, via git and GitHub
    2. Execution / completion of example Jupyter Python notebooks
    3. Participation in the Brightspace class forum
    4. Participation in surveys
    Participation for the previous week will be marked as a boolean 1/0 every Tuesday that class meets (Thursday otherwise)

  2. 4 homework assignments (30%)
    Grad students:There will be one additional mandatory task in each homework assignment

  3. Mid-semester assignment: "Adopt A Library": explore a Python geoscience library not covered in lectures and create a GitHub repository that applies the library to a scientific topic of your choice (25%)
    Grad students: Your repository will take the form of a scientific journal article

  4. Final project: Contribute a reproducible workflow to Project Pythia's Cookbooks repository (30%, team-based)
    Grad students: Present a 30-minute oral presentation of your Cookbook
Homework assignments will be distributed and discussed during the Tuesday in-class lecture period, and will be due at 3PM Eastern the following Tuesday, unless otherwise directed. Lateness penalties are as follows: 1. Up to 24 hours late: 10% penalty 2. 24-48 hours late: 20% penalty 3. 48-120 hours late: 50% penalty 4. More than 120 hours late: 100% penalty Since assignments will typically be submitted electronically, each file will automatically have a timestamp, to avoid any questions of the time that the student completed the homework. The instructor reserves the right to reduce the penalty if the situation warrants. **Communication is key: if you are having difficulty meeting the deadline, do not hesitate to reach out; please avoid waiting until the due date to get in touch with me!** ## Keys to succeed in this course 1. Do not fall behind. Each unit will build on concepts learned in prior ones. 2. The programs we write never work the first time (or the second, third, ...). It's when things don't work that we actually learn something. Do not wait until the last minute to start a coding assignment (or any assignment for that matter). 3. In videos where *live-coding* occurs, and in web-served content where there are code cells, TYPE IN THE CODE as you follow along. This will build your coding muscle memory. 4. Document your code using [Markdown](https://www.markdownguide.org/). Not only will it make it easier for someone else (perhaps your instructor, perhaps your peers, perhaps someone who discovered your amazing notebooks on GitHub) to understand your code, but you will also be glad you did when you come back to a notebook you developed more than a few weeks ago! 5. As this is a data *visualization* course, pay particular attention to the graphics you create. They should have:
  • An informative title
  • Legends and/or colorbars when necessary
  • Labeled x- and y-axes
6. Do not feel shy about asking questions. Even an expert started as a complete novice. Ideally, make it a point to use the class forums on Brightspace. But do try to seek out online resources, such as StackOverflow and GitHub's Issues Trackers to work out problems on your own before immediately seeking out help. ## UAlbany policies and procedures Religious observances: New York State Education Law [Section 224-A]() excuses absences due to religious beliefs. Students must notify the instructors in a timely manner prior to the absence. Academic grievance policy: Students who seek to challenge an academic grade or evaluation of their work in a course or seminar, or in research or another educational activity may request a review of the evaluation by filing an academic grievance. For more info, see . Campus workplace violence prevention policy and program: UAlbany is committed to providing a safe learning and work environment for the University's community. For more info, see Accommodating Disabilities Policy: Please visit Albany's Disability Resource Center for more info: Standards of academic integrity: Please refer to