CSPP 51024 Home Page
Practicum in Distributed Object Technologies
Spring, 2009

To join the course mailing list, go to: http://mailman.cs.uchicago.edu/mailman/listinfo/cspp51024


Teaching staff:


Mark Shacklette
Office Hours: Tuesday 3:30 pm - 5:00 pm Ryerson 175A
email: mark@cs.uchicago.edu (read hourly or so)
mshack@post.harvard.edu (read hourly or so)

TAs/ Graders:

Lead TA: Soner Balkir
Office Hours: Tuesdays during labs and by appointment.

TA: Sravana Reddy
Office Hours: Tuesdays during labs and by appointment.

Final Project Specifications    Demo Schedule


Texts: Required

Java Programming with Oracle JDBC , Bales, O'Reilly, 2001, ISBN: 059600088X


Java Programming with CORBA, Brose, et. al., Wiley, 2001, ISBN: 0471376817 (available used or Kindle edition) 


Distributed Object Architectures with CORBA, Balen, et. al.,  Cambridge University, ISBN:  0521654181

Inside Servlets, 2nd. Ed., Callaway, Addison-Wesley, 2001, ISBN: 0201709066

Mastering Enterprise JavaBeans, Third Edition, Roman et. al., Wiley, 2001, ISBN: 0764576828

Texts: Highly Recommended
If you're doing a Java Application or Applet Front End (as opposed to simple HTML etc.): Java Network Programming , Harold, O'Reilly, 2000, ISBN: 1565928709
Texts: Recommended
The Official VisiBroker for Java Handbook , McCaffery & Scott, Sams, 1999, ISBN: 0672314517

Advanced CORBA Programming with C++, Henning & Vinoski, Addison Wesley, 1999, ISBN: 0201379279

Client/Server Programming with Java and CORBA , Orfali & Harkey, Wiley, 1998, ISBN: 047124578X

Java Distributed Objects, McCarty & Cassady-Dorion, Sams, 1998, ISBN: 0672315378

Programming with VisiBroker: A Developer's Guide to VisiBroker for Java, Pedrick et. al., Wiley 1999, ISBN: 0471239011

CORBA Distributed Objects, Sean Baker, Addison Wesley, 1997, ISBN: 0201924757

IIOP Complete: Understanding Corba and MiddleWare Interoperability, Ruh, Herron, Klinker,; Addison
Wesley, 1999, ISBN: 0201379252

The CORBA Reference Guide, Alan Pope, Addison Wesley, 1998, ISBN: 0201633868

Java Programming with CORBA , Vogel & Duddy, Wiley, 2001,  ISBN: 0596001037

Pure CORBA, Bolton, SAMS Publishing, 2000

.NET Architecture:

           C# Web Services:  Building WebServices with .NET Remoting and ASP.NET , Banerjee et. al., WROX, 1861004397

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

Web Services & Service Oriented Architecture:

            Enterprise Service Oriented Architectures, McGovern, Sims, et. al., Springer 2006 ISBN: 140203704X

           Developing Java Web Services:  Architecting and Developing Secure Web Services Using Java , Nagappan et. al., Wiley, 0471236403

Enterprise JavaBeans:

Enterprise JavaBeans , Richard Monson-Haefel, O'Reilly, 1999, ISBN: 01565926056

Enterprise JavaBeans , Tom Valesky, Addison Wesley, 1999, ISBN: 0201604469

SQL/ORACLE Database:
The Practical SQL Handbook, Bowman et. Al. Addison Wesley, 2002, ISBN: 0201447878

Beginning Oracle Programming, Dillon, Beck, Kyte. Wrox, 1996, ISBN: 186100690X

Oracle 9i:  The Complete Reference, Loney & Koch. Oracle Press/Osborne, 2002. ISBN: 0072225211

Oracle SQL*Plus:  The Definitive Guide, Gennick. O'Reilly, 1999. ISBN: 1565925785

Linux and UNIX :
Java Programming on Linux, Nathan Meyers, Waite, 2000, ISBN: 1571691669

Learning the Unix Operating System , Peek, et. al.,, O'Reilly, 1998, ISBN: 1565923901

A Practical Guide to Linux, Sobell, Addison Wesley, 1997, ISBN:  0201895498

Java Language Programming :
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN:  1861002238

Thinking in Java , Bruce Eckel, Prentice Hall, 1998, ISBN:  0136597238

Java I/O , Harold, O'Reilly, 1999, ISBN: 1565924851, esp. chapters 1,2,3,5,11

Unified Modeling Language and Design :
The Unified Modeling Language Reference Manual, James Rumbaugh et. al., Addison Wesley, 1991ISBN: 020130998X

