So we are wrapping up conditionals in the CS Principles course. We have come so far this year, and I can see the light at the end of the tunnel. Part of me can't believe how much we have covered, and part of me wishes there was more time. I suppose something always gets cut.
Anyway, my goal this unit is to teach simple if thens, throw in some Boolean conditionals and relate all this to digital circuitry ala logic gates. Our final project for the unit will connect this to the Simulation part of the Abstraction Big Idea.
No small task.
For now I am stuck with C++, we have an existing curriculum I am doing the pilot in this class, so I have to get the students through arrays in C++. No wiggle room there. I am ambivalent about C++, it is a great language and I love working in it, but it is not the best vehicle for teaching good programming. It is fiddly to say the least.
On the other hand- BYOB Scratch is a great teaching tool. My original approach this year was to do Scratch first, then transition to C++. Wrong, wrong, wrong.
About two weeks back we were having a hard time getting though the classic leap year problem. I have taught this for years, and typically some kids get it right away, and some kids never fully get it. I had one of those "well, duh" moments, and we switched over to scratch. Within 10 minutes every student had a working leap year tester, could explain why it worked, and could explain how to choose good test data for this problem. We then went back to C++ and used the Scratch visual to build our C++ solution. Amazing!
So this will be my approach next year. Scratch as a prototyping language for C++ rather than two distinct topics. This will let us hit the coding about 6 weeks earlier next year, and if the last two weeks give any indication they should grasp the C++, and the underlying concepts, much faster.