I work with younger students in a different class that isn’t CS Principles. We introduce pseudocode by having them explain things to me in everyday English. Depending on where your students are, maybe you could begin by working in some plain language problems before moving to the AP-style pseudocode. For example, “What would you get if you the robot to move forward 3 spaces, turn right once, and then move forward two more?” with examples of paths drawn out.
I wonder what ideas the rest of the community has for this?
Hmm for me i pretty much taught myself mostly to be able to condense down what your trying to do, my favorite way of doing these types of things is analogy’s
the best part about this strategy is that it allows for a lot more leeway and creative approach to explaining the problem and a possible way of solving it; or to simply show what the program is doing using step language is good as well for the smaller stuff but larger concepts require a lot more
or if your students are better suited to making simplified syntax of program code that definitely works too just that some are better suited to using analogy’s than using that I’ll give a demo below for a small script
Script
var a = 40;
for(var b = 0; b <= a; b++) {
console.log(b * a)
}
Pseudo
define a as 40
define b as 0
loop while b is less than or equal to a {
log output a * b
}
Analogy
Mary wants to produce the multiples of 40 vertically on a page to do this she keeps track of the factor 40 as “a” and her starting point of the multiples 0 as “b” she then proceeds to log the output result each time showing a times b. She then increments b by 1 each time afterword until it’s equal to a
though it’s very good to introduce this type of thinking and should experiment to find the one that’s easiest for them to explain / comprehend or translate later into actual code as a form of template or blueprint since most of the hard work planning was done beforehand if you did a good job with setting it up
I use the College Board question pool to do online assessments throughout the course which exposes them to the College Board pseudo-code. I use Code.org for the curriculum, but a few Code.org units align very poorly with the questions available in the question pool. For example, Code.org teaches a unit on functions with no parameters or return types, and chooses to teach those concepts 2 units later. Most of the questions on functions (procedures) use parameters and return types making it difficult to find appropriate questions from the question pool. Another reason for me using the AP Question Pool for assessments is that Code.org has not changed their end-of-Unit tests in years and students can find all the answers online. When I gave the Code.org assessments, I had students starting and finishing the exam in 3 minutes with a 100 grade, even if the assignment had more text that could have been read within a 3-minute window.
Be aware that there is no universally accepted definition of pseudo-code syntax. It is up to the author to define its meaning, therefore the College Board must provide their pseudo-code reference for the exam. The College Board pseudo-code uses 1-based indexing whereas almost all modern programming languages use 0-based indexing. Another common gotcha is that their random number feature is inclusive, whereas the code we use is exclusive of the start/end numbers. The loop syntax in pseudo-code is also strange for students when compared to their hands-on code. But this is the reality of their AP exam, so lots of exposure to this exam format is really good for students. They should not wait until right before the AP exam to embrace these differences.