UML Distilled , Fowler et. al., Addison Wesley, 1999, ISBN: 0201325632

Java Design Patterns: A Tutorial , James Cooper, Addison Wesley, 2000, ISBN: 0201485397

Object-Oriented Analysis and Design , Grady Booch, Benjamin Cummings, 1994, ISBN: 0805353402


Enrollment in this class may be  limited on instructor approval.

A fundamental functional knowledge of Java is required.     This course is a hand-on laboratory in distributed objects and we will be actively programming in the Java language from the gate.  You will be examined on core Java knowledge on the first day of class, in a very brief test of basic knowledge.  Admittance into the class is dependent on a score of 75% on the qualifying exam or consent of the professorThe instructor reserves the right to deny admittance to anyone whose preparation is deemed inadequate for successful progress in the topics covered.   Qualifying exams will be graded the first night of class and a notice of those admitted to the class will be posted to the course reading list first thing Tuesday morning.   Obviously, students who miss the first day of class will not be able to take the qualifying exam and therefore cannot be allowed in the class without instructor approval.  Alternates will be ranked privately and will be privately notified in the event an accepted student does not wish to take the course for credit.  Students will be required to accept or reject the offer of entrance into the class within 24 hours of the posting of accepted students.  All students wishing to take this course should have joined the course list by Tuesday morning.  The course may be open for autitors (current UofC CSPP students and past UofC CSPP students who have received a master's degree only) if and only if resources are available.  Those wishing to audit should contact the instructor directly.

Concerning Java knowledge, you  need to know the core language and syntax, as well as the issues involved in CLASSPATH resolution and packaging.  Advanced Java knowledge (Threads, Streams, Swing, etc.) is helpful but not required.  Knowledge of C++ is required (only) if you wish to do your CORBA work in C++ as opposed to Java. Acquaintance with C# will be helpful if you wish to explore Web Services in C#.  Students may do Web Services using Java if they wish.

Experience with networking (from a software protocol standpoint) will be helpful, especially a general knowledge of TCP/IP and sockets. Basic database knowledge will prove helpful as you will need to be able to create tables for your database access using JDBC/ODBC.  For that reason, basic familiarity with SQL will also be helpful.  Knowledge of Oracle/Sqlplus is not required but helpful.  For Java competency, you will find CSPP537 helpful.  You should also have a functional knowledge of UNIX (Linux) at the user level, meaning that you should have some basic familiarity with core utilities such as find, ls, grep, and how to edit files with a UNIX editor (ed/vi/emacs/nedit), etc.  With the exception of Java, none of these requirements is alone a disqualifier.  For the front end, you will find CSPP505, Internet Programming to be helpful preparation.


This course is a hands-on laboratory in distributed programming in Java with a focus on enterprise-level, multi-tier applications. Such applications and their supporting technologies form the life-blood for current technology offerings within larger corporations.  After completing this course, students will have practical experience with several leading edge distributed object technologies, including Web Services, CORBA, .NET, Enterprise JavaBeans, JDBC, Message Queue Technology, and Servlets, and their state-of-the-art commercial implementations (Oracle 10g, Oracle WebLogic 8.1, Apache/Tomcat, Java JMS, etc.), along with database design and implementation in Oracle 10g.

The course is structured so that each student will be solely responsible for the creation of a medium-sized, multi-tier application that incorporates several of the technologies mentioned above. The course is primarily lab-based, with lectures on the technologies to provide an introduction and resources.  Lectures will run from 5:30 - 7:30 pm, with the lab following the lecture beginning at 7:45 and running until 9:30 pm.  Students may NOT work in groups, so don't even bother asking.  Each student is independently responsible for the complete delivery of the course project. and supporting laboratories and milestones.  The laboratory exercises are designed to gently guide each student toward the final deliverable.

Final Project Deliverable:  Online Trading System Client Project Facilitator:  Mark Shacklette)

A simple online trading system:

More detailed information on the Trading Application

Focus: Servlets, CORBA, EJB, JDBC, WebServices, Message Queues
Features: Authentication and, maybe, some cost calculation methods could come through CORBA objects, the rest is EJB or Web Services and messging hubs.

Tools used and where to get them (if you wish to do your work at home***):

Sun Java2 SDK SE (Standard Edition) 1.5
Sun Java EE (Enterprise Edition) 1.5
Oracle WebLogic EJB Server  8.1
Apache Tomcat (open-source JSP and servlet implementation)
VisiBroker for Java 4.5.1
ODBC drivers for Linux
IBM MQSeries
Java Messaging Service

