jkerski-esristaff

GIS coding skills and strategies for university students and faculty

Blog Post created by jkerski-esristaff Employee on Jan 30, 2020

Because GIS is rapidly expanding its presence in web architecture, manifested in such features as "data as a service", online software tools, hubs and portals, customizable web apps, and sharing capabilities, skills in coding and computer science are growing in importance for all who are involved in the geospatial field.  I and my team frequently receive questions from faculty and students about specific skills that should be taught and learned, for students to be successful in a career that is focused on the computer science side of GIS.  After consulting with some colleagues at Esri and in academia, I would like to share the following starting points.  I am mindful that this list can and should change, going forward, and I intend to update this post as needed.

 

Skills and Platforms

What are the programming topics and software necessary in the geospatial industry, and therefore which ones merit attention in education?  I would say:  Scripting (Python with ArcPy, and inside ArcGIS (such as with Arcade scripts)), GIS database programming, work with Jupyter notebooks, GIS algorithm implementation and optimization, desktop application development (C#, Java, ArcGIS Runtime SDKs, GDAL), Mobile app development (ArcGIS Runtime SDKs and ArcGIS API for JavaScript), Web application development (JavaScript with APIs from ArcGIS and others), work with statistics (R, Matlab), and Big Data analytics (Tensorflow, Hadoop, Spark).   

 

What are a few ways to learn about these?  The easiest way to get started is by using Arcade, a scripting language inside ArcGIS Online.  By configuring popups, or creating filters, beginning with a 1-line Arcade expression, and then moving to simple but powerful 3 to 7-line expressions, helps students understand how scripts work, and the results are instantly seen on the resulting map, as I describe here to calculate the percentage of 18-21 plus 22-29 year olds out of the total population for a set of cities.  If the expression's syntax is wrong, that is fine!  Fixing code and expressions is a valuable and important way to learn.  Another way to encourage students to "think like a computer" is to begin using ArcGIS Insights, a data analytics tool.

 

One of the best resources to learn GIS coding is the tutorials on the Esri Developer site.  These include tools such as Python, REST API, PRO SDK, App Studio, and JavaScript.  The tutorials are set up with instructions for inserting or adjusting pre-existing blocks of code; for example, see the Javascript tutorial on creating a starter app below.  As students work through the tutorial and work with the code, they see how the code (top half of the screen below) drives the map (bottom half of the screen below); the map changes instantaneously as they progress through each tutorial.  I like to think of it as "instant gratification" and find it a very effective means of learning!

 

ArcGIS Developer Site

One of the tutorials on the ArcGIS Developer site.   Another one to look at is this one, with a spiffy color animation and time slider

 

 

Finally and perhaps most importantly, the advent of Jupyter notebooks inside ArcGIS Pro (and soon inside ArcGIS Online) brings the power of Python to GIS users in an approachable and powerful way.  If you have access to ArcGIS Pro, the notebooks are automatically included--nothing further to install, no libraries to add. My colleague Canserina Kurnia wrote an essay, here, recently exploring how to begin using these notebooks.   Why does this matter?  Now you can leverage the power of Python directly inside ArcGIS Pro--the best of both worlds.  It is thus seamless to access and combine python libraries from ArcGIS Pro and open source Python in one integrated environment.  The content in your map can also be easily accessed through code in the notebook window.  You can work simultaneously with the notebook and the ArcGIS Pro user interface (UI).  This integration makes it easier to incorporate python programming into your GIS courses. See what these Notebooks look like inside ArcGIS Pro, below.

 

Jupyter Notebooks inside ArcGIS Pro.

Jupyter Notebooks inside ArcGIS Pro.

 

While this essay is focused on higher education, let me add here that I believe that some of these tools can and should be taught at the secondary school level.  I am dismayed by the relative decline in the amount of computer science taught nowadays versus in the 1980s and 1990s, when given the demands in society, I believe computer science should be taught more often now, not less.  On the brighter side, I have personally observed many secondary students and teachers doing rigorous computer science work in schools in Colorado, Texas, and elsewhere.  Another thing to consider is that teaching computer science with GIS is fun and engaging--most people love maps!   And, if students enter the university or community college with some coding experience on their tool belts, they can soar even higher. 


Connecting Academic Computer Science Programs to GIS 

How can faculty think about how many GIS programming courses of different levels should be provided, and which levels should be required for prerequisites and completion of courses and a program?  Courses that would be valuable include:

  • Introduction to programming concepts.
  • Labs that focuses on debugging skills.
  • Introductory and Intermediate courses on JavaScript.
  • Introductory and Intermediate courses on Python.
  • Other Computer Science courses as electives (for example, algorithms)


Approaches

I am keen on hands-on work with GIS and programming languages--the best way to learn it is by doing it.  Most people cannot simply read about GIS or programming in a book and then apply it successfully.  And with the resources provided here, and, I hope, ones that the community may share in the comments below, there is no shortage of ways to roll up your sleeves and get started. 

 

Certain tools and languages are critical for all GIS students, such as Python, for example. Understanding basic programming concepts and the modern web GIS architecture helps provide many career pathways once students graduate. Not every student needs to be proficient in building websites or native applications, but if they have the basics, then they will be more adaptable and employable.   

 

Are our students prepared to meet the programming needs from industry yet? How do we bridge the gap?  There is a spectrum of needs in GIS that ranges from little-to-no-programming-skills-needed to fully custom application building. Does every GIS student need to be able to program at an intermediate level, for example?   

 

How should pedagogy change given the change in dominant languages over the past 50 years (for example, FORTRAN vs C vs Python)? Have students changed in ways that requires a different approach in pedagogy?  The fundamentals of “how” programming language work hasn’t changed all that much (in terms of variables, data structures, control structures, and so on (though some may argue this point). These fundamentals can be applied across a variety of languages.

 

What is changing very rapidly is advances in some of the programming languages, themselves. Web browsers and JavaScript is a great example of unbelievable rapid change. One challenge and goal might be to keep curriculum as current as possible without stressing that everything used is the "latest and greatest"  Students will still get much training on the job, and thus I encourage university faculty to focus equally on teaching students flexibility in how to learn programming languages and to learn how to adapt. 

 

Beyond the specific tools, make sure you are infusing broad troubleshooting skills across a variety of systems. Troubleshooting and finding creative and multiple ways to solve problems has long been a mainstay of work in GIS.  Indeed, GIS was created back in the 1960s for exactly that--to solve problems.  Teaching the ability to adapt and change based on requirements from your instructor, or from your future manager, is important to infuse in your courses.  The ability to get comfortable in inheriting, improving, or maintaining systems that you didn’t create is also a reality in the workplace that can start in a community college or university setting.  These programs, routines, or modules may be outdated and potentially involve unsupported implementations or implementations that don’t use best practices. Dealing with some of this "messiness" will be the reality that students will face in the workplace, so don't feel that you need to clean up everything before you give a set of code--or a web map or GIS database, for that matter, to students.  

 

Messaging
One important message for students is that GIS is not simply mapping a database nor is it just a flavor of computer science.  GIS is more than a technology; it is keenly tied to a way of thinking--about patterns, relationships, and trends, over space and time, where scale matters, interconnections matter, and systems matter.  Focusing on the value of the "where" question, in transportation, health, planning, public health, engineering, and many other sectors of society, could help gain traction in convincing deans and provosts to support and fund GIS coding courses and programs. 

Outcomes