GEOG5990 Programming for Geographical Information Analysis: Core Skills

1. Introduction

Welcome to the course website!

The course timetable is linked from the GEOG5990 Module Catalogue Page

The website is maintained by Andy Turner and comprises a set of webpages and file based resources.

At the top of each webpage is a button that can be actioned to change between a lighter and darker page style. Below that is a navigation section that links to each page. The pages are sequential and at the end of each page, there is a link to the next page.

There are index and references pages at the end. The index page contains definitions for some terms and so is also a bit like a glossary. As well, it links back to particular sections of other pages that are relevant.

Essentially, the idea is that you - students taking the course - read through the webpages trying out code and undertaking practical exercises as directed.

Please contact your tutor by email or use the Minerva Discussion section if you want help, clarification or there is a problem with these resources.

2. Syllabus

General computer programming language concepts, including:

Python specifics:

3. Expectations

You will learn about:

Computer programming mostly involves computational thinking, planning, problem solving and testing. It is often helpful to break a task into smaller subtasks, and gradually develop an implementation. Often good solutions to coding tasks involve doing things repeatedly for a given sequence of things.

If you are new to computer programming, there is quite a lot of terminology to get used to, some is generic to programming, some is specific to Python.

There are some key concepts which may take a few attempts to get used to and comprehensively understand.

An example of automating QGIS Desktop using PyQGIS is provided.

4. The Learning Journey

Develop your understanding through practise and by reading.

Be experimental - test your understanding by testing code does what you expect it to. If code does not do what you expect, try to understand why - regard failure and errors as a learning opportunity!

One of the keys to coding is learning to be able to interpret errors messages and understand what caused them. If a program you are developing unexpectedle raises an exception and reports an error message, then try to understand why and stop this happening before moving on. Ignoring error messages is nearly always the wrong thing to do!

Be cautious and do not run code that you do not fully trust. If in doubt consult with your tutor.

The webpages with names starting 'ABM' are a sequence of practicals that progress the development of a basic spatial Agent Based Model. The ABM can be regarded as a simple model of autonomous spatial entities that move in an environment, interacting with the environment and each other.

Developing the ABM by following instructions puts into practise some of the theory detailed in other webpages. By the end of these practicals, you should have ABM model code that:

After completing the last ABM practical, you should have sufficient knowledge and skill to develop the model in interesting ways without being given detailed instructions.

To complete the course, you are to undertake an independent project to apply what you have learned to develop some different software - there will be a specification of what the code/software is to do, some guidance for approaching the software development task, but no detailed instructions to follow.

Do not expect to master Python by the end of this course. Usually this takes many thousands of hours of practice over several years.

Try to enjoy the learning journey, the challenges and the rewards. Learning to program and learning Python is empowering!

5. Platform/Software

All the software used in this course is Free and Open Source Software (FOSS) - available to download and install on Linux, Microsoft Windows, and MacOS.

The software is available via 'AppsAnywhere' at the University of Leeds which is accessible remotely via the 'Academic' University Windows Virtual Desktop. The software includes: Anaconda - a data science platform, QGIS Desktop - Geographical Information System software, and various third party Python packages.

6. Assignments and Assessments

There are two assignments that are assessed:

  1. Assignment 1 Portfolio worth 20% of the overall mark and due 23rd March 2023 - developed by completing the ABM practicals.
  2. Assignment 2 Independent Project worth 80% of the overall mark and due 11th May 2023 - developed by applying what you have learned to a software development task for which there is a specification and suggestions of how to approach implementation, but no detailed instructions to follow. You should have sufficent knowledge and skill to begin this assignment after completing the ABM5 practical.
  3. See the module page on Minerva for details of the assignments and how they are assessed.

6. About these learning resources

These learning resources are based on earlier versions of courses developed originally by Andy Evans.

Slightly updated version of the course were developed for years, but a major refactor was completed in the academic year 2022-2023 to make the learning resources more accessible. This refactoring involved implementing a new website build system which is based on Java.