***If you wish to do your work from home, that's fine, but you'll be responsible for installing and configuring all supporting software and systems (those mentioned above) on your home system(s).  You will also need a Linux box at a minimum, and preferably a Linux box networked to an NT box (for the client), although that's not absolutely necessary for your development.  You will need an NT box if you wish to do .NET Web Services on NT.  You will also need to be able to port the application from your home and deploy it at school for the final review.  Extra credit will be awarded to those who successfully complete the project from home and then successfully deploy it on the University linux cluster.  Please note that in the end, the only thing that matters is that it runs successfully on the Linux cluster in the CS labs! We do not make house calls for failed ports (actually we do, but our hourly rate is generally considered by most to be cost  prohibitive ;-).

NB:  If you do wish to work from home, you need to know that running all the software, excluding the Oracle data server which you can hit over the internet, will require a MINIMUM of 512M of memory, and you will be happier with 1G or more.  You should NOT try this at home with less that 512M.  You will find that 1 Gig is a happy functional minimum.


Upon completion of this course the student will (depending on their track):

A. Understand Java JDBC.

B. Understand CORBA and IDL, with implementations in Java and/or C++.

C. Understand Java Network programming, including Java Servlets.

D. Gain hands-on experience with JDBC, Oracle, Servlets, Enterprise Java Oraclens, Message Queue and WebServices interaction.


Students are expected to have read and understood the University's policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations.

While students are encouraged to help one another in understanding the complexities involved in this course, by providing mentoring and explanations, students may not share code in the form of complete Java source files.  Short code snippets showing, for example, how one connects to the database with JDBC, how one binds to a CORBA object, Makefiles, etc., is allowed.


Methods include lecture and lab supervision and mentoring.


Attendance:  You may find attendance to either lectures or labs helpful, but it is not required.


Students will work individually on their projects.  The grading is broken down as follows:

Grading will be based on the following criteria:

30% (30 Points) of the Final Grade will be based on timely delivery of Milestones.  Each of the three Milestones counts 10% of the grade (10 points each).  Milestones must be completed individually by each student.  They are NOT a group activity; however, students may and are encouraged to assist each other in providing conceptual or referential help that is not in the form of source code.  Sharing source code on Milestones is strictly forbidden.  Milestones are due as noted below on the class schedule. 

Late Delivery:

Milestones will be docked 1 point (10% of the milestone grade) for each day they are late (each day defined as ending on Midnight beginning with the day after the original due date).  There will be no exception to this penalty.   It is the sole responsibilty of the student to understand the above requirement as regards timely delivery of milestones.  Milestones more than 7 days late will not be accepted and will receive a 0 for credit.  This will drop your grade by a full letter (as each milestone is 10% of your overall grade).  The ONLY exception to this penalty will be a doctor's approved note of severe illness requiring overnight hospitilization, etc.  All late deliveries, regardless of cause, including, but not limited to acts of God, war, riot, embargoes, acts of civil or military authority, terrorism, fire, flood, tsumami, earthquakes, hurricanes, tropical storms or other natural disasters, fiber cuts, strikes, shortages in transportation, facilities, fuel, energy, labor or materials, failure of the telecommunications or information services infrastructure, hacking, SPAM, or any failure of a computer, server or software, including Y2K errors or omissions, the common cold, the flu, asthema, stomach flu, work, family, childcare, golf, vacation, and other life related exceptions and necessities, while unfortunate, will still incur the penalty.  It is assumed that you will have plenty of time to work on each assignment, and that a penalty will have little overall effect on a student's final grade, unless lateness is chronic or other grades are poor, in which case, of course, the penalty will be more cumbersome.  If you are late with a delivery and therefore receive a penalty (which you will) and it's an isolated incident and the rest of your work is excellent, the penalty should be innocuous.  Finally, because of the inherent complexity of the platform configurations and licensing, no incompletes will be granted in this course except for dire reasons (medical, death, etc.) and documentation will be required.  In such a rare case, you will be required to retake the course the following spring.  Work hard.  Turn in your work on time.  You will receive a grade in 11 weeks.

70% of the Final Grade (70 Points) will be based on delivery of the student's Final Project (see below).

Grading is as follows:

Quality of the deliverable is the central determinant.  However, within that, you can follow different technology tracks that will limit the amount of work you have to do (and as a by product limit your grade):

A Track:   The A Track delivers a project that executes flawlessly, and implements Servlets/ASPs using JDBC or ADO .NET/ODBC connectivity with three of the following core technologies:  CORBA, EJB, Message Queues, WebServices.

B Track:   The B Track delivers a project that executes successfully and implements Servlets/ASPs using JDBC or ADO .NET/ODBC connectivity with two of the following core technologies:  CORBA, EJB, Message Queues, WebServices.

