Q:

Recommend topics to be included in a Computer Science for Geospatial Technologies course

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.

A:

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

How vector and raster data are stored, both internally and for data interchange.
How the topologies of multipoints, polylines, polygons, and TINs can be represented and processed.
Basic principles of data compression as it is applied to GIS data, especially run length encoding.

Database systems

What a relational database management system is, how it differs from some other major database designs, what its advantages and disadvantages are.
Normalization and design of databases.
How to query databases (e.g., SQL).
Documentation methods, especially metadata and data dictionaries.

GIS

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).

Miscellany

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).

A:

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."

A:

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.

