CSPP 51024 Home Page
Practicum in Distributed Object Technologies
Spring, 2007
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: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: Leandro Cortés < leandro (at) cs >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:
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, 0471236403Enterprise JavaBeans:
Enterprise JavaBeans , Richard Monson-Haefel, O'Reilly, 1999, ISBN: 01565926056SQL/ORACLE Database:Enterprise JavaBeans , Tom Valesky, Addison Wesley, 1999, ISBN: 0201604469
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
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 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.
III. COURSE DESCRIPTION
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 9i, BEA WebLogic 8.1, Apache/Tomcat, Java JMS, etc.), along with database design and implementation in Oracle 9i.
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: Arjuna Ariathurai)
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
BEA WebLogic EJB
Server 8.1
Apache 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 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.
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.
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:
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
|
Lecture Topics | Required Reading
Schedule (all numbers refer to chapters) Ready Reserve in italics |
Lab Activity & Milestones |
Class 1
March 26 |
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 2 |
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 9 |
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 16 |
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 23 |
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
April 30 |
Introduction
to EJB Session and Entity Beans MetaData and Deployment Description Slides |
Roman, 1 - 9 | Lab 6 Session Beans Assignment 4 |
Class 7
May 7 |
Advanced
Topics in EJBs Persistence, Transactions, State Slides |
Roman, 10 - 12; 15; Appendix B | Lab
7 Entity Beans Milestone 3 |
Class 8
May 14 |
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 Beans |
|
Class 9 May 21 |
Introduction
to Web Services using Java SOAP Introduction to Microsoft .NET Architecture with C# Slides |
Lab 9 [Last update: May22] Web Services Lab | |
Class 10 May 28 |
NO CLASS
|
||
Class 11 June 4 |
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