Hands-on Geographical Artificial Intelligence (GeoAI) introduces you to the foundational approaches and methods of machine learning and artificial intelligence applied to spatial data. Featuring new material and a technical ecosystem for modern spatial data science, this course covers everything from basic machine learning (ML) to deep learning (DL), foundation models, and AI ethics.
This is a new, jointly developed course held collaboratively by the Department of Built Environment, Aalto University, Finland and the Institute of Geodesy (Working Group Geoinformation), TU Graz, Austria.
Course IDs & Credits
GST.416UF.GIS-E6020.Important
Duration and registration
Aalto students: If you still need to build your Python and GIS foundations, consider taking the Geo-Python and Automating GIS-processes courses (5 ECTS each) before this course — see geo-python.github.io and autogis.github.io.
Learning objectives#
After completing this course, you should be able to:
Explain and apply machine learning and deep learning algorithms to geospatial data analysis problems
Process and analyze geospatial imagery using AI-based computer vision methods
Use and evaluate Large Language Models (LLMs) and Foundation Models for geospatial tasks
Identify and address geospatial bias, fairness, and representativeness issues in AI systems (AI Ethics)
Apply and critically assess state-of-the-art GeoAI methods in real-world scenarios
Prerequisites (Noncompulsory)#
Before taking this course, you should have:
Experience with Python programming for GIS
Fundamental knowledge of Spatial Data Science
Python & GIS basics refresher: If you need to refresh your skills, we strongly recommend going through the open online book Introduction to Python for Geographic Data Analysis by Tenkanen, Heikinheimo & Whipp (2025).
Supporting material#
Course Specific Reading: For the introductory sessions, the following existing materials are highly recommended:
Help improving the materials
This is a new joint course.
As a fast-evolving domain, the content of the course is likely to change and improve. By being a fully open
educational resource, you can also help making the course better.
If you find any errors, typos, or other problems, please help by suggesting an edit on GitHub.
You can do this easily by clicking suggest edit under the 🐙 GitHub icon located at the top-right of each page.
Course format & Ecosystem#
Course exercises require programming in the Python language. The course consists of combined Lecture/Practical sessions in which concepts are introduced and then immediately applied to real-world geospatial datasets.
The main tools and services we will use on this course include:
GitHub Classroom: Used for hosting online lecture and practical materials.
Supercomputer: Students will have access to the Finnish CSC supercomputer for training models and running inference.
Assessment / Grading: The final grade is based on practical assignments:
2 Individual Assignments
1 Collaborative Group Project (executed in mixed teams of students from both TU Graz and Aalto University)
Grading is based on the total points earned across all assignments. Note that grading schemes differ slightly between Aalto University (first table) and TU Graz (second table):
Aalto Grade |
Points required |
Description |
|---|---|---|
5 (excellent) |
≥ 90 % |
Outstanding performance |
4 |
80 – 89 % |
Very good performance |
3 |
70 – 79 % |
Good performance |
2 |
60 – 69 % |
Satisfactory performance |
1 (pass) |
50 – 59 % |
Adequate performance |
0 (fail) |
< 50 % |
Insufficient performance |
TUG Grade |
Points required |
Description |
|---|---|---|
1 (excellent) |
≥ 90 % |
Outstanding performance |
2 (good) |
75 – 89 % |
Very good performance |
3 (satisfactory) |
60 – 74 % |
Good performance |
4 (sufficient) |
50 – 59 % |
Adequate performance |
5 (unsatisfactory) |
< 50 % |
Insufficient performance |
Program#
The course includes 8 teaching sessions running between March 16th and May 19th, 2026. Topics for each week are listed below:
Date |
Graz |
Helsinki |
Lecture |
Practical |
Lecturer |
|---|---|---|---|---|---|
16.03. |
09:00-12:00 |
10:00-13:00 |
L0: Course Overview
L1: Introduction into GeoAI
|
P1: Introduction into Practicals |
Ivan Majic |
23.03. |
09:00-12:00 |
10:00-13:00 |
L2: Machine Learning Basics |
P2: Machine Learning Practical |
Subhrashanka Dey |
14.04. |
13:00-16:00 |
14:00-17:00 |
L3: Deep Learning |
P3: Deep Learning Practical |
Ivan Majic |
21.04. |
13:00-16:00 |
14:00-17:00 |
L4: GeoAI in image processing |
P4: GeoAI in image processing |
Ivan Majic |
28.04. |
13:00-16:00 |
14:00-17:00 |
L5: Advanced aspects of GeoAI |
P5: Project topics discussion |
Ivan Majic |
05.05. |
13:00-16:00 |
14:00-17:00 |
L6: LLMs and foundation models |
P6: Using LLMs for GIScience |
Farzad Shami |
12.05. |
13:00-16:00 |
14:00-17:00 |
L7: GeoAI applications and roadmap |
P7: Project Q&A |
TUG + Aalto |
19.05. |
13:00-16:00 |
14:00-17:00 |
Group project presentations |
Contents#
Course information
Tutorials
- Tutorial 0: Meeting Git
- Tutorial 1: Introduction to Python and Jupyter
- Lecture 2 - Basic ML Tutorial Notebook 1: ML Classification with Vienna Airbnb Data
- Lecture 2 - BasicML Tutorial Notebook 2: ML Regression with Vienna Airbnb Data
- Lecture 3 - Deep Learning Tutorial Notebook 1: Introduction to Deep Learning with PyTorch
- Lecture 4 - Deeplearning Tutorial Notebook: Convolutional Neural Networks with PyTorch using EuroSAT
- Lecture 4 - Deep Learning Tutorial Notebook: Pool Detection with YOLO
- LLMs & Vision LLMs for GeoAI — Part 1: Foundations
- LLMs & Vision LLMs for GeoAI — Part 2: Hands-on Lab
- LLMs & Vision LLMs for GeoAI — Part 2: Solutions
Week 3