Student Preparation#

(with answers to FAQ like “Do I need to know Python?”#

You may have noticed that there are no formal prerequisites for this course. This was a conscious decision, as I wanted to keep the door open to as many excited students with different backgrounds as possible. But I want to make sure that interested students understand expectations and are prepared to put in the time to fill any potential gaps via self study, ideally before the quarter begins.

To start, please review the following notes, and if necessary, reach out to me via email with questions, info about your background, and/or requests for clarification. Most students tend to underestimate their abilities and overestimate their time availability, so I will do my best to offer honest advice and help set realistic expectations. My advice may be “why don’t you try it for the first few weeks, and see how it goes.” :)

This course is not intended to be an introduction to programming, though it is a great way to improve your programming skills. Ideally, students should have some previous exposure to and a basic understanding of programming (and/or scientific computing), GIS fundamentals, and statistics. You can make up for one of these, but if you’re missing all three, you will likely struggle throughout the quarter.

This is not a computer science class, though we will touch on some fundamentals. While CSE students are more than welcome to join (several have in the past, and got a lot out of the course), the content and level was developed for upper-level undergrad and grad students in engineering and applied science disciplines.

We will use Python for this course, as it is a great language for geospatial data analysis, with large developer and user communities. We will review basic Python, interactive Jupyter notebooks and core analysis/visualization modules early in the quarter, then quickly move on to more advanced geospatial topics. I will prepare background reading assignments and some limited review examples each week, but you are expected to fill gaps on your own as necessary, including any necessary self-study before and during the quarter.

Do I need to know Python?#

If you are relatively new to Python, you can still take this course! But you need to start learning now - don’t wait until the first assignment is due. I can prepare some lists of good online Python resources, but generally, you can just search for “Python tutorial” or “how to learn Python”, open the top 5 results and pick one (or two) that you think will work for your particular learning style. Go through the tutorials, but the critical step is to apply what you’ve just covered. You will quickly forget most material from skimming online tutorials if you don’t try it out yourself, especially if they were prepared so that you didn’t have to do anything beyond click and/or scroll.

We will rely on the following resources in the first three weeks, so I recommend you spend some time with them before the quarter starts:

If you learn better in a more formal workshop or classroom environment rather than self study, consider registering for one of the Software Carpentry workshops before winter quarter. The eScience Institute regularly hosts these workshops in early January, which is perfect timing for this course, so check the eScience event calendar for latest announcements. https://escience.washington.edu/education/tutorials-and-bootcamps/

I am comfortable with R, Matlab or some other programming language, but not Python, is that OK?#

Yes! But you need to learn basic Python syntax and constructs. Please review online materials about migrating from your preferred language to Python, and gain some real Python experience before the start of the quarter - you’ll get much more out of the class if you take the time to do this now and have basic working knowledge before the quarter starts.

Do I need to know GIS?#

If you have some programming/Python experience, but you are new to GIS, you can still take this course! Whether you realized it or not, you’ve probably thought about spatial problems in some capacity (maybe a tabular dataset with latidute, longtitude, time and a bunch of other stuff). There are great free resources out there to learn GIS and fundamental concepts on data types, spatial operations, and basic workflows. I recommend that you explore the free and open source QGIS package - see notes in the Technical Resources page: QGIS Notes. There are also many self-study materials out there for ESRI ArcGIS products, which is available through UW site license (https://itconnect.uw.edu/uware/arcgis-esri/). Both are installed on the CEE computer lab compuers and COE VDI resources.

Pro tip#

Regardless of your past programming or GIS experience, I suggest that you select an appropriately sized task that you currently perform manually or some other way (e.g., R/Matlab, ArcGIS, MS Excel), and force yourself to implement in Python. Do your best with Google searches, Stack Overflow and reviewing sample code on Github. The process will be frustrating, slow, and messy. You will feel uncomfortable (especially if you’re used to being good at stuff), but it’s really the best way to learn, as you have a vested interest in solving the problem. Maybe nicely ask a friend or family member with some Python experience if they can provide some guidance and help keep you on track if you get stuck.

Optional (but useful) preparation#

  • Intermediate/Advanced GIS

    • ESS521: Advanced Geospatial Analysis with Python for the Earth Sciences (spring)

  • Remote Sensing

    • CEE 432/CEWA532 (joint ESRM432/SEFS 532): Advanced Remote Sensing and Earth Observation (spring)

    • ESRM430: Remote Sensing of Environment (winter)

  • Surveying and Geomatics

    • CEE317: GeoSurveying (autumn)

    • CEE437/CEWA537: Advanced Surveying (spring)

    • ESS422 Field Remote Sensing (spring)

  • Statistics and/or Data analysis

    • CEE465/565 Data Analysis in Water Science (autumn)

    • STAT108: Intro to Data Science (winter)

Audit policy#

See the notes on auditing courses from the UW registrar’s office: https://registrar.washington.edu/registration/policies-procedures/

While I have allowed students to audit the class in the past, I typically discourage auditing, as the learning in this class happens while working with others on the lab exercises each week. This process will take a lot of time, often requiring you to work through frustrating Python syntax issues (“learning the hard way” or “bashing my head against the keyboard”).

Just sitting in on lectures or demos will be far less useful. Furthermore, we are all overcommitted, and without some incentive to turn in assignments each week, it’s easy to let things slip, and you won’t get nearly as much out of the class. But if you can commit the ~10-15 hr/week, then you will learn a ton, especially if make the time to work with others.

If you are still interested in auditing (rather than registering graded credits), please reach out to me via email and provide a little background on your situation. I will make a final decision depending on enrollment, TA load, classroom capacity, etc.

With that said, you are more than welcome to pursue this as an independent study. All of the course materials are posted on this site. You can work through select modules on your own schedule, or synchronously work through all materials during winter quarter with the class schedule. I can provide access to the solutions so you can self-evaluate, as long as you agree with the