Serious Programming Courses

NEWS ALERT: next course, grades 6 and up, weekend of November 24+25 2018 (the Saturday and Sunday of Thanksgiving weekend); read below to register.

Serious Computer Programming for Youth

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 going beyond 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. But a key issue is fast typing: if a kid cannot type quickly then they will not be able to keep up.

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, and the Friends of the Santa Fe Public Library for helping us with fundraising.

Motivation

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 to write 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

Prerequisites

  • 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!
  • we will do a lot of typing - see if you can practice fast typing

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 segment 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 my documents page which gives a detailed outline of what will be studied in each segment of the course.

How to start

The November 24+25 2018 workshop will take place at the downtown Santa Fe Public Library. It is a 10-hour course, and students must commit to taking the full course.

Upcoming: 2018, November 24+25, grades 6 and up:

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

Send email to mark@galassi.org to sign up. Space is limited.


(note: this web site used to be called santa fe coding)