This story map requires JavaScript, but running JavaScript is not currently allowed by your web browser. If you wish to view this story, please enable JavaScript in this browser or try a different browser.

Getting Students to Code

The creation of a Geography Programming Bootcamp

Add your image or video

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."culpa qui officia deserunt mollit anim id est laborum."

"A geography curriculum should require students to learn how to code, ensuring that they're equipped for a changed job market that's increasingly detached from GIS as they were originally conceived."

Singleton, 2014, writing in Geographical magazine

m dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."culpa qui officia deserunt mollit anim id est laborum."


The Idea

The ability to automate the processing and analysis of data is a crucial and well-sought after skill within academia, applied geographic research and wider geographical and GIS-related employment. Despite this recognition, this type of programming is not commonly taught alongside GIS in Geography undergraduate courses, leaving students with a significant skills gap when entering the job market.

From learning first hand the need to develop this skillset, we set about thinking how we could help undergraduates gain a first step towards becoming competent programmers. 

We wanted them to gain confidence in programming as well as the process of learning how to program. Often this is a steep learning learning curve, only exacerbated by trying to learn from multiple self-learning courses and tools and not having a cohesive introduction to the world of programming specifically for geographers and using GIS. As a result, we wanted our bootcamp to teach them not just how to program but also about the programming environment, including an introduction to using popular programming tools, such as Notebooks, and geo-related Python libraries, such as GeoPandas and Rasterio.

Already, we had trialled teaching our Geography Undergraduate students how to code. With the support of a GIS lecturer at our University, Jo was encouraged to develop a two-hour Python practical as part of a third year module in 2018, which Kate helped to run. It was well received but the feedback was "it wasn't enough". We were inspired that not only did the students recognize that they were missing the skillset but they also actually wanted to learn how to program. 

Between the two of us, we had the idea that we could create a course which could fill this gap - and importantly, it would be designed for Geographers by Geographers. We wanted to create a course which would introduce students to the basics of programming in a friendly way, using a research topic and set of GIS analyses which were familiar to them. The Geography Programming Bootcamp was born!

Our Geography Programming Bootcamp logo!


The Team

We like rocks apparently.

Jo Wilkin

Content Creator and Delivery Master

GIS enthusiast, with a past working in Humanitarian Mapping for the British Red Cross, Medécins Sans Frontières and The Missing Maps Project.

Final Year PhD student working with Call Detail Records (mobile phone metadata) to map social networks in Nepal.

Self-taught Python-er, loves using notebooks and making multiple maps at once.

See, both us of sit on rocks.

Kate Rawlings

Logistics and Liaison Wizard and Chief Robot Programmer

GIS enthusiast, with specialisation in network analysis and population modelling, particularly for hazard and risk research.

Final Year PhD student working with large scale population datasets to model travel accessibility during flood events in the UK.

Resident ModelBuilder expert and keen ArcPy-Python bug solver.


Supported by:

We are PhD students at the University of Southampton, both funded by the South Coast Doctoral Training Partnership.

ehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat 

Creating a Geography Programming Bootcamp


For Geographers, by Geographers: Our USP.

From our own experience of learning how to program, we knew that current approaches to teaching Python and programming in general just didn't cut it - particularly when you're trying to teach a bunch of geographers who may have no or little experience of coding. Learning to print a string or writing a for loop for some abstract and difficult mathematical equation is, in our opinion, not the easiest way forward - or even sensible.  

Instead, we determined two key priorities as we developed our course:

1) Embed our course within a real world application

We wanted our course to be accessible - and preferably interesting. To do so, we based our course an actual Research Project, which we created specifically for the bootcamp. Whilst the topic was primarily determined by the availability of open (GIS) datasets, we managed to find a unique and novel project that (as highlighted to the students at the time!) could form the start of a publishable and impactful Research Project - and had the potential to be expanded beyond our area of interest.

Jo's early notes whilst planning the data processing required by the research project.

To help embed our course within the real world application, the idea was to put our students through the typical steps that a Researcher would go through during a research project, including deciding research questions after a brief literature review, creating a research methodology and then enduring the fun of data management and cleaning.

2) Use an iterative approach to develop code using familiar software

The majority of the course would then focus on developing code that could process and analyze datasets to help answer the determined Research Questions. We wanted this process to build the students confidence and competency with coding - and not be afraid of developing their own code in the future. 

Our Bootcamp used various aspects of the ArcGIS ecosystem.

To do so, we used an iterative approach, taking advantage of several aspects of the ArcGIS ecosystem, a software that the students were already familiar with:

(1) First, students used the GUI interface to conduct a single step of processing.

(2) Next, we used the Results window to drag-and-drop the processing step into the Python console. Here students edited several lines of code to re-run processing on different datasets.

(3) ModelBuilder was then used to build a more substantial part of the processing workflow.

(4) Iterators were then introduced within ModelBuilder to process multiple datasets.

(5) Processing from all four steps was then brought together under one script with IDLE (the ArcGIS provided script editor), the development of which was again an iterative process!

At each step, different programming techniques were introduced, from understanding simple SQL statements to creating Lists that could be used within For Loops. The idea was that every aspect of the course would be built together: from building on the data being processed, iteratively developing the code to conduct this processing, and (hopefully as a result!) establishing basic the understanding of the programming techniques and requirements being used in each iteration.


The Bootcamp

Logistics

