CSPP 57100

Laboratory in Object Oriented Technologies 

Home Page
 

Laboratory in Object Oriented Technologies
Fall 2008

Course Description 

This is a advanced hands-on laboratory in the design and architecture of large scale OO Frameworks, for students already familiar with advanced topics in OO architecture and design.  The lab will consist of brief topical lectures (< 1 hour) on the various aspects of OO frameworks followed by a 2-hour lab that allows students to create their own OO framework.  Students will be expected to work on their framework outside of lab time as well.  Primary focus will be on the qualities of well-designed OO frameworks, design fundamentals, distributed aspects, white box and black box designs, service management, database interfaces, and framework patterns.  Students will also gain hands-on experience in correct class design, use of encapsulation, inheritance, polymorphism, interface design, abstraction, and other fundamentals of object oriented frameworks.  Students will use a design tool to produce design artifacts that model a specific framework whose requirements will be provided. Students will be responsible for writing Use Cases for the Framework.  Source code will be produced from the model and will incrementally evolve throughout the quarter.  During the final class, students will demonstrate their frameworks and code to the rest of the class, which will critique the choices and tradeoffs made in the framework demonstrated.

The course will be taught using the Microsoft .NET Framework libraries utilizing C#.  The default platform will be a platform-independent Mono environment on Linux or Mac OS X; however students may use Microsoft Windows and the .NET Framework if they so choose.   No specific advanced Microsoft technologies will be required; however students may at their descretion utilize specific MS technologies, such as Windows Communication Foundation, etc.

 
SUBJECT COURSE TITLE TIME BUILDING
324 57100 Laboratory in Object Oriented Technologies Saturday, 9:00 am - 12:00 pm Ryerson 4th Floor Lab


PREREQUISITES (both are required):  

(1) Intermediate knowledge of one (or more) OO programming languages, e.g., Java, C++, C#, Smalltalk, Objective C, etc.  

(2) CSPP 51023 or CSPP 51050 or consent of the instructor.  Knowledge of UML is assumed.  For my consent, you will need to demonstrate significant experience in OO architecture, design, method, as well as core knowledge of UML.

N.B.  The class will be conducted using C#.  You must feel comfortable learning C# on the fly if you do not already have facility in the language.  C# will not be taught as part of the course.  It is your resonsibility to know C# or come up to speed with it over the quarter.  The good news is if you know Java, transfering knowledge to C# will be quite easy.

TEXTBOOK:  Framework Design Guidelines:  Conventions, Idioms, and Patterns for Reusable .NET Libraries, Cwalina and Abrams, Addison-Wesley, 2006.  ISBN:  0321246756

Recommended Texts:

    Learning WCF:  A Hands-on Guide , Bustamante, O'Reilly, 0596101627

    Applied Microsoft .NET Framework Programming, Jeffrey Richter, Microsoft Press, ISBN 073561422

    C# Essentials, Albahari et. al., O'Reilly, ISBN 0596003153

    Learning C# 2005, Liberty and MacDonald, O'Reilly, ISBN 0596102097

    Programming C# 3.0, 5th ed., Liberty and Xie, O'Reilly, ISBN 0596527438

    ADO.NET 3.5 Cookbook,, 2nd ed. Hamilton, O'Reilly, ISBN 9780596101404

    Programming ASP.NET, 3rd ed., Liberty and Hurwitz, O'Reilly, ISBN 059600916X

    Beginning C# 2005 Databases, Watson, Wrox, ISBN 0470044063
   
    Beginning Visual C# 2005, Watson et. al., Wrox, ISBN 0764578472

Online Resources:

.Net Common Library Runtime
.Net Common Type System
.Net Common Language Specification
C# Language Specification
.NET Design Patterns
.NET Patterns I
Design and Implementation Guidelines for Web Clients
Designing Data Tier Components and Passing Data Through Tiers
.NET Patterns II
.NET Data Access Architecture Guide
Windows Communication Foundation
WCF Conceptual Foundation
WCF Guidelines and Best Practices
J2EE and .NET Interoperabilitycd
J2EE and .NET Application Interoperability
J2EE and .NET Presentation Layer Interoperability
 
Lab 1 October 4  Introduction to OO Frameworks
Framework basics
FDG Chapters 1-2
PNFM Chapters 1-2, 5
Articles under ~mark/pub/57100/reading

 
 

Lab 2 October 18
Brief Introduction to C# .NET
Namespaces and Type Design 
FDG Chapters 3-4
PNFM Chapter 3-4
Lab 3 November 1
Remoting and WCF
Members and Extensibility
FEG Chapters 5-6
PNFM Chapter 6-7
Lab 4 November 15 Implementation Review FEG Chapters 7-9
PNFM Chapter 8-9
Lab 5 December 13 Student Demonstrations & Critique

 




I can be reached at several email addresses, among them:

mark@cs.uchicago.edu
mshack@post.harvard.edu