The CS Principles class just started Unit 4 - Algorithms this week. The intention is to teach them how to develop methods, and to use these methods to build algorithms.
In the class we are stuck with C++. There are good and bad things about this as a teaching language - I get a lot of strong opinions from folks about it. It is the language my county has chosen for this level of programming, so that is a debate for another day.
One benefit is the mechanics of creating a method are very similar to Java, and most of my students move on to take the APCS course.
Looking back over what we did last year overall they did learn the mechanics of methods. This is one of those topics that you teach, and you think they get it, and then three weeks later they have forgotten the whole business. For the current APCS course this is a big problem since the framework for most free response questions is a method.
On the other hand we got a bit too bogged down with C++ and didn’t spend enough time on algorithms. It is easy to do, I have taught C++ since it was the AP language over a decade ago and I have a ton of materials developed. As most people with small children know, February is flu/strep month so I was out a fair bit while we were covering this topic, and C++ worksheets make super sub-plans.
Algorithms are one of the core Big Ideas of CS Principles. The Learning Objectives that relate are:
LO 17: The student can develop an algorithm.
LO 21: The student can explain how programs implement algorithms.
These are being assessed though the Programming Portfolio. The Programming Portfolio item states that students must include "a description of the algorithms these programs implement". So at a minimum they need to be aware fo when they have developed an algorithm and articulate what it does.
You can find the full collection of CS Principles documents here. Many are still works in progress, but you can get a sense of where the course is going.
So this year I am trying to move beyond just teaching code and do more activities to build algorithmic thinking. More on that tomorrow.