Ed C. Epp
University of Portland
Portland, OR
epp@uofport.edu
As our understanding of computer science expands, we find ourselves focusing on higher levels of abstraction. These shifts in understanding are so fundamental that they inevitably make their way into beginning courses. With the acceptance in object-oriented programming languages, we are seeing a shift from implementing classes to one of utilizing object patterns. I suspect that patterns will have a major impact on CS2.
If we look at the past several decades, we can see how the level of abstraction has increased:
Each one of these shifts in abstraction has impacted CS1/CS2.
Smalltalk and Java are influencing our perceptions of software systems because the core languages are small, yet they provide a large standard class library. Thus, both of these languages have allowed us to step beyond the level of individual objects to the level of object and class patterns. Java includes within its standard class library the implementation of the Strategy (layout managers), Bridge, Abstract Factory, and Singleton (peer) patterns. The inclusion of these patterns, plus a rich set of classical data structure classes, encourages us to look at larger issues.
This is our second year using Java in CS2. One impact of incorporating Java into CS2 is that we have a natural way of addressing patterns: