Programming course overview

This is free a hands-on 10-hour course focused on kids in elementary, middle and high school, but it is open to anyone.  It will involve serious work and a good amount of overcoming one's comfort zone.  The goal is to get started on a path that leads to serious programming, rather than using a canned "for kids" programming environment which will never be used for real work.

The course will start with an unusual but important feature: each student should bring in an old computer or laptop which is not used much anymore and we will start by installing a GNU/Linux distribution.  You need to be willing to lose all data on this computer, as we will repartition it and install a new operating system.  If you cannot find an old computer we will have some loaners, though we will start by pressing you to look harder.  It is important that the students feel "ownership" of the computer, from the bare hardware all the way up through the operating system that they install.  It is pretty easy to find old laptops: odds are very good that a neighbour or relative has a 5-year-old laptop they have not used in quite a while.  The computer should have at least 2 gigabytes of RAM to be fully usable, though for the course you might get by with 1 gigabyte.

Once each student has a computer running GNU/Linux we will have a hands-on introduction to programming in Python.

Vis-a-vis age: computing, like chess, can often be done well by children, so younger girls and boys are invited to join if they are enthusiastic and willing to work hard.

No cost

There is no cost: the course is free and taught by volunteers.  We thank the LANL foundation for a grant which has helped us purchase materials, and we thank the Santa Fe Public Library for offering its space and resources.


There are many carefully designed courses that teach "programming for kids".  This is not one of those: this is a "serious programming for kids" course.  Our goal is that everyone should learn to use and then to program computers like a true hacker. (Note: I use the word "hacker" in the original sense from MIT, see the Wikipedia article).

This is a course that might take you out of your computing comfort zone: if you are accustomed to use a computer by "clicking at things that are in sight" then you will learn a new approach which is much more powerful and with which repetitive tasks can be automated.

The motivation behind learning the GNU/Linux operating system is that:
  • the GNU/Linux operating system is the basis for almost all the computers that "run the world": from the servers at Amazon and Google to the supercomputers that power science, the operating system is almost always the GNU/Linux system
  • the GNU/Linux operating system is written by programmers for programmers: it offers a choice of several delightful programming environments and puts few barriers in the way of the programmer
  • the GNU/Linux system is free (as in freedom), but it is also free as in cost: the entire system and its wealth of tools (for programming and all else) are available free of cost
  • the GNU/Linux system has been packaged in many ways, some of which work quite well on very old hardware with less memory
Our motivation behind teaching python is:
  • it is a pleasant and easy language to learn
  • it is also a language used for many industrial-strength applications
  • it can be used for a wide variety of interesting programs

Our path

Specifically, the path we will take to becoming a hacker will involve these steps:
  • learn to install and use the GNU/Linux operating system on old hardware
  • learn to use the command line shell
  • learn to use a programming editor
  • learn to write simple programs in python
  • write a more serious program in python
  • add intelligent algorithms to the program


  • a desire to work hard on learning to program
  • an old computer or laptop that you or a friend or grandparent or neighbor has sitting around unused
  • note that if you cannot find an old computer we can help you with a loaner - write us!

Course format

The course is a 10-hour course.  Depending on the period it can be taught in 2 hour segments for 5 days or it can be a weekend intensive course.

Each class will start with a brief lecture on a topic and then go on to the hands-on portion.

I have written a detailed Teacher's Manual which you can find in the documents page of this web site which gives a detailed outline of what will be studied in each two hour segment of the course.

Link to academic material

We will attempt to demonstrate how to use computer programming to further explore academic material through visualization or numerical computing.  This is especially applicable to the older age groups.

How to start

The March 3+4 2018 workshop will take place at the downtown Santa Fe Public Library.  There are 10 hour courses, and students must commit to taking the full course.

Upcoming: 2018, March 3+4

Sat. March 3 (10am-12:30pm and 1:15pm-5:30pm), continuing Sun. March 4 (1pm-4:45pm)

Send email to to sign up.  Space is limited.

Santa Fe Coding