This paper describes the development of a distance education course on programming skills. The purpose of this course is twofold: first, it supports ITC's Joint- Education Projects (JEPs) currently underway in several developing countries, and secondly, it broadens the target market for our educational services. One of the key aims in teaching programming skills using any programming language is to teach students how to approach computational problem-solving in a structured and logical way. The challenge in doing so is how to develop adequate learning resources on the programming fundamentals, which are both intuitive and functional. Drawing upon several years of experience of teaching programming skills at the Faculty of Geo-Information Science and Earth Observation of the University of Twente (ITC, The Netherlands), we designed a course based on an interactive learning environment, developed for a previous distance education course (Ivánová et al. 2008), but significantly extended to support new content. The programming language taught is Python, which is a general-purpose, open-source computer language well-suited for use in the hybrid context of databases, Geographic Information Systems, image processing, and web applications. It is well-known for its lean syntax, which allows the novice student to devote more time to algorithmic and programming fundamentals. The course is designed around an interactive learning infrastructure. It is built in an environment that seamlessly integrates the Python environment (= program scripting and command line) and the teaching environment (= lecture material, exercise environment, and a textbook). The course material is developed for plug- And-play deployment on a student's PC, reducing the initial requirements on installation and optimization of the work environment. Although the nature of studying a programming language is intrinsically selfstudy, this plug- And-play solution also allows components of the course to be deployed in a face-to-face set-up, as well as in distance education mode. This type of integrated learning environment currently does not exist anywhere; existing solutions are mostly in the form of isolated tutorials or books. From a didactic perspective, the course presented here is a system of self-instructional learning objects, allowing students to proceed in their own location, in their own time, and at their own pace, with an extensive direct feedback embedded in the course materials. Most of the course content is based upon open-source materials - The textbook and some of the exercises. However, we are extending these materials to tailor the course better to geoinformation science students by adding material (in the form of lessons, as well as adding a chapter to the book itself). By doing so, we release the new chapter into the open-source realm through creative commons licensing.