Serious Programming Courses
2024: Next course, grades 6 and up, tentatively set for the weekend of December 7+8. Students from all over the world encouraged to join!
(There will be further workshops - typically every month or so. And please write if you are interested in an Africa/Europe timezone friendly schedule.)
Serious Computer Programming for Youth
Programming course overview
This is a free hands-on course which teaches programming with an aim toward advanced work and applications to academic areas (science, social science, humanities, arts, engineering). For example, in the course we use professional programming editors, and run Python natively on a computer running Linux. We also learn to install an operating system, and dissect computers to get a broad view of how they work. The courses are taught by Dr. Mark Galassi, an astrophysicist and computer scientist at Los Alamos National Laboratory.
The course will start with an unusual but important feature: each student should obtain an old computer or laptop which is not used much anymore, and we will start by installing a 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 neighbor or relative has a 5-year-old laptop they have not used in quite a while. The computer should have 8 gigabytes of RAM to be fully usable, though for the course you might get by with 4 gigabytes or slightly less.
Starting with the COVID lockdown in 2020 the workshops became remote and world-wide. We meet in videoconference, but with an approach that is still very personal and interactive. Your instructor will work with you remotely ahead of time to prepare the computer.)
Once each student has a computer running Linux we will have a hands-on introduction to programming in Python, reaching a remarkable level in a weekend.
Vis-a-vis age: computing, like chess, can often be done well by children, so younger students 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. So we ordinarily specify that the course is for kids in 6th grade and above, but a motivated fast typist could do well even if they were younger.
No cost
There is no cost: the course is free and taught by volunteers. We thank many donors whose grants have helped us purchase materials, and we thank the Santa Fe Public Library for offering its space and resources.
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
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
students need to be able to handle their own email correspondence, and to be aware to copy their parents on all email
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 researcher.
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 Linux operating system is that:
the 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 Linux. it is also used for almost all serious research work.
the Linux operating system is written by programmers for programmers: it offers a choice of several powerful programming environments and puts few barriers in the way of the programmer.
the system is entirely built with free/open-source software.
the Linux system works 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
it is used in all areas of research, from the arts and humanities to the social sciences to the natural sciences
Our path
Specifically, the path we will take will involve these steps:
learn to install and use the Linux operating system on old hardware
learn to dissect a computer and understand the components inside
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
Course format
The course is a 10-hour course. These days it is always taught as a weekend intensive course.
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 next workshop will take place virtually using the Jitsi videoconferencing platform (*). It is a 10-hour course, and students must commit to taking the full course.
Upcoming: weekend (date specified up top), grades 6 and up:
Saturday (10am-12:30pm and 1:15pm-5:30pm), continuing Sunday (1pm-4:45pm)
(note: all times on this page are in US/Mountain time zone; make sure you adjust for your time zone)
Send email to mark@galassi.org to sign up. You may also phone +1-505-629-0759. "Space" is limited.
Note to students and parents: we do not accept students who are being pressured by parents to take the workshop. Students should sign up from a non-school email address (because school addresses are often blocked, and they are not enduring). Students must Cc: their parents on the email and we will continue to Cc: the parents in our interaction.
footnote (*): Jitsi is a free/open-source videoconferencing system which runs inside your browser or with mobile apps. It has profound by-design respect for privacy, and does not require you to register or install toxic software on your computer.