We all have to deal with bugs - students, teachers, hobbyists, professionals. It's rare that we'll take a concept to working program without some bumps along the way. Well, once or twice I did but that's once or twice over the course of a lifetime, those cases are the exceptions.
The errors and the bugs are inevitable so what can we do to help students deal with the invariable frustration?
One of the things we're frequently faced with as computer science teachers is the questiosn of "when will I need to know this." This comes up when you teach an non-mainstream language like Racket or a language kids sometimes see as inauthentic like Scratch. It also comes up a lot when learning data structures and algorithms.
Do I really need to know all of these sorts when I'm just going to use the built in sort routine?
Is CSforAll a jobs program? This came up again the other day.
I'm using a recent review as an excuse to ask more general questions.
Is #CSforAll a jobs program or preparing future citizens? Does learning about CS belong just to STEM education?
Should we only teach CS to Ss with math background, or can we teach CS to Ss who hate math? https://t.co/k030BHoZ93
— Mark Guzdial (@guzdial) April 5, 2022 With one of the referenced tweets talking about CS salaries.
My feeds have been inundated with post after post dealing with teacher burnout, teacher shortages, government attacks on teachers and public schools. In response to one video, a friend of mine commented:
This is going to be a crazy summer and fall. I wonder if we are witnessing the end of public education.
Teaching was always a high attrition profession but given the stress teachers have been under since the pandemic started it's no surprise that teachers who can are leaving in droves.
A big difficulty with creating CS opportunities for all our students is the lack of CS teachers. New York City addressed this problem with their CS4All program - quick form PD to get teachers into CS classrooms in a hurry. One can debate if that was the best way to go but it enabled NYC to create a whole lot of CS classes in a very short period of time.
A question was raised on Facebook last week asking about teaching truth tables and logic gates in an intro class in programming Python. The teacher who posed the question certainly appreciates the value of these topics but was wondering both how best to motivate the topics and if they were really appropriate in an intro programming course as opposed to, say, and intro computer architecture or electronics course or even a more general intro CS survey course.
While my series on APCS-A language choice is done, I wanted to write this brief addendum.
While reading comments over on Facebook under my APCS posts one caught my eye. There was a comment saying they wished the College Board would create a data science course. I responded, why not create one yourself. The response, shared I'm sure by many is that if a course doesn't have an AP designation students won't sign up for it.
I think I've hit on the big points on APCS-A language but a couple more remain. This time, let's look at alternative languages.
When APCS started in 1984, Pascal probably made sense - it was the primary learning language at the time. It wasn't really used in industry but it was the language you cut your teeth on. A few years later when I went from college to Goldman Sacks I found very few companies using Pascal.
One of the arguments for keeping APCS-A as is are the costs to change. There are of course, many kinds of costs.
The first are the monetary costs. New text book, curricular materials and possibly equipment. The College Board has their development costs but I don't care about those - they're raking in money hand over fist anyway. I don't think these costs amount to much. Companies that sell materials for classes are always trying to make sales and even when subjects don't change there are always new books and other resources.
Last time we talked about the intent of APCS-A and without deciding on that we can't really chose a language. Still, we can talk about strengths and weaknesses of languages. Let's do that by taking a walk down history.
APCS started in Pascal. Back then it was a one year course that included CS1 (programming) and CS2 (data structures). Later they offered two exams A (programming) and AB (programming plus data structures).