Serious Programming Courses
Serious Computer Programming for Youth
Programming course overview
This is a free hands-on 10-hour workshop 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 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 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 neighbor or relative has a 5-year-old laptop they have not used in quite a while. The computer should have at least 4 gigabytes of RAM to be fully usable, though for the course you might get by with 2 gigabytes or slightly less.
(Pandemic adjustment: during the pandemic we will not meet in person, and your instructor will work with you remotely ahead of time to prepare the computer.)
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. 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 she were younger.
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 (note: during the pandemic we are virtual, but we will return to the library eventually), and the Friends of the Santa Fe Public Library for helping us with fundraising.
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
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
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
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 of September 25, 2021, grades 6 and up:
Sat. September 25 (10am-12:30pm and 1:15pm-5:30pm), continuing Sun. September 26 (1pm-4:45pm)
(note: all times on this page are in US/Mountain time zone)
Send email to firstname.lastname@example.org to sign up. You may also phone +1-505-629-0759. "Space" is limited.
Note to students: many school districts block your outgoing emails without even telling you (yes, this is a problem). You need to write from a personal account, not from your school account.
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.