It is possible, due to quality of deliverable, that a B Track project could earn an A-range grade (because of outstanding breadth and quality).  Note that it is also possible for an A Track project to earn a B-range grade or below, again, due to substandard quality. JUST BECAUSE YOU OPT FOR THE A TRACK DOES NOT NECESSARILY IMPLY THAT YOU WILL EARN AN A ON THE PROJECT.

Quality is defined to include quality of source code, intelligence of implementation, lack of runtime bugs, additional features, etc.

Final Course Grade:

A:    90 - 100 Points
B:    80 - 89 Points
C:    70 - 79 Points
D:    60 - 69 Points
F:    below 60 Points

NB:  You are expected to know how to read a basic UML Design Model.  Failure on your part to understand the design does not constitute lattitude on our part in evaluating grades. 

Extra credit will be accorded for the following types of activities:

The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor alsoreserves the right to curve grades if he deems it in the best interest of the majority of students.


NB: The Instructor reserves the right to alter the schedule as class progress dictates.

Bales Bales, Oracle JDBC
Brose Brose, Vogel, Duddy, Java Programming with CORBA
Callaway Callaway Inside Servlets
Henning Henning & Vinoski, Advanced CORBA Programming with C++
Roman Roman, Mastering Enterprise JavaOraclens

All powerpoint lectures are located here.  (Login information can be obtained from ~mark/pub/51024/login.info on the cluster)


Lecture Topics Required Reading Schedule 
(all numbers refer 
to chapters) 
Ready Reserve in italics
Lab Activity & Milestones
Class 1

March 31

Introduction & Problem Statement 
Syllabus review 
Project Descriptions
Introduction to Project Options in detail
Introduction to Distributed Objects
Lecture in HTML Format
Online JDBC Tutorial Environment Setup
Lab 1 [Last update: Mar-27]
Assignment1 [Last update: Apr-02]
Class 2

April 7

JDBC and SQL Database Access 
Lecture in PPT Format
Bales, ch. 9,10, 11, 17

Callaway, ch. 16,

Lab2: JDBC Programming
Class 3

April 14

Introduction to the Java Servlet API 
WebServer-Servlet-JDBC Interaction 
Lecture in PPT Format
Callaway, ch 1 - 10 Lab 3 Basic Servlet  Programming 

Milestone 1

Class 4

April 21

Introduction to CORBA 
Interfaces and IDL, 
Native Language Mapping
Lecture in HTML Format
Callaway, ch. 11, 13, 17
Brose, 1 - 4

Basic CORBA Programming 
Lab 4
Class 5

April 28

CORBA continued,  GIOP/IIOP Protocol 
IORs, BOA/POA, DII, Any Types 
Naming and Events Services 
Lecture in PPT Format
Brose 5 - 7, 9 - 10 CORBA Programming 
Lab 5
More Corba IDL examples

Milestone 2

Class 6
May 5
Introduction to EJB 
Session and Entity Oraclens 
MetaData and Deployment Description 
Roman, 1 - 9 Lab 6 Session Oraclens Assignment 4
Class 7
May 12
Advanced Topics in EJBs
Persistence, Transactions, State 
Roman, 10 - 12; 15;  Appendix B Lab 7 Entity Oraclens
Milestone 3
Class 8
May 19
Message Queue Technology:  JMS & IBM MQSeries & Microsoft Message Queue
Point-Point vs. Publish/Subscribe metaphors
Enterprise Application Integration
Workflow Management

Lab 8 Java Messaging Service & EJB Message Oraclens
Class 9
May 26
Introduction to Web Services using Java
Introduction to Microsoft .NET Architecture with C#
  Lab 9 [Last update: May22] Web Services Lab
Class 10
June 2

Graduating students' project demos, 5pm - 9pm. (Schedule)

Graduating students' PROJECTS DUE at 11:59 PM.

Class 11
June 9
Non-graduating students' project demos, 5pm - 9pm. (Schedule)

ALL non-graduating students' PROJECTS DUE at 11:59 pm.

X.     Online Reference and Resources:

General OO Links:

Cetus Links on OO: http://www.objenv.com/cetus/software.html
OOSE Links:http://www.inf.ufsc.br/poo/ine5383/oose.html
General Java Links :
Cetus Links on Java
The Java FAQ
EJB Links:
J2EE Home Page
EJB Home Page
Cetus Links on EJB
Oracle WebLogic Documentation Center
Using the EJB Deployment Wizard
WebLogic EJB Technical FAQ
Java Servlets:
Java Servlet API Home Page
Java Servlet Tutorial
Servlet API
Servlet Central Page on JServ installation and usage
The OMG Home Page
CORBA for Beginners
Cetus Links on CORBA
The Free CORBA Page