I am a GIS Specialist with an Earth science/geography background, and about 8 years experience using both ArcGIS and QGIS.

I have written small snippets of Python code to help myself with basic tasks such as editing attribute tables or displaying map labels and symbols in interesting ways.

I have also used ModelBuilder tools in ArcGIS to automate tasks and simple work flows. But I would really like to learn more about computer programming in general.

I am planning to take a 24-hour ESRI classroom course on "Geoprocessing Using Python" next month. But what can I do over the next few weeks to get better at programming, in preparation for the class?

I really want an online course or textbook that is for beginners, that focuses on things like loops, if/then/for statements, etc. I never seem to learn much at all from those "here is the code, type it in, it will do x" tutorials.

I think I really need something that is a combination of theory and practical knowledge. A focus on Python and/or GIS is of course a bonus.

Any suggestions?