I believe the primary difficulty I am having with this class is that I have tried to compartmentalize the course, and put broad stroke topics (the Big ideas) into units. They are called BIG ideas for a reason. They don't fit nicely into units. I have come to realize that it will be better to teach this course utilizing the BIG ideas in all the units. My approach next year will be a programming approach where the big ideas take on a role in each unit.
I'm thinking that I will start the year with a unit that focuses on algorithms and writing programs on paper using flowcharts and pseudocode. Providing students an opportunity to explore advance topics without the limitation of a language. Students often lack problem solving experience. Devoting a unit to problem solving and algorithms will allow us to continue to utilize these skills as we explore current technology and break down how it works. This will also prepare students for their performance tasks. Through this unit, we can apply the Big ideas by studying current technology and how it relates to the Big ideas. What is the algorithm? How does it use the internet? How does it incorporate data? What abstractions are present? What creative ideas do students have to extend and make this technology better? What problems do they see with this technology and what creative solutions do they have? What impact does this technology have on society?
Many of my students were disappointed with the first half of the school year. This course was marketed as a programming course, and when we didn't do any programming for the first 1/2 of the semester, they were understandably chomping at the bit. When we moved into Alice 3.0 they were a little bit more satisfied, but it wasn't until we started working Java that they let go of the resentful feelings they had toward my course. My model of CS Principles through programming may not work at every school. In my district students are exposed to programming during middle school. We have elementary and middle school clubs that are working on programming and robotics. These students are already sold on programming and are eager to expand what they have learned. By not taking a programming approach I fear that I will lose student interest, rather than build interest and build a strong CS program.
I welcome your response as to your approach to CS Principles and how it is working. And ... as for next year... I'll let you know.