Home
Syllabus
v. 1.0
This document is also available as a PDF. To view PDFs, you must have installed on your computer a program called Adobe Reader; to download the installer for this program, visit the Software page.
Instructor

David J. Malan
malan@post.harvard.edu
+1-617-523-0925
Synopsis

This course introduces XML as a key enabling technology in Java-based applications. Students learn the fundamentals of XML and its derivatives, including DTD, SVG, XML Schema, XPath, XQuery, XSL-FO, and XSLT. Students also gain experience with programmatic interfaces to XML like SAX and DOM, standard APIs like JAXP and TrAX, and industry-standard software like Ant, Tomcat, Xerces, and Xalan. The course acquaints students with J2EE, including JavaServer Pages (JSP) and Java Servlet, and also explores HTTP, SOAP, web services, and WSDL. The course's projects focus on the implementation and deployment of these technologies.
Prerequisites

Comfort with Java and HTML or XHTML is assumed.
Expectations

You are expected to attend or watch all lectures, to complete four assigned projects, and to design and implement a final project.
Grades

Your final grade will be based on your performance on the course's projects. Each of the course's four assigned projects will be equally weighted; the final project will bear 25% more weight than will any assigned project. Remarkable effort will not go unnoticed.

nice.fas.harvard.edu

If you haven't one already, this course requires that you obtain an FAS (Faculty of Arts and Sciences) Computer Account by visiting the URL below and following the on-screen instructions.


This account will allow you to access via SFTP and SSH nice.fas.harvard.edu, FAS's New Linux Computing Environment, use of which is required by the course's projects. Moreover, this account will provide you with access to FAS's computer facilities as well as with an email address of the form username@fas.harvard.edu, where username is your FAS username. SFTP and SSH clients are available for various platforms via the course's website.

Website

The address of this course's website appears below.


Visit this site to read course-wide announcements, access your grades, watch digital videos of lectures, view the listserv's archives, download handouts and software, and follow links to other resources.

If you are taking this course via the Internet, this website will be your window into the course's classrooms. Everything that you will need to succeed in this course will be available for you there.
Staff

To pose a question or comment to the staff, simply email the address below.

Listserv

To facilitate discussion among students outside of class, this course hosts a listserv not only for announcements but also for student-initiated comments, discussions, and questions. To subscribe to this listserv or browse archives of messages posted, follow the appropriate link on the website. To post a message to the list, once subscribed, simply email the address below.


It is expected that students will exercise discretion in posts regarding the course's projects, per this document's discussion of academic honesty.
Lectures

Lectures will take place in Maxwell Dworkin G135 on Mondays from 7:35 P.M. ET until 9:35 P.M. ET, with a few exceptions.

Each lecture will be recorded, digitized, and made available within days of its delivery via podcast (for download to iTunes and iPods) and via the course's website in Flash, MP3, RealAudio, RealVideo, and QuickTime formats. Once posted, these recordings will remain available until semester's end. Although the recordings are intended to be used by students taking the course via the Internet, students taking the course on campus are welcome to watch or listen to the recordings in the event that their attendance at one or more lectures is not possible. All students are welcome to watch or listen to the recordings for the purpose of reviewing the content of particular lectures.

These recordings are best downloaded or played via a high-speed (e.g., cable or DSL) connection to the Internet. Dial-up connections, though possible (especially for audio-only recordings), are not ideal.

A schedule of lectures appears below; it is expected that you supplement your preparation for or review of each lecture with self-assigned readings relevant to that lecture's content from one or more of the course's recommended texts or online resources.

Lecture 1: Introduction
Monday, 17 September 2007

Lecture 2: XML 1.1 and SAX 2.0.2
Monday, 24 September 2007

Lecture 3: DOM Level 3
Monday, 1 October 2007

Lecture 4: XPath 1.0 (and 2.0) and XSLT 1.0 (and 2.0)
Monday, 15 October 2007

Lecture 5: XPath 1.0 (and 2.0) and XSLT 1.0 (and 2.0), Continued
Monday, 22 October 2007

Lecture 6:
Namespaces in XML 1.1 (Second Edition), SVG 1.1, and XSL (XSL-FO) 1.1

Monday, 29 October 2007

Lecture 7: HTTP 1.1, JavaServer Pages 2.1, and Java Servlet 2.5
Monday, 5 November 2007

Lecture 8: XQuery 1.0 and DTD
Monday, 19 November 2007

Lecture 9: XML Schema (Second Edition)
Monday, 26 November 2007

Lecture 10: XML Schema (Second Edition), Continued
Monday, 3 December 2007

Lecture 11: Web Services, SOAP 1.2, and WSDL 1.1
Monday, 10 December 2007

