The Washington State Office of Superintendent of Public Instruction publishes an excellent list of K-12 computer science standards. In my opinion they are both comprehensive and highly aspirational. I’ve selected the following as our expected learning outcomes for middle school tech class at St. John:
|2-AP-10||Use flowcharts and/or pseudocode to address complex problems as algorithms. (P. 4.4, 4.1)|
|2-AP-11||Create clearly named variables that represent different data types and perform operations on their values. (P. 5.1, P. 5.2)|
|2-AP-12||Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals. (P. 5.1, P. 5.2)|
|2-AP-13||Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs. (P. 3.2)|
|2-AP-14||Create procedures with parameters to organize code and make it easier to reuse. (P. 4.1, P. 4.3)|
Note that these standards are for grades 6 – 8, and a few of these aren’t introduced until grade 8.
That covers maybe a quarter of the full list of standards for grades 6 – 8 and is not to say that the above list are necessarily the most important. Some of the other standards are technically very interesting, such as encoding data in various formats and dealing with encryption. Others are socially important such as analyzing bias in technology design. Lots of good stuff, just way more than we can cover in 10 hours per year! I pick the items I know I can teach well in the time allowed, and which are pretty in-arguably fundamental to applied computer science.