Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I will be instructing a course at the local university titled Computer Science for Geospatial Technologies. This is an introductory course meant to introduce computer science concepts to geospatial technologies students (GIS & Remote Sensing). In the past I have introduced programming concepts, but I found this went over many of the students' heads.

Currently, I am planning to discuss computer hardware, spatial data types (i.e. shapefiles vs geodatabases), ESRI Geodatabase Model (the university works on an ESRI platform), basic database theory with ArcSDE Personal.

Could anyone recommend some other computer science related topics that practitioners of GIS and Remote Sensing should know before entering the workforce?

UPDATE: Last years curriculum included:

  • Google Maps Javascript API/HTML/Google Earth/KML - 5 weeks
  • Python Scripting - 6 weeks
  • Database Theory/MS Access - 2 weeks
  • VBA - 2 weeks

The response I received from students was that not enough time was spent on each topic. I am speaking to the university to offer a next level course in GIS Programming using Python.

share|improve this question
I'd defintely add scripting and projections. One other note, is it an ESRI brief? I'd try and make it agnostic on GI platforms. I'd try and introduce more open source projects as well, as a lot more companies, and organisations are looing that way. I'd also introduce programming frameworks if possible. I know you've said it went over their heads last time, but scripting, at the least, is needed by even the most basic GI practitioner, imo. –  Hairy Nov 28 '11 at 15:29
I included scripting last year, but I think scripting should be a course of its own. There's just too much there to squeeze into only a few weeks of a larger course. I'd like to offer an advanced course in GIS Programming using Python. –  Brian Nov 28 '11 at 16:04
Good points, @Hairy. Why don't you share them as a reply? –  whuber Nov 28 '11 at 16:05
It is curious, Brian, that although the purpose of the course is characterized as "to introduce computer science concepts," only 2 of the 15 weeks appear devoted to this (the database theory). The rest look like practical applications rather than concepts. Perhaps they are intended as vehicles to teach concepts that otherwise are not specifically called out in the curriculum? If that's the case, it would help to indicate what concepts you hope to teach in the GM/GE/KML, Python, and VBA segments. –  whuber Nov 28 '11 at 18:11
@whuber - Last year the course was designed to be more practical skills. I figured most the students had received enough theory in their traditional introductory GIS courses. After diving into practice without the proper background, many of the students were lost. I recall discussing how scripting a workflow in Python one way vs another can influence memory and processor usage and many of the students seemed as though they don't understand what memory and processor are. That's why this year, I am thinking it should be a little more conceptual, filling in the gaps from other courses. –  Brian Nov 28 '11 at 18:56
show 3 more comments

4 Answers

up vote 25 down vote accepted

In 15 years of answering GIS questions on listservers and, now, Web pages, I have noted some recurring issues that suggest a need for practitioners to learn certain specific computing concepts. None of these are deep; all these are well known; but all seem to be common deficiencies in the background or understanding of a significant minority (majority?) of GIS people. In many cases little actually needs to be learned apart from a definition or example. The point is to alert students to pitfalls that will arise and give them the principles or tools they need to address them when they come up, without necessarily becoming experts.

Links in the following list all go to questions on this site. The mere existence of these links provides evidence of the value of the concepts. By following the links, you can find examples of how knowing these concepts can solve problems, prevent them from happening, and help people be more proficient with GIS.

