TIAGPC Is A Good Programming Class
November 23, 2011 6:55 AM   Subscribe

What makes for a good high school programming class?

I am proposing to my alma mater that it offers a programming class, and its administrators are interested. Now, I need to present the goals, general format and some of the specifics to be taught. If you took a good programming class in high school, what was it like? If you are teaching a good programming class in high school, what is it like?

Pre-requisites, number of semesters, class size and technology/languages to be used are all undecided at this point. I don't think they are as important as how to impart the programmers' mindset, but I am certainly open to hearing about any of them. Thanks.
posted by michaelh to Education (6 answers total) 4 users marked this as a favorite
The best high school CS class I had was taught by a guy who had no prior teaching experience. It was his first semester as a teacher, as he had recently quit his corporate programming job. It was a C++ course, and the only prior experience those of us who weren't doing this for fun had was a year of VB.

Because we only had one period a day to work with, classroom and lab instruction was on different days. A day in class learning about passing variables or pointers or classes, and a day in the lab getting our hands dirty working with what we learned. The labs were fast and loose, which was great. The kids who didn't give a shit surfed the web and played video games (if he caught you, you'd get shit, but he didn't try) and the kids who were into -- the ones who showed up to the lab during lunch to play Quake with the teachers and learn more advanced stuff the class would never get to -- it got to work on their own projects.

The best part about the class was, really, that he didn't slow down teaching to try to pound stuff into kids who didn't want to be there. I know that seems odd for something so specific as a programming class, but it was an engineering high school and it was a required course for certain students. So, that was it. He answered questions, he had no problems with going at different paces for different students in the lab, but the classroom instruction was full steam ahead. Anyone who really didn't get something could always talk to him during the lab the next day, or at lunch, or through email.

Thanks to his class -- and another young, fresh teacher who taught in pretty much the same manner -- I managed to score a 4 on the AP Computer Science exam without having taken the AP class and having skipped an entire section of the exam. And I wasn't even one of the kids really into programming (we had plenty of teenage Perl hackers who've been running Linux since age 15.) I was just slightly more interested than the average kid in that class.
posted by griphus at 7:15 AM on November 23, 2011

Oh, and, heh, a number of us would cut other classes and show up to the lab to screw around with our C++ projects and play video games. The teachers knew well that it wasn't our lunch periods (and my high school had no "free" periods, the entire day was blocked), but there were no questions asked, and you didn't get kicked out as long as you weren't there to just goof off.
posted by griphus at 7:18 AM on November 23, 2011

Of the introductory programming classes I took in college, the ones focused on functional programming (in this case, Scheme) were the best -- the focus could really be on training the programmer mindset. In this class, some of us had never programmed before, but we got a really solid grounding in recursion, loops, basic algorithms and how to implement them, a little bit of scalability (O(n) vs. O(n^2)). All in three months without requiring prior experience!

Whereas the next course I took, where we programmed in Java, I felt like I spent all my time trying to remember obscure (to me then) syntax details or the exact way to declare a function, which at that point just seemed like a magic incantation to memorize. I didn't get nearly as much out of that class as a new programmer.

This is the textbook for the class I loved. I would really recommend it for training new programmers how to think like programmers.
posted by anotherthink at 7:48 AM on November 23, 2011

I took AP Comp Sci in high school as a senior. I took it in conjunction to BC Calculus, and most of the people were in both classes (or had taken BC Calc the prior year). It was a full-year class, and we were taught C++. Even though I didn't have a lot of the basics others had (I knew diddly squat about programming when I started, and the class had lots of computer geeks in it), I learned a lot and the class was paced well for everyone. A lot of this was because we had frequent practicals and people could explore these creatively, thus doing the practical at their own skill set. The textbook we used (sorry I don't remember it!) was good and provided a lot of the basics -- it was probably something like "C++ for beginners" or "learning C++."

The by-far coolest part of the class was the final project. We had to come up with an idea and write a program for it to make it functional. There were kids in the class working on AI (or so they said!). I, being a noob, put together a little program that simulated a pizza ordering system. The customer could put in how many pizzas and number of toppings, and the program would spit back a wait time based on how many orders were already in. It was simple, but it worked like it was supposed to. Since we got graded on how functional and well-written our programs were, the final project challenged everyone at their own level.

The class was being concurrently taught as a distance-learning class to another local high school (for the lectures, I think). The teacher had an overhead that was connected digitally and would project the images and his voice (not sure if he wore a mic or if it was connected to the projector) would project in their classroom, real-time. They had a camera and mic so sometimes they would show up on our screen with questions for him. I tend to think they liked it just fine, because all of the kids in the class were there because they wanted to be.

This class was taught in 2002-3 (full year course), and our class was about 15-20 (pretty standard for AP classes at my school). I don't believe that it had any prerequisites, although it's possible a certain math level was required to get into it.
posted by DoubleLune at 7:56 AM on November 23, 2011

One thing you might want to consider is your target audience. A lecturer from Harvey Mudd gave a talk to Google about their efforts. They did three things to boost women majoring in CS. The part relevent to you is their change in pedagogical approach. I haven't actually experienced it but as a programmer, it makes a lot of sense what they do.

Obviously your HS is a bit different, but I think there's some lessons in there. Their goals were to attract all students (not just those that already love CS and would take the course regardless), to tout and de-magic the breadth of CS, and to prepare students for advanced courses.
posted by pwnguin at 8:15 AM on November 23, 2011 [2 favorites]

My high school programming classes were awful for the same reason most of my other classes were awful: It wasn't challenging, and I didn't learn anything new. The trick is to teach those who don't already know the material without leaving out those who do. Few teachers do this.

So I don't have any concrete suggestions, I guess. Computer Science works in the classroom; actual programming is something most learn on their own.
posted by coolguymichael at 9:26 AM on November 23, 2011

« Older Trouble updating Netflix   |   Some questions about getting a web app developed Newer »
This thread is closed to new comments.