CSci 490-1 (Special Topics) / Engr 596-6 (Special Projects)
Software Design and Scala Programming
Spring 2010
Lecture Notes and Web Resources


  1. Abstract data types.

  2. Understanding Inheritance, based on Timothy Budd's Understanding Object-Oriented Programming with Java, Chapter 8: [slides]

  3. Scala examples.

  4. Solitaire Case Study, based on Timothy Budd's Understanding Object-Oriented Programming with Java, Chapter 9: [slides]

  5. Software Reuse, based on Timothy Budd's Understanding Object-Oriented Programming with Java, Chapter 10: [slides]

  6. Replacement and Refinement, loosely based on Timothy Budd's An Introduction to Object-Oriented Programming, Third Edition, Section 16.2: [slides]

  7. Implications of Inheritance, based on Timothy Budd's Understanding Object-Oriented Programming with Java, Chapter 11: [slides]

  8. Multiple Inheritance, based on Timothy Budd's An Introduction to Object-Oriented Programming, Third Edition, Chapter 13: [slides]
  9. CookieJar ADT using a trait and five concrete implementations.
  10. Polymorphism, based on Timothy Budd's Understanding Object-Oriented Programming with Java, Chapter 12: [slides]

  11. Second Look at Classes, loosely based on Timothy Budd's An Introduction to Object-Oriented Programming, Chapter 25 on Reflection and Introspection: [slides]

  12. Frameworks, based on Timothy Budd's An Introduction to Object-Oriented Programming, Third Edition, Chapter 21.

  13. Scala Divide-and-Conquer Framework, similar to the Java framework in the paper:

    H. C. Cunningham, Y. Liu, and C. Zhang. "Using Classic Problems to Teach Java Framework Design," Science of Computer Programming, Special Issue on Principles and Practice of Programming in Java (PPPJ 2004), Vol. 59, No. 1-2, pp. 147-169, January 2006. doi: 10.10.16/j.scico.2005.07.009. [manuscript]

    Note: The above paper was not discussed in class, but the Scala versions of the Divide-and-Conquer (immediately below) and Binary Tree Traversal (farther down on this page) frameworks were discussed.

  14. Introduction to Patterns [notes] [slides]

    General reference (not discussed in class): "Introduction to Design Patterns," Chapter 6 in, Eric Braude, Software Design: From Programming to Architecture, Wiley, 2004.

    General reference (not discussed in class): [Siemens book] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Pattern-Oriented Software Architecture: A System of Patterns, Wiley, 1996.

  15. Design patterns.

    Note: We discussed the Template Method and Strategy design patterns in class, but we did not have time to disucss the Factory Method pattern.

    General reference (not disucssed in class): ["Gang of Four" (GoF) book] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software," Addison-Wesley, 1995.

    General reference (not discussed in class): Mark Grand. Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML, Volume 1, Wiley, 1998.

  16. The Binary Tree Visitor Scala Framework adapted from the Java framework given in the paper:

    H. C. Cunningham, Y. Liu, and C. Zhang. "Using Classic Problems to Teach Java Framework Design", Science of Computer Programming, Special Issue on Principles and Practice of Programming in Java (PPPJ 2004), Vol. 59, No. 1-2, pp. 147-169, January 2006. doi: 10.10.16/j.scico.2005.07.009. [manuscript]

    Note: The above paper was not discussed in class, but the Scala versions of the Divide-and-Conquer (above) and Binary Tree Traversal (immediately below) frameworks were discussed.
  17. Mary Shaw. "Some Patterns for Software Architecture," In John M Vlissides, James O. Coplien, and Norman L. Kerth, editors, Pattern Languages of Program Design 2, Addison Wesley, 1996, pages 255-270.
    [manuscript]

    Extra material not covered in Spring 2010

  18. Pipes and Filters Architectural Pattern [notes] [slides]

  19. John Vlissides. "Designing with Patterns," In Pattern Hatching: Design Patterns Applied, Addison-Wesley, 1998. [slides]


UP to CSci 490-1/Engr 596-6 root document?


Copyright © 2011, H. Conrad Cunningham
Last modified: Monday, 19 Sept 2011