The more I started thinking about this blog post several days ago, the less happy I was with the goals that I listed last time. The goals themselves were not the issue – I still think they are appropriate – but I realized that these goals did not directly drive what I did in class. Instead, each of those goals break down into subgoals, which is often the level I aim for.
About two years ago, when I was part of a summer workshop series for grad students who want to stay in academia, I created a hierarchy of goals for computer science. I remembered that the spreadsheet existed, but never found time to refer to it in the chaos of the semester. Comparing that spreadsheet with the list from the last post, the goals here are more in line with the ones provided by the LACS consortium.
Regardless, here’s the list of what I created from two years ago. Some of them are skills:
- test-driven development
- version control
Others are concepts:
- structural abstraction
- procedural abstraction
- functional decomposition
- space-time tradeoff
And finally some discipline-wide things:
- connections with other disciplines
- connections with the non-technological real world
I had not written this list for CS1, but writing this post I am surprised how deeply these themes run, and how early in a computer science curriculum they occur.
Sorry about the short post for today, but next week I will actually talk about how I attempted some of these this semester.