5. Papers: Potpurri

Mon 3:30-4:45 pm - Genoa
Understanding Abstraction: Means of Leveling the Playing Field in CS1?
Celina Gibbs, University of Victoria, Canada
Yvonne Coady, University of Victoria, Canada

Given the wide ranging treatment of IT in high schools, future generations of CS1 students are bound to arrive with dramatically different levels of exposure to programming constructs. Though exposure to language mechanisms is not the take-away point from CS1, this appears to create an uneven playing field in our introductory courses. The premise of our work is that by focusing on abstraction, students connect with opportunities to engage in creative and analytical processes, potentially achieving more intellectual satisfaction–even from simple formative exercises in a first assignment.

Our results show that of the 75 students in the study, on average 91% reported success with the implementation exercises in the assignment. However, when asked to reflect on their implementations at a higher level of abstraction, only 69% communicated solutions in ways that meaningfully generalized the specific task at hand. Further, success in abstracting their solution appeared to be less tightly linked with previous programming experience, and instead is most strongly related to the propensity to experiment with their own code.

Learning OOP with Dynamic Languages: Adding Concrete Strategies to a PHP Strategy Design Pattern
William B. Sanders, University of Hartford, United States

While strongly typed languages such as C++ and Java are taught using OOP principles and design patterns; dynamic languages like PHP and JavaScript often are not because of weak typing. As the dynamic languages themselves incorporate more OOP structures, such as type hinting in PHP 5.1, educators need to consider ways to include OOP practices in courses where dynamic languages are taught. This paper suggests one way to introduce OOP principles is through design patterns. Using design patterns educators can introduce both design pattern structures and OOP principles while revealing the practicality of both. This paper uses the Strategy Design Pattern because the pattern lends itself to demonstrating the principles of 1) favoring composition over inheritance and 2) programming to the interface instead of the implementation. It also provides a simple and practical example of code change, re-use and extension. Likewise the implementation illustrates, polymorphism, single responsibility rule, and loose coupling. The example project involves students building additional concrete strategies based on an initial example structure.


2009 Highlights

Barbara Liskov

In a reprise of her ACM Turing Award lecture, Barbara Liskov discusses the invention of abstract data types, the CLU programming language, clusters, polymorphism, exception handling, iterators, implementation inheritance, type hierarchies, the Liskov Substitution Principle, polymorphism, and future challenges such as new abstractions, parallelism, and the Internet.

Watch the video on InfoQ.

More Highlights