Monday, April 16, 2012

It's Logical

Logic.ly Software
My goal with the CS Principles course this year is to make connections. We've been working on if/thens in C++ for the past week. Tomorrow we transition over and start looking at logic gates. My hope is they connect all the binary and hardware stuff we did at the beginning of the year to the logic we have been using to write if/then statements.

I have been playing with several logic gate emulators to find one that is a good fit.
  • Logic.ly This is my favorite interface for these programs. it is easy to use, and the graphics of a switch and light bulbs help make it clear what these tools are doing. This is not free, it costs $29.99. There is a good on line demo that is free, but students cannot save their work.
  • Logic Gate Simulator   This one is shareware. Great interface and I love that I can send it home with the students if needed.
So far so good - now I just need to figure out how to asses this. It is easy to test if the students can add binary numbers, or create a specific logic gate, but trying to tell how much they get at a conceptual level is much harder.

Wednesday, April 11, 2012

It's Logical

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.