*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 Schedule *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 (mailto:skuehn@cs.uchicago.edu ) Office Hours: Saturdays 1-3pm & By Appointment TA: Job Bogan (job@piquin.uchicago.edu ) (Auction Site Customer/Project Facilitator) Office hours: During Lab Hours & By Appointment Trading Application Customer/Project Facilitator: Scott Johnston (scottj@cme.com ) Assistant TA: Feng Songyan (songyanf@cs.uchicago.edu ) *I. TEXTS AND MATERIALS* *Texts: Required* */Java Programming with Oracle JDBC , Bales, O'Reilly, 2001, ISBN: 059600088X/* */Java 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/* *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/* *_CORBA/IIOP_ :* */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 C/ORBA 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:_* */ 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_:* * *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: 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 *II. PREREQUISITES:* *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/docs/studentmanual/ . 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:* * Actively participate (both in asking and answering questions) in the Reading List. * Show /ingenuity/ and /creativity/ by doing something like using the CORBA naming or event service, or implementing HTTP Tunneling or Servlet Chaining * Activily participate in helping your other classmates with their understanding based on your newly gained experience, as evidenced in lab/ and on the Reading List./ * Solve some /significant/ integration problem or conundrum confronting the class as a whole or some of your fellow classmates. * Implement both Session as well as Entity EJBeans. * Produce a /rich/ Together Control Center UML Design Model of your application (Class, Sequence, Collaboration Diagrams) to accompany the actual implementation in either Java or C# (if using .NET). *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.* *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/ C*lass/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 *Milestone 1 * 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 *Milestone 2 * 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 ** Class 10 May 31 *NO CLASS* *Memorial Day Graduating students projects due* *11:59 PM,* *Monday, May 31* ** OGSA Lab Lab 9 Class 11 June 7 * NO CLASS OR LAB* *Conferences to be scheduled on this day.* *ALL non-graduating student's * *PROJECTS DUE 11:59 PM, June 7th.* *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 EJB FAQ Cetus Links on EJB BEA 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 *CORBA:* The OMG Home Page CORBA for Beginners Cetus Links on CORBA The Free CORBA Page