Teaching Middle School Programming

Talk about anything not remotely related to retrocomputing here!
Post Reply
Scott Robison
Posts: 952
Joined: Fri Mar 19, 2021 9:06 pm

Teaching Middle School Programming

Post by Scott Robison »


I am going to be teaching a programming class in Python to middle school students at a local charter school this fall. My "real job" (not to say teaching isn't a real job!) has authorized me to work a flexible schedule to spend "6" hours a week doing this (5 classroom hours, 1 extra hour, plus all the unpaid time I want; my wife is a full time teacher so I have some idea what I'm getting into).

Anyway ... think back to your youth. What did you like, didn't you like, would you have liked to see in a programming class? If you have kids around that age, maybe ask them their opinions.

This is very much an introduction to programming class that doesn't require previous programming experience, and I have a curriculum "ready made" but there are some busy work tasks I don't plan to do and other things I would like to do. The emphasis of the semester will be Python of necessity, but I don't want to just teach kids how to invoke magical incantations to make Python do things. As much as is possible, I'd like to teach them how to think like a programmer / engineer so that they can take what they know about Python and apply it to other languages / etc. It's okay if all they get out of the class is beginning Python, and I can't teach them everything in a single semester, but I want it to be as "authentic" of an experience as possible.

I hope I'm explaining myself well. Feel free to chime in with opinions, thoughts, questions, etc. I'm happy to elaborate if needed.

Elektron72
Posts: 137
Joined: Tue Jun 30, 2020 3:47 pm

Teaching Middle School Programming

Post by Elektron72 »



14 hours ago, Scott Robison said:




What did you like, didn't you like, would you have liked to see in a programming class?



Personally, I believe that most puzzle-style programming activities (e.g. Hour of Code) are not effective ways to teach programming. While they may allow students to learn programming concepts (loops, if statements, functions, etc.), they are usually ineffective at demonstrating how these concepts have real-world applications. A student who can clearly see that what they are learning could be used to write a game will be much more interested than a student who is struggling to see the point in telling a character to move forward, turn left, and move forward again. Given that you'll be using Python, it's likely that you'll avoid most of these issues.


14 hours ago, Scott Robison said:




The emphasis of the semester will be Python of necessity, but I don't want to just teach kids how to invoke magical incantations to make Python do things.



I think the best way to avoid "magical incantations" is to use libraries that provide very general functionality, requiring students to implement more specific functionality using programming concepts.

Scott Robison
Posts: 952
Joined: Fri Mar 19, 2021 9:06 pm

Teaching Middle School Programming

Post by Scott Robison »


Thanks. I agree. I'm not sure how much Python is exposed in the classroom environment (as in we use a web based platform that provides a Python environment that their classroom work will be completed within, as the students use Chromebooks). More than anything, extension library availability may be an issue depending on what the students want to do for projects they choose.

Of course, there is nothing that requires them to use just the one platform. They can't install extra tools at school, but there are multiple online Python sites that allow you to edit and run code, and multiple platforms support installing Python for their use at home.

As for the magical incantation problem, you hit on something I hadn't considered. Yes, libraries can give you that effect, but I'm especially thinking of things like Stack Overflow. So many snippets are available online that people will grab and use without understanding what it is or why it works. At least with a library you are using an interface to access functionality. With random snippets I feel like it is an even worse way to cobble together a program.

TomXP411
Posts: 1760
Joined: Tue May 19, 2020 8:49 pm

Teaching Middle School Programming

Post by TomXP411 »


I've been thinking about this, too. I may have a similar opportunity, and if I do it, I want to make the most of it. 

One thing I've been contemplating doing is taking the old BASIC type-in program books, like David Ahl's "BASIC Computer Games" and converting them to modern languages, like Python, and C#.

I'm thinking back to my first programming courses, and they always went basically the same way: start with PRINT, INPUT, and variables, then work through conditional statements, loops, and some basic data structures. As you go, use simple games as examples. 

Have you looked at any textbooks for the class? Using a pre-built curriculum would be a lot less time consuming and more effective than trying to build your own syllabus from scratch.

I've noticed there are a few Kindle Unlimited E-Books that may fit this bill.. here's one that looks promising:

https://www.amazon.com/Learn-Coding-Basics-Hours-Python-ebook/dp/B089R7LCBT/ref=zg_bs_3944_16?_encoding=UTF8&psc=1&refRID=M8EY8419X3JMC1BNDP1S

The nice thing abut KU is you can preview as many KU books as you want for no additional cost: just the cost of a month of the service. That obviously doesn't cover ALL books, but it's a place to start. And once you've found a book you like, you can either adapt their course or buy copies for the kids, depending on the school's budget for this.

Scott Robison
Posts: 952
Joined: Fri Mar 19, 2021 9:06 pm

Teaching Middle School Programming

Post by Scott Robison »


I have a curriculum provided, but the director at my school is very much against "inauthentic" experiences and wants useful stuff, so I have latitude to use the better parts of the curriculum (PRINT INPUT variables etc) and ignore busy work. For example, in the first lesson is the following activity:

image.thumb.png.46b948d337c1d205d4e94a04f238c646.png

It's not that the entire activity is bad, but I shudder a little bit at a coloring assignment in a class like this. The discussion is important. Writing out ideas is a good idea. Coloring might be useful for some students but it just doesn't feel "authentic" to me personally.

Of course, all I really know at the moment is the curriculum that already exists and that I'll have 11 or 12 students in my class (subject to first week changes in enrollment). Once I get to know students I'll have a better idea of how to tailor it for them.

SlithyMatt
Posts: 913
Joined: Tue Apr 28, 2020 2:45 am

Teaching Middle School Programming

Post by SlithyMatt »



8 hours ago, Scott Robison said:




or example, in the first lesson is the following activity:



This is a very odd activity for a middle school class. Was this curriculum made for this grade level? The juxtaposition of a coloring activity combined with a though exercise on a concept they don't really understand yet is baffling. Maybe a discussion on ethics would be a better activity.

Scott Robison
Posts: 952
Joined: Fri Mar 19, 2021 9:06 pm

Teaching Middle School Programming

Post by Scott Robison »


It is intended to be taught to students starting in 6th grade or later, so it still has traces of elementary school around it. So there will be pieces like that that I will avoid (if someone *wants* to draw pictures about inventions that's fine, but it isn't anything I'm going to collect and grade). I do want them to take a minute or two and think about those sorts of inventions and write a list in words. If they can't do that much, they may not be ready for intro to python. What I'll be grading is their participation as part of the class so that they have some historical background.

I plan to bring in several different computers (I have my legitimate C= 16 with tape drive and joystick, I have a raspberry pi with my bare metal CBM emulators, an Intel Compute Stick, and I have some old spent motherboards and cards [probably]) to show some of the various forms they can take and to be able to point out parts of the motherboard that make things work. Combined with a slide presentation of "ancient" computers. They will be using Chromebooks and I'll have my surface pro plugged into a projector.

But yes ... this is the first year this school has offered this type of class, so there are bound to be some growing pains as I go through and adapt the material to cut out the busy work in as much as is possible and really focus on writing software with important side trips (without the coloring.)

Post Reply