Computing systems

  • The components of a computer: open a box, take it apart, identify the pieces (CPU, RAM, disks, motherboard, network card, etc.) and explain their roles in the system. Demystify it and make it concrete for the students.

  • Understanding of how computing systems store data on external devices. Concepts of physical and logical formats. The distinction between ASCII (and similar encodings) and raw binary.

  • Details of the internal binary representation of numeric data, including IEEE single and double precision floats and signed and unsigned integers. Limitations of each. How to choose what data type to use for representing GIS attributes.

  • The distinction between external storage and RAM. (I know this is incredibly elementary, but there's a lot of confusion out there.)

Computer science

  • Asymptotic analysis of algorithms. Understanding, on a practical level, the differences between O(n), O(n log(n)), O(n^2), (and worse) timing. How to test how a black-box algorithm scales.

  • Principles of human-computer interaction. This is too broad, but some principles of form design and Web page design can go a long way.

  • Principles of computing languages: what to expect from a language, the difference between procedural and object orientation, what kinds of data structures and objects languages can support and refer to, the difference between compiled and interpreted languages (and the trade-offs among them).

  • Basic principles of data structure design. The interplay between structures used to represent data and the algorithms that use them. The uses of arrays, lists, and dictionaries.

  • The distinction between objects and references to them. (Many mistakes are made by people who do not recognize the difference between a variable name and its quoted string!)

  • What an operating system is, what services to expect from it, and how to interact with it.

  • What a network is, what services to expect from them, comparison of some architectures, and a sense of tradeoffs made between obtaining computing services locally versus remotely.

  • Graph-theoretic algorithms: many GIS analyses can be abstractly represented in terms of problems on graphs; being able to do this gives access to efficient algorithms. A nice example on our site is here involving a problem that initially seems to have nothing to do with graphs.

  • Recursion. A good example for GIS practitioners is the creation of a spatial index such as this algorithm for an adaptive point quadtree.

GIS data

Database systems


  • Typical algorithms for performing basic GIS procedures, including point-in-polygon and buffering. Why different algorithms might be desirable for one-off calculations compared to repeated calculations with the same data, or for static data compared to dynamic (real time) data.

  • How GIS data can be organized for searching and processing, such as quadtrees.

  • Evaluating tradeoffs between resolution/precision/speed in storing GIS data (especially raster data).


  • Debugging techniques: how to isolate, identify, and work around errors. How to describe and report apparent bugs and anomalies. How to ask good questions on the Web!

  • How to invert functions with root-finding algorithms. (Failure to appreciate this frequently leads to extremely inefficient algorithms or failure to solve a problem altogether.)

  • How to choose among black-box optimization programs (continuous vs. integer, convex vs. not, univariate vs. multivariate, linear vs. not, etc.). For more examples see an equipment location problem and a polygon packing problem.

  • How to navigate help systems. What to look for and what to reject as useless. (ESRI's online ArcGIS help provides splendid examples of the very good and the very bad.) This might even include some instruction in reading object diagrams.

Because this is off the top of my head, it surely is incomplete. If people find the list useful I'll work to improve it--or help me out and feel free to add to it if you have sufficient reputation. To keep this practical and focused, please address only concepts that will help people avoid problems that you have actually observed (in your own work or that of others).

share|improve this answer
I'm not sure your example on 'The distinction between external storage and RAM' means what you think it means. RAM disks do exist and this is a valid use of one. –  tomfumb Aug 27 '12 at 21:37
@tom What I really wanted to address with this point is the common confusion among users who call all storage and RAM "memory" without understanding the various characteristics of storage devices or the forms of RAM. It's hardly possible to appreciate what a RAM drive is or how it works until you understand...shall I say it again?...the distinction between external storage and RAM. Also, a RAM disk cannot be considered a storage device, due to its volatility; but SSDs are certainly blurring the lines, and so is cloud-based storage over high-speed networks. –  whuber Aug 27 '12 at 22:21
I sure wish I had paid more attention to concurrent programming concepts presented in class. I was probably too busy multitasking :) With long running processes distributed on the web, I think this has become very important. Also would be helpful in dealing with threading issues with legacy COM. –  Kirk Kuykendall May 31 '13 at 17:15
@Kirk Good suggestion. I am finding that almost as rapidly as parallel programming is becoming commonplace, its details are being successfully abstracted to the point that in many cases we don't need to know much in order to make use of it. Case in point: in Mathematica all you have to do is wrap a section of code within a Parallelize command and it takes care of the rest. (Understanding the underlying technology is still helpful for making the most of this capability, though.) –  whuber May 31 '13 at 17:33
add comment

Even if the university uses ESRI, I would recommend introducing, or describing open-source equivalents. For one, it's much easier for students to install QGIS on their laptops than ArcGIS if they want to test out opening a shapefile as QGIS is significantly smaller (ArcGIS 10 is 2 - 3GB) and students do not need an internet connection. My university has curricula focused around ArcGIS rather than GIS; I personally think this is backwards.

Introducing KML with google earth or google maps could be a way to get students engaged. KML is popular, and making an interactive map is quite a bit more exciting than a paper map; particularly when you can share a web-link with others.

share|improve this answer
I agree that teaching only ESRI is backwards. Unfortunately, the university does not agree. In addition, due to IT constraints, I am unable to install any additional software in the computer lab in which the course takes place. –  Brian Nov 28 '11 at 16:07
@Brian I understand. There might still be a way of framing the teaching such that is focused on various questions, and ESRI products are one way of answering those questions. I think the tool influences the thinking and expression (like human language), and this important to highlight. –  djq Nov 28 '11 at 16:15
introducing KML seems like a great way to draw some students in. –  rec.thegeom Nov 28 '11 at 17:41
Even if you don't have students install or use open-source products, it would still be very beneficial to have a day or week that discussed the open-source alternatives that are available just to expose them to the fact that there ARE options other than ESRI. If they want to experiment or use GIS software at home, then they would have some alternative options to investigate on their own. –  RyanDalton Nov 28 '11 at 18:16
add comment

I graduated from an ESRI-centered program in which the faculty did a pretty nice job separating concept (lecture) and utility (lab). My primary weaknesses upon exiting academia were: 1) I had no SQL skills, no knowledge of basic database principles; and 2) I was unprepared for the programmatic pre-processing required for most data sets.

