CSPP 51024 Home Page
Practicum in Distributed Object Technologies
Spring, 2004
To join the course mailing list, go to: http://mailman.cs.uchicago.edu/mailman/listinfo/cspp51024
Teaching staff:
Instructor:
Mark Shacklette
Office Hours: Monday 3:30 pm - 5:30 pm Ryerson 175A
email: mark@cs.uchicago.edu (read hourly or so)
mshack@post.harvard.edu (read daily or so)
TAs/ Graders:
Lead TA: Scott Kuehn (ta-51024@cs.uchicago.edu ) Trading Application Customer/Project
Facilitator: Scott Johnston (scottj@cme.com
)
Assistant TA: Feng Songyan (Tiger). TA Hours: Lab hours & Tuesday 2:30 - 4:30pm (Hinds B022).
(songyanf@cs.uchicago.edu)
I. TEXTS AND MATERIALS
Texts: Required
Java Programming with Oracle JDBC , Bales, O'Reilly, 2001, ISBN: 059600088XTexts: Highly RecommendedJava Programming with CORBA, Brose, et. al., Wiley, 2001, ISBN: 0471376817
Inside Servlets, 2nd. Ed., Callaway, Addison-Wesley, 2001, ISBN: 0201709066
Mastering Enterprise JavaBeans, Second Edition, Roman et. al., Wiley, 2001, ISBN: 0471417114
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: 1565928709Texts: Recommended
CORBA/IIOP :II. PREREQUISITES:The Official VisiBroker for Java Handbook , McCaffery & Scott, Sams, 1999, ISBN: 0672314517.NET Architecture: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: 0201379252The 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
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:
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: 01565926056SQL/ORACLE Database:Enterprise JavaBeans , Tom Valesky, Addison Wesley, 1999, ISBN: 0201604469
NOTE: This class has available resources from Embarcadero Technologies, in the form of two
helpful data tools: ER/Studio Data Modeling Tool and DBArtisan Database Management Tool. Students
registered in the class are entitled to a 1 year strictly academic license. Students may download
these tools from Embarcadero directly (a 15 day temporary license is included), and then may
obtain an Academic License by contacting Matei for instructions.The Practical SQL Handbook, Bowman et. Al. Addison Wesley, 2002, ISBN: 0201447878Linux and UNIX :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
Oracle SQL Interactive Workbook (2nd Edition), Alice Rischert. Prentice Hall, 2003. ISBN: 0131002775
Java Programming on Linux, Nathan Meyers, Waite, 2000, ISBN: 1571691669Java Language Programming :Learning the Unix Operating System , Peek, et. al.,, O'Reilly, 1998, ISBN: 1565923901
A Practical Guide to Linux, Sobell, Addison Wesley, 1997, ISBN: 0201895498
Beginning Java 2 , Horton, Wrox Press, 1999, ISBN: 1861002238Unified Modeling Language and Design :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
The Unified Modeling Language Reference Manual, James Rumbaugh et. al., Addison Wesley, 1991ISBN: 020130998XUML 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 professor . The instructor reserve 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.
III. COURSE DESCRIPTION
This course is a hands-on laboratory in distributed programming focused 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 (Borland's VisiBroker, Oracle 9i, BEA WebLogic, Apache/Tomcat, Java JMS & IBM MQSeries)
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. 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: Auction Site (Customer/Project Facilitator: Job Bogan)
A simple auction site: should allow users to register/log-in, list items on sale, bid on items, list bids on an item, list their previous activity, maybe get notified if they win.
More detailed information on the Auction 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.
Final Project Deliverable: Online Trading System (Customer/Project Facilitator: Scott Johnston)
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.
Tools used and where to get them (if you wish to do your work at home***):
Sun Java2 SDK SE
(Standard Edition) 1.3
Sun Java2
SDK EE (Enterprise Edition) 1.3
BEA WebLogic EJB Server
7.0
Jakarta Tomcat (open-source JSP and servlet implementation)
MICO CORBA ORB (C++)
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 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.
IV. LEARNING OBJECTIVES
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 Beans, Message Queue and WebServices interaction.
V. ACADEMIC INTEGRITY
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, available online at http://www.uchicago.edu/student/manual/academic_honesty.html .
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 snippits showing, for example, how one connects to the database with JDBC, how one binds to a CORBA object, Makefiles, etc., is allowed.
VI. METHOD OF INSTRUCTION
Methods include lecture and lab supervision and mentoring.
VII. OTHER COURSE INFORMATION
Attendance: You may find attendance to either lectures or labs helpful, but it is not required.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
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. Milestones will be docked 2 points (10%) 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 5 days late will not be accepted. Generally, 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.) with documentation.
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 two 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 one 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:
IX. COURSE SCHEDULE
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 JavaBeans |
Class/Date
Milestone Dates in Blue |
Lecture Topics | Required Reading Schedule
(all numbers refer to chapters) Ready Reserve in italics |
Lab Activity & Milestones |
Class 1
March 29 |
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 Assignment1 |
Class 2
April 5 |
JDBC and SQL Database Access
Lecture in PPT Format |
Bales, ch. 9,10, 11, 17
Callaway, ch. 16, |
Lab2: JDBC Programming
Assignment2 |
Class 3
April 12 |
Introduction to the Java
Servlet API WebServer-Servlet-JDBC Interaction Lecture in PPT Format |
Callaway, ch 1 - 10 | Lab 3 Basic Servlet Programming |
Class 4
April 19 |
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 26 |
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 |
Class 6
May 3 |
Introduction
to EJB Session and Entity Beans MetaData and Deployment Description Slides |
Roman, 1 - 9 | Lab 6 Session Beans Assignment 4 |
Class 7
May 9 |
Advanced Topics
in Distributed Objects Persistence, Transactions, State Slides |
Roman, 10 - 12; 15; Appendix B | Lab 7
Entity Beans Milestone 3 |
Class 8
May 17 |
Introduction
to Web Services using Java SOAP Introduction to Microsoft .NET Architecture with C# Slides |
Lab 8 Web Services Lab | |
Class 9 May 24 |
Message Queue Technology:
JMS & IBM MQSeries & Microsoft Message Queue Point-Point vs. Publish/Subscribe metaphors Enterprise Application Integration Workflow Management |
Lab 9 Message Lab | |
Class 10 May 31 |
NO CLASS
|
||
Class 11 June 7 |
NO CLASS OR LAB Conferences to be scheduled on this day. ALL non-graduating student's
|
X. Online Reference and Resources:
General OO Links:
Cetus Links on OO: http://www.objenv.com/cetus/software.htmlGeneral Java Links :
OOSE Links:http://www.inf.ufsc.br/poo/ine5383/oose.html
Cetus Links on JavaEJB Links:
The Java FAQ
J2EE Home PageJava Servlets:
EJB Home Page
EJB FAQ
Cetus Links on EJB
BEA WebLogic Documentation Center
Using the EJB Deployment Wizard
WebLogic EJB Technical FAQ
Java Servlet API Home PageCORBA:
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