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 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!
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.
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:
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
Our plans for the bootcamp started in April 2018 after running the previous Python tutorial together. An earnest email from Kate suggesting that it was possible made Jo realize it wasn't only her interested in developing a course. A few chasing emails from Kate later (who obviously quickly became the organized one), big plans and ideas emerged quickly from Blue Sky thinker Jo in the form of an initial five day course teaching the basics of Python and R. A few realistic conversations later, and the GPB as we know it was in formation!
Funding and support from the School of Geography and Environment at the University of Southampton was secured, dates were chosen and fellow PhD students notified of the potential bootcamp in case they wanted to help.
By November, we had put out our first advertisement to the undergraduate population and attended a few lectures to (hopefully) attract interest. Emails about signing up from Undergraduates in the weeks afterwards spurred us on - now we just had to develop the course!
To help, we came up with several aims that we wanted to achieve with the bootcamp:
But from our own experiences when trying to learn how to code, we didn't want to get stuck with teaching just the ins and outs of Python or programming syntax. Using our experience of attending programming courses and teaching geography undergraduates, we wanted to design our course in a different way to those usually created by those working in computer science.
We wanted to show our students how programming can be used within GIS research and knew that for it to be effective, we'd need to ground our bootcamp in their current knowledge.
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.
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.
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.
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.
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!
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.
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?
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.
The Project chosen for the Bootcamp was to study the impact of Public Safety Protection Orders (PSPOs) within Southampton.
PSPOs were introduced within the UK in 2014 and were designed to give local authorities the powers to tackle antisocial behaviour in specified areas, including banning drinking alcohol on the street and begging.
These have proved controversial, as campaigners have said these powers are being used excessively and are not effective in tackling antisocial behaviour.
Currently there has been little research into how effective PSPOs have been - we therefore used this course to show how this topic area may be researched in GIS.
Literature Review
To get our students onboard with our research topic, we gave them a set of references to read. The references provided information on PSPOs in general and specifically in Southampton, current research on PSPOs (primarily within law) and also press clippings.
The GPB workbook contained questions for them to answer - which we then quizzed them on much to their disdain, particularly as they weren't allowed to sit down until they had given an answer!
The idea was to get the students to develop their own research ideas and think about potential questions we might want to consider when it comes to researching PSPOs in Southampton. This in turn (we hoped!) would make it clearer why they were processing certain datasets.
Designing a methodology: Finding data
To help with this, the next step of the bootcamp was to get them thinking about the datasets we'd need and the more technical aspects of managing and processing them.
We then provided them with a zipfile of data, which they needed to manage and clean accordingly.
First we introduced them to a standardized way of structuring files:
Then we asked them more questions on the datasets they were given - the idea was for them to interrogate the data and get familiar with the structure and contents, including field names.
Once the datasets were clean, the next step was for the students to translate the current research plan into a research methodology...
The map shows the location of the five PSPOs currently in action in Southampton.
Designing a methodology: Creating required outputs
The final step before getting started with processing - and programming - was to get our students thinking about how we would get the datasets we'd need for our analysis.
Whilst we of course knew what we were going to do, we spent some time writing up on the board how to translate the Research Plan into a Research Methodology.
1. Create an ArcGIS methodology
From the Research Methodology, we asked students to think through a potential GIS workflow that could result in a dataset that contained the crime rate by LSOA for each month.
To help, we provided a 'clean' version of the flowchart here, along with a list of the file names and processing steps that they would need to fill in the chart.
By getting the students to do this themselves, we hoped they would understand the steps they were doing, particularly when they started programming and would need to think through the various file names and parameters involved.
The processing was kept simple to ensure the students had used the majority of these tools within their degree modules and to provide a sound base to start the analysis.
2. Process data using ArcPy and the Python Console
Once the GIS methodology was designed, our students started on the first few steps of processing. Here we focused on extracting Southampton only LSOAs from the England and Wales dataset, and then joining the two Population csvs they had cleaned earlier in the day to the shapefile.
The students first ran these processes using the GUI and then used the drag-and-drop process (from the Results window) to display the related code in the Python Console.
From here, we had students edit the code to change certain parameters - and used the opportunity to provide basic introductions to functions, SQL and file paths.
3. Create a processing workflow using ModelBuilder
We decided to start Day Two with an introduction to ModelBuilder within ArcMap, a user-friendly way to introduce key programming concepts, such as iteration. As a visual tool, it also helped our students follow the flowchart made on Day One.
The first model introduced the students to the individual processes, their respective parameters and how to link them together, processing a single Crime csv.
4. Add Iterators within ModelBuilder to process multiple datasets
We then introduced the concept of iteration by incorporating an iterator to batch process all of the Crime csvs.
Within the second model, the concepts of variables, processes, inline substitution for naming files and other programming key concepts were addressed and used.
We were keen for our students to see that ModelBuilder and its iteration capability is a useful programming skill in it's own right - and not all programming means code! For many of our students it was the first time they had built a model of this complexity.
5. Working with ArcPy within IDLE: creating and running scripts to combine all data processing
The second half of the day was spent translating our GIS processes into a single script, copying outputs from the Results window as well as exporting Python scripts from our models. To create the final script, we used an iterative process of building up short code blocks which would process a single dataset at a time. Then we showed students how to add in For Loops, and then finally an approach to combining them all together at the end.
Breaking down the script development into small 'chunks' showed students how to develop their code in small steps - and that no one expects them to be capable of writing a full script from scratch in one go! Copying and testing were very much encouraged! See the print statements below!
After a lot of editing - and an extensive introduction to Lists and For Loops - the students had many lines of code which was documented with comments to run the processes we needed to create the crime rate data.
For those who finished early, we asked them to create their own Conditional Statements to control certain aspects of their processing.
Whilst this part of the course ran over into Day Three, by the end we had 25 functioning scripts. To help demonstrate the utility and efficiency of programming, we provided our students with a further 21 crime csvs to process!
Extension Activity: Coding Solo
The final task we asked our students to complete was to write their own script that would create hotspot maps of crime for each month within Southampton.
Unlike the rest of the course, they were only given short instructions and hints to help develop the script. This was to allow them to apply what they had learnt so far and practice looking up syntax online, an essential skill for any programmer!
By the end of Day 3, we had all of our students with a complete script, incorporating key programming techniques of functions, listing, for loops and variable substitution.
The map shows the resulting hotspot data for one of the processed months.
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.
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!
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"
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...
Jo Wilkin (jw3e15@soton.ac.uk, @joannawilkin)
Kate Rawlings (K.Rawlings@soton.ac.uk, @geogkate)
An error has occurred |