My CS Principles course use the 7 big ideas from the CSP curriculum framework as unit themes. My in-progress curriculum map can be found here. There are many concepts that overlap such as abstraction and algorithms as essentially parts of programming, or at least students program to demonstrate mastery. However, structuring the course around the big ideas themes facilitates wrapping my mind around a dense curriculum (there are 305 knowledge objectives!).
My goal is to design a CS Principle that follows the How to Design Programs pedagogy in collaboration with Bootstrap curriculum. The goal is to cover the first 10 sections (or 11 if your in the 2nd edition of HTDP) up through list of structs. This should give students enough options to produce a unique artifact for the Create Performance Task.
Unit 01 - Programming introduced students to the Racket programming language. Using the flag project idea from Brown's CSCI 0190, students develop expressions to display flags using composition of image producing functions. Students get are introduced to abstraction by writing an arithmetic expression to control the dimensions of the flag. For example if a rectangle is 300 x 200, students would write (* 3 100) (* 2 100).
In the Unit 02 - Abstraction students add abstraction to their flag programs by defining variables and functions. They learn to identify the parameters of expression by looking at the arithmetic expressions they wrote in the previous unit. The Abstraction unit culminates in a second iteration of the flag project that mirrors the Create Performance Task. Students are required to produce a program to display a flag of their choice. The project includes documenting the process and program. Prompts are aligned to the Create Task.