Our sign-ups went live in January, and by our closing date we had 48 students wanting to participate. To ensure we could deliver a quality course, we restricted our intake to 25 and randomly selected students. (For those interested, it was a 14:11 split, with women in the majority #WomenInSTEM).

The Bootcamp was structured over three days, using an intensive learning approach quite different from typical undergraduate courses. Using a mixture of presentations, self-led and facilitator lead tutorials and live coding, we delivered the course along with help from a fellow PhD student (Chris Tomsett) and several GIS lecturers (Dr Andrew Phillips, Dr Dianna Smith and Dr Jim Wright) during the practical sessions.

We may not have stuck to this original timetable, but we sure did try!

With the students participating in the bootcamp over their Easter holidays, we also included a few games to 'warm' them up - including a Robot Programming Challenge and an Easter egg (and ArcPy function) hunt!

Course Booklet

Our bootcamp booklet

Students were provided with a printed copy of the course booklet which they could write in and, of course, take home. The booklet had tasks to complete, information sections on important programming techniques and tools as well as the instructions for each session.

We also added in a glossary for the students to use to write down important syntax as well as the functions (and required parameters) that they were using.

Botley The Robot

A special mention has to go to Botley The Robot, our Bootcamp mascot and Day One ice-breaker. After all, what better way to start than with a warm up task that involves programming a robot?

Botley the Robot

A simple board game was designed to get the students 'programming'. They had to navigate Botley around a grid to reach the finish square, avoiding cells which were 'no entry'. Points were awarded for 'efficient programming' i.e. using the fewest steps possible to reach the goal, but there where also bonus points in some squares.

Watching Botley travel

Delivering Our Course

Priority 1: Embedding our Bootcamp in a real world application

Priority 2: Use an iterative approach to develop code

Content Not Complete - A Future Intermediate Bootcamp?

As with all good intentions, some things never quite work out. With 25 students working at different speeds, we were unable to cover the content for Day 3 in quite the level of detail previously planned.

One key aim of our Bootcamp was to ensure that our students developed the confidence to pursue coding within and beyond the ArcGIS platform. Whilst we ran out of time to go through the Jupyter Notebooks that analyzed our processed data in depth, we used the time effectively to pass on useful things we've learnt during our programming careers.

Trying to capture the GIS programming environment in a single slide to encourage our students to follow through with self-learning or future skills-based courses.

From discussing how the two versions of Python currently differ, to providing an introduction to downloading and using the Anaconda distribution of Python (including how to install and import geospatial-related Python libraries), we provided a 'how to' on the basics of the GIS Programming Environment - and also offered advice on how to read and use documentation to help develop and debug code.

What we did realise is that there is potential for a future Intermediate GPB that could develop this further, focusing on using only Python for Geographical Analysis. But with so many great online courses already on offer - a few of which has taught us so much and influenced our own bootcamp (and which we provided as recommendations at the end of our course) - for now we're focusing on getting our fundamentals right!

Student Feedback

After the course we asked the students for feedback to find out if our course had helped them develop their confidence in programming:

The feedback also showed that the students would consider taking a GIS programming module as part of their course after doing our bootcamp

And some of the written comments from our students...

"The biggest thank you ever... for delivering this course in such a professional and yet enjoyable manner! I've actually learnt so much and I'm now at a level that I didn't even know I could achieve."
"This is a great introduction to programming that I think is a great skill that goes hand in hand with GIS programs. I feel this bootcamp has set me up to be able to semi-confidently undertake online coding courses and expand my programming/coding skill set"
"All in all this was a valuable three days that has taught me a lot and been a lot of fun! Thank you for acknowledging this gap and demand"

Reflecting on our Bootcamp

Overall, we felt that we had achieved the aims we set ourselves nearly over a year ago. Creating and running the Geography Programming Bootcamp was a substantial amount of hard work leading up to and during the week, but unequivocally very rewarding. We had fantastic students who were enthusiastic to learn and even willing to stay after the scheduled end times!

As evident from our feedback - and our experiences teaching the students over the three days - we know that Geography Undergraduates are capable and willing to learn how to program. Incorporating programming into Undergraduate Geography courses as an optional module should be a priority for those wanting to equip current and future students with the best skillset possible post-University.

From our own experiences in learning how to code, we wanted to make our Bootcamp different and in our opinion, more effective than current self-learning tools and workshops. Firstly, we used an innovative approach to developing our content, teaching our students how to program by focusing on a Research Project and making the code relevant to tasks and processing that the students are already familiar with and regularly use. Secondly, we emphasized using an iterative method to developing code - a click one, drag one, copy one, edit one, code one to be exact. Students not only built up code to process the data for our project, but built knowledge of useful techniques to help develop code for future work when they are unsure of where to begin.

Supporting all of this was the ArcGIS ecosystem, including ModelBuilder and ArcPy, which were incredibly useful tools to help teach the foundations of programming before using Python. Furthermore, limitations met in ModelBuilder as well as several ArcPy functions  provided teaching moments and also workarounds that are all part of the programming experience. Our students were very happy to learn of the existence of arcpy.env.overwriteOutput = True . Certainly a line of code they'll never forget!

Overall, we believe our Bootcamp was a success - not just for us but also for our students. Already, we have seen several of our students use programming within their current GIS modules. The hope is to run the same Bootcamp again next year, whilst thinking about possibility to expand to move much of the content from Day 3 into a separate one or two day course. But first, there's a small issue of two PhDs to finish...

The result of all the hard work!
An error has occurred

1%