Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
An inverted taxonomy of sorting algorithms
Communications of the ACM - Special section on computer architecture
OO overkill: when simple is better than not
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
Algorithms and object-oriented programming: bridging the gap
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
Frames and boxes: a pattern-based method for manipulating binary trees
ACM SIGCSE Bulletin
A case for OO -- Java -- in teaching algorithm analysis
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
The game of set®: an ideal example for introducing polymorphism and design patterns
Proceedings of the 35th SIGCSE technical symposium on Computer science education
Frameworks: putting design patterns into perspective
Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education
Teaching design patterns in CS1: a closed laboratory sequence based on the game of life
Proceedings of the 36th SIGCSE technical symposium on Computer science education
Using the divide and conquer strategy to teach Java framework design
Proceedings of the 3rd international symposium on Principles and practice of programming in Java
Object-oriented algorithm analysis and design with Java
Science of Computer Programming - Special issue on principles and practice of programming in java (PPPJ 2003)
Using classic problems to teach Java framework design
Science of Computer Programming - Special issue: Principles and practices of programming in Java (PPPJ 2004)
Has the paradigm shift in CS1 a harmful effect on data structures courses: a case study
Proceedings of the 40th ACM technical symposium on Computer science education
Hi-index | 0.01 |
Drawing on Merritt's divide-and-conquer sorting taxonomy [1], we model comparison-based sorting as an abstract class with a template method to perform the sort by relegating the splitting and joining of arrays to its concrete subclasses. Comparison on objects is carried out via an abstract ordering strategy. This reduces code complexity and simplifies the analyses of the various concrete sorting algorithms. Performance measurements and visualizations can be added without modifying any code by utilizing the decorator design pattern. This object-oriented design not only provides the student a concrete way of unifying seemingly disparate sorting algorithms but also help him/her differentiate them at the proper level of abstraction.