I recommend a "data handling" workshop to introduce a proper RDBMS (probably PostreSQL with PostGIS) and a programming language (probably Python) for use in cleaning up CSV, TXT, or SHP files. With just a taste of each your students will be more prepared to stand on their own "out there."

share|improve this answer
+1 for PostGIS. Neither Access nor ArcSDE encourage good database design. In the long run, a good knowledge of SQL is much more valuable than learning "the ESRI way" of handling spatial data in "something like" a RDBMS. –  underdark Nov 28 '11 at 17:53
@rec.thegeom - I graduated from a similar type of program (at the same university I am teaching) with the same short-comings and I have been forced to learn on the job. I think the academic community tends to lack an understanding of what skills and knowledge are necessary to succeed in a GIS career. I think data storage and management should be the backbone of any GIS education. After all, GIS is just another form of data analysis and visualization. Because the students are familiar with the ESRI environment (an it is already installed) I hope to use SQL Server Express for database work. –  Brian Nov 28 '11 at 19:03
add comment

I'd defintely add scripting and projections. One other note, is it an ESRI brief? I'd try and make it 'GI agnostic' as there are so many now, that ESRI do not have a complete monopolym, and as budgets shrink, imo, their market share will shrink too. So I'd try and introduce more open source projects as well, as a lot more companies, and organisations are moving that way.

I'd also introduce programming frameworks if possible. I know you've said it went over their heads last time, but scripting, at the least, is needed by even the most basic GI practitioner.

Database skills are also needed. Again, even the most basic GI practitioner, will probably have to maintain some kind of datastore and manipulating that data is going to be a key element of their day to day job.

One of the most common things I have to do, is to teach users what GIS actually is. It dumbfounds me, sometimes, as to how little people know about GIS, other than it is Google maps. So being able to get them to demononstrate a key understanding about what it is, holistically, from the users, to the systems would be beneficial to all users. I was working, recently, with a Java developer of some experience, and someone whom I rated as a specialist, yet he didn't really understand what a GIS was, in totality.

It would also be good to demonstrate location to them, as not enough people think outside of the box as to what a location is.

It has the potential to be bigger than Ben Hur however. I studied Computer science at University, with a module of GIS. Despite then going on to complete a masters degree in GIS, then work 15 years in the industry, I am still learning, so it is impossible to get it all in.

share|improve this answer
+1 Thanks for expanding your comments. –  whuber Nov 30 '11 at 18:36
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.