Branching Decisions in Algebra

Yesterday (as I write this) was a hard day for some students in my several remedial algebra classes. The lesson wasn't a long one (I was done lecturing about 40 minutes into the hour on the two topics), but about 1/3 to 1/2 of the class seemed to run into a brick wall in trying the final exercises on their own. The subject was basic factoring of polynomials, and after two days on the subject I had this combined procedure written on the board:
Factor completely process:
(1) Factor GCF if possible.
(2) Try DOS for binomial, or SQ for trinomial.
All of those terms had been defined previously and quizzed verbally many times on prior days (GCF = greatest common factor, DOS = difference of two squares, SQ = simple quadratic, i.e., x^2+bx+c). Now obviously, anyone who had missed the prior day or been significantly late (so as to miss one or more of the 3 core procedures) would be at a disadvantage.

But it appeared to me that the major roadblock was reading and implementing that direction in part (2): that is, following a logic branching procedure, making a decision on what to do next. For some of the more struggling students, I could stand by their desks and say something like: "Now you have two terms. That's a binomial. What should you try now?", and they either couldn't tell me or pick the wrong procedure. (And then one student could only squint and squint at the board and clearly couldn't read what was written there, I guess ever for the semester or any other class they've taken.)

And generally isn't that true for the hardest parts of the basic algebra class? Things like solving general equations (knowing what inverse to apply next for the problem, including exponents or radicals), identifying special products in a multiply exercise (FOIL, DOS, or square of a binomial), or even just following the written directions on any given problem (simplifying vs. solving vs. factoring vs. graphing, etc.). Maybe the weakest students are quasi-okay following directions for a few steps with straight-line flow of control (what do you call that?), but are unable to deal with any conditional branches or decisions along the way. (And of course this would be similar to the other great brick-wall of basic academics, namely computer programming.)

I was talking to colleague recently and said, "I really wish someone had taught our students basic logic at some point". And his response was, "Oh, logic is a very deep subject that is very difficult, I'm not sure how endless truth tables would help". (Oops, I didn't realize that he was a logician by research area.) But I responded: "All I'm looking for is that students can parse an And-Or-Not statement or an If-Else. Like if I write 'If the base is negative, then any odd power results in a negative', many students will make all odd powers negative at the end, by simply ignoring the first part of that statement." And he said, "Oh yes, I've been having the same problem in my classes lately..."

Is this a key part of our problem for students attempting to enter college for the first time, at the level of either algebra or computer programming? That they simply can't make branching decisions when required? (Personally, one change I'll make the future is to write my process as "If binomial try DOS..." so the decision is explicitly before the action, but I know from even a statistics course that I teach that many students still can't follow such a direction.) Is this intrinsic to the student, or is it evidence of high school academics that demanded mindlessness when following directions?