Lecture 12: Ajax
Monday, 17 December 2007

Lecture 13: Conclusion
Monday, 7 January 2008
Projects

In addition to a final project, four projects will be assigned during the term. Each is due via electronic submission on nice.fas.harvard.edu by a specified deadline. Extensions on projects will not be granted, except in cases of emergency. Technical difficulties will not constitute emergencies. Work submitted late without extension will penalized as follows: projects submitted up to 24 hours late will incur a penalty of 5%; projects submitted up to 48 hours late will incur a penalty of 10%; projects submitted up to 72 hours late will incur a penalty of 25%; projects submitted up to 96 hours late will incur a penalty of 50%; projects submitted more than 96 hours late will incur a penalty of 100%. Lateness of electronic submissions will be determined down to the minute by those submissions' timestamps on nice.fas.harvard.edu.

Projects will be graded not only on their correctness but on the quality of their design and style.

A schedule of projects follows.

Project 1
My First XML Parser

Overview: An opportunity for hands-on experience with the SAX and DOM APIs, this project will challenge you to implement a simplified XML parser, the foundation of which will be developed in lecture. The project will also allow you to employ an industry-standard XML parser to manipulate and transform XML input.

Distributed: Monday, 17 September 2007, 7:35 P.M. ET
Due: Monday, 15 October 2007, 2:35 P.M. ET
Project 2
XTube

Overview: Not only will this project will afford you a chance to develop skills with SVG, XPath, and XSLT, it will also invite you to explore London's Underground!

Distributed: Monday, 15 October 2007, 7:35 P.M. ET
Due: Thursday, 15 November 2007, 2:35 P.M. ET
Project 3
Wahoo!

Overview: The challenge of this project will be to implement a web-based portal (called, cough cough, Wahoo!) that aggregates data from a variety of sources. Not only will your application ultimately retrieve newsfeeds as XML streams from an external source, it will also support customizable display of this information and authentication of users.

Distributed: Monday, 5 November 2007, 7:35 P.M. ET
Due: Monday, 3 December 2007, 2:35 P.M. ET
Project 4
Scamazon.com

Overview: Upon completion, your project will be the place (not) to shop. Visitors will be able to browse your project's dynamically generated aisles, add items to your project's shopping cart, and then check out, their order (never to be) fulfilled by your project's fulfillment partner, a web service!

Distributed: Monday, 19 November 2007, 7:35 P.M. ET
Due: Thursday, 20 December 2007, 2:35 P.M. ET
These projects' specifications will be available on the website per the dates above.
Final Project

Perhaps the most gratifying aspect of this course will be its final project. The final project will be your opportunity to take your knowledge of XML out for a spin and develop an application of your own.

So long as your project draws upon this course's lessons, along with one or more XML-based technologies (however mature), the nature of your project is entirely up to you, albeit subject to the staff's approval. It is not necessary that your project utilize Java.

Inasmuch as software development is rarely a one-person effort, you will be allowed an opportunity to collaborate with one or two fellow students for this final project. Needless to say, it is expected that every student in any such group will contribute equally to the design and implementation of that group's project. Moreover, it is expected that the scope of a two- or three-person group's project will be, respectively, twice or thrice that of a typical one-person project. A one-person project, mind you, should entail time and effort equivalent to or (more likely) greater than that required by one of this course's other projects.

In the interests of promoting early thought, a pre-proposal is due by 2:35 P.M. ET on Thursday, 22 November 2007. This pre-proposal is your opportunity to bounce ideas off of fellow classmates, to hear a variety of other ideas, to solicit one or two possible collaborators, and, ultimately, to share in a creative process with others.

A proposal detailing your actual choice of endeavors is due by 2:35 P.M. ET on Thursday, 13 December 2007. The staff will then either approve your proposal or require modifications on your part for subsequent approval. Your proposal, even if approved, is not binding; you may alter your plan at any point, provided you obtain the staff's approval for any modifications.

A status report for your final project will be due by 2:35 P.M. ET on Monday, 7 January 2008.

Implementation and documentation of your final project will be due by 2:35 P.M. ET on Thursday, 17 January 2008.

Your final project will be graded on the following bases: timely submission of an adequate pre-proposal, the thoroughness of your proposal, timely submission of an adequate status report, the quality of your documentation, the logic of your design, the correctness and elegance of your code and configuration, and the extent of your application's functionality. In evaluating your submission on each of these bases, the staff will take into account the degree to which you have applied this course's lessons.

Extensions on this final project will not be granted, except in cases of emergency. Technical difficulties will not constitute emergencies. Work submitted late without extension will penalized as follows: projects submitted up to 24 hours late will incur a penalty of 5%; projects submitted up to 48 hours late will incur a penalty of 10%; projects submitted up to 72 hours late will incur a penalty of 25%; projects submitted up to 96 hours late will incur a penalty of 50%; projects submitted more than 96 hours late will incur a penalty of 100%. Lateness of electronic submissions will be determined down to the minute by those submissions' timestamps on nice.fas.harvard.edu.

This final project's specification is already available on the website.
Exams

This course will have neither a midterm nor a final exam.
Books

No text is required by this course. However, it is expected that you supplement your preparation for or review of each lecture with self-assigned readings relevant to that lecture's content from one or more of the following texts. Any of these texts should prove a valuable reference for projects both for and beyond this course.

Each of these texts is available for purchase at such sites as Amazon.com. And, as per this document's discussion of Grossman Library, all are on reserve at said library; you may find it helpful to peruse each there before ordering any online.

Core Servlets and JavaServer Pages, Vol. 1: Core Technologies, Second Edition
Marty Hall and Larry Brown
Prentice Hall, Inc., 2003
ISBN 0-13-009229-0

Essential XML Quick Reference
Aaron Skonnard and Martin Gudgin
Addison-Wesley, 2001
ISBN 0-201-74095-8

XML Pocket Consultant
William R. Stanek
Microsoft Press, 2002
ISBN 0-7356-1183-1

XSLT: Programmer's Reference, Second Edition
Michael H. Kay
Wiley Publishing, Inc., 2003
ISBN 0-7645-4381-4

Realize that free alternatives to these texts can be found among the course's online resources.
Grossman Library

Grossman Library, located in Sever Hall 311, is a reserve-reading and study library open to all Extension School students. Each of this course's recommended texts have be placed on reserve in this library for you to read within the comfort of the library; books may not be checked out.

Grossman Library is open Monday, 17 September 2007, through Saturday, 19 January 2008, according to the following schedule.

Monday through Thursday12:00 P.M. ET - 10:00 P.M. ET
Friday12:00 P.M. ET - 6:00 P.M. ET
Saturday10:00 A.M. ET - 6:00 P.M. ET
Sunday12:00 P.M. ET - 6:00 P.M. ET

Grossman Library is closed on University holidays. The library's phone number is (617) 495-4163.
Software

It is not necessary to purchase any software for this course.

All software required by the course's projects is available for use on nice.fas.harvard.edu as well as for download via the website.

Most of the software taught and used by this course is available not only for Linux but also for Mac OS, Windows, and UNIX in some form. However, while you are welcome to work on projects on any system, recall that projects ultimately must compile and execute on nice.fas.harvard.edu for evaluation.
Academic Honesty

With the exception of the final project, on which some collaboration is allowed, all work that you do toward fulfillment of this course's expectations must be your own. Viewing or copying another individual's work (even if published in a world-accessible directory) or lifting material from a book, magazine, website, or other source—even in part—and presenting said matter as your own constitutes academic dishonesty, as does showing or giving your work, even in part, to another student.

Similarly is dual submission academic dishonesty: you may not submit the same or similar work both to this class and to another. Moreover, submission of any work that you intend to use outside of the course (e.g., at work) must be approved by the staff.

All forms of cheating will be dealt with harshly.

You are welcome to discuss the course's material with others in order to better understand it. You are also welcome to discuss projects' setups with others in order to resolve technical difficulties. But you may not discuss projects' content with other students beyond superficial details. If in doubt as to the appropriateness of some discussion, contact the staff.
Inclement Weather

In the event of inclement weather, you may call the Extension School's general information line at +1-617-495-4024 or the Harvard University Newsline at +1-617-496-6397 to find out whether a lecture or section has been cancelled.

Alternatively, you may visit the website or the address below.


Announcements will also be broadcast on local radio stations WKRO-AM (680 kHz), WBZ-AM (1030 kHz), WBUR-FM (90.9 MHz), and WCRB-FM (102.5 MHz) as well as on local television stations WBZ (channel 4), WCVB (channel 5), and WHDH (channel 7).

You are advised to consult more than one of these sources, lest one or more not be current.
Noncredit

If you are not taking this course for credit, you are not required to submit any work. However, all of the work in this course is designed to facilitate your comprehension and retention of the course's material. Consequently, you are encouraged to complete on time as much of the work as possible. In return, you will receive feedback on any work that you do submit.
Brownie Points

Given the constant evolution and emergence of XML-based technologies, maintaining links to the latest recommendations, software, and resources is a non-trivial task. Brownie points (and possibly brownies) will be awarded to students who keep the staff apprised by email of the latest developments in the realms of XML, Java, Java Servlet, and JSP.
 
Copyright © 2008, David J. Malan. Some rights reserved under Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States. Computer Science E-259's podcast is generously hosted by Switchpod.com.