# Summer School Agenda for EO Data Processing in Cloud Environments

## Day 1 – Introduction to Earth Observation (EO) 🛰️🌍 & Cloud Computing Fundamentals ☁️💻

**Objective:** Understand the basics of EO data, cloud computing concepts, and introduction to cloud-native EO APIs.

### Morning Session ☀️ – Introduction to EO and Cloud Computing

- Introduction to EO Data: Satellites (optical, radar, multispectral, hyperspectral), popular satellite missions (Sentinel, Landsat, MODIS, SPOT, Pleaides), and data access platforms.
- Basics of cloud computing: IaaS, PaaS, SaaS.
- Main cloud providers.
- Advantages of cloud computing for EO data processing (scalability, storage, speed).

### Afternoon Session 🌞 – Working with various data APIs (the cloud way)

- Download data from the `Copernicus Data Space Ecosystem` `ODATA` API.
- Download data from the Copernicus Data Space Ecosystem `STAC` API using `PySTAC` and `StacStack`.
- Download data from the `AWS` STAC API using PySTAC and StacStack.
- Download data from the `Planetary Computer` STAC API using PySTAC and StacStack.
- Explore AWS STAC API using STAC ODC and Dask.
- Download meteorological data from `Copernicus Data Store` API.

---

## Day 2 – Cloud-Native EO Data ☁️🗺️🧱

**Objective:** Build practical skills in working with cloud-optimized EO data formats. Get introduced to SpatioTemporal Asset Catalogs, xarray and dask to process data.

### Morning Session ☀️ – Cloud-Native Data Formats & Efficient Handling

- Cloud-Optimized EO data formats:
  - `COG`
  - `Zarr`
  - `GeoParquet`
- Work with Cloud Storage (`S3` and `Google Cloud Storage`).

### Afternoon Session 🌞 – Eifficient data processing with Xarray and Dask

- Introduction to `xarray`.
- Introduction to `Dask` and `DuckDB`.
- Dask with Xarray.

---

## Day 3 - Introduction to AI 🤖, ML 📈, Docker 🐳 and Kubernetes ☸️

**Objective:** Introduction to AI and ML and how it applies to EO data processing. Introduction to Docker and Kubernetes.

### Morning Session ☀️ – Fundamentals of Machine Learning

- Overview of AI concepts,e.g., `symbolic AI`, `Machine Learning`, `Deep Learning`.
- Foundation models in practice: Apply `Clay` model for unsupervised change detection from Sentinel-1 and Sentinel-2 images.

### Afternoon Session 🌞 – Introduction to Docker and Kubernetes

- Getting started with Docker. Build your first Docker image.
- Getting started with Kubernetes. Deploy you first app.

---

## Day 4 – ML Pipelines 📥 ➡️ 🧹 ➡️ 📊 ➡️ 🧠 ➡️ 📤

**Objective:** Explore ML pipeline orchestrators for reproducable and repeatable results. The integration of `MLFlow` with pipeline orcherstrators.

### Morning Session ☀️ – Dagster Tutorial

- Introduction to `Dagster`.
- Getting started with Dagster pipelines.

### Afternoon Session 🌞 – Dagster Pipelines Practical Examples

- ERA-5 forecast.
- ESA WorldCover classification.

---

## Day 5 - Inference and Model Deployment 🧠 ➡️ 🌐 ➡️ 📈

**Objective:** Apply the skills to a real-world problem using ML on the cloud.

### Morning Session ☀️ – Case Study Exploration

- Inferece using the trained models in notebooks.
- Model serving and deployment strategies.
- Getting started with `LitServe`.

### Afternoon Session 🌞 – Build ESA WorldCover Classification Service

- Build the inference service of your trained model using `LitServe` framework.

---

## Summer School Wrap-Up 🎓 📜 🎉 🤝 🗣️ 🧭
