Graduate Special Topics in Computer Science

NOTE: for descriptions of standard graduate computer science courses, see Graduate Course Descriptions.

G22.3033-001 XML for Java Developers

The eXtensible Markup Language (XML) is a platform-independent data representation, which may be viewed as a simplified version of SGML designed for the Web. Java Technology and XML are complementary: XML provides a family of technologies that enable portable data, and Java technology enables portable, maintainable code. Together, XML and Java technologies provide comprehensive support for data representation and exchange, and promote a new generation of Presentation Oriented Publishing (POP), Message Oriented Middleware (MOM), and Application Configuration services for the enterprise. While XML-based POP services are being layered on top of J2EE’s Client Container, Java Server Faces, and JSP/Servlet component models, XML-based MOM services provide uniform access to application server and  Enterprise Extension and Integration technologies including Business Process Management (BPM), Business to Business Integration (B2Bi), Enterprise Application Integration (EAI), Legacy Extension (LE), and Enterprise Information Integration (EII). As they become core components of the upcoming Web Services platforms (i.e., Sun’s Open Net Environment, Oracle’s Dynamic Services, IBM’s WebSphere platform, and Microsoft .NET), XML-based services provide a foundation for modern component-based and device-independent eBusiness via wire/exchange format protocols (e.g., SOAP, ebXML, BizTalk services, WS-Security), description protocols (e.g., XML Schemas, WSDL, Process Flow Orchestration, BPEL4WS), discovery protocols (e.g., WS-Inspection, UDDI), and presentation/integration facilities.

  This course is designed for programmers already familiar with the Java language and class libraries. All instruction and development will be based on the J2SE 1.4.2 (or 1.5.0), and the latest practical W3C, and WS-I standards. Rather than solely focusing the presentation on the various XML features and technologies, the course illustrates how the use of such XML technologies and applications meshes with the modern approach at building XML-based comprehensive business applications. The course provides an in-depth coverage of XML-based Java-enabled functionality. Students will learn how to specify, and manipulate XML data from Java programs using existing implementations of the current W3C specifications for the Domain Object Model (DOM) and Simple API for XML SAX). Through a set of assignments/projects, students will implement the various components of a sample XML web-enabled and Java-based enterprise application. Students will gain practical exposure to the various XML commercial toolsets being developed by various third-party vendors including BEA, IBM, Microsoft, Sun, and WebMethods.


Students enrolling in this class are expected to have taken G22.1170 (Fundamental algorithms), Programming for the World Wide Web, and their prerequisites or to have equivalent knowledge. Students are also expected to have taken a Java intermediate course, and to have basic knowledge of the Core JFC classes, and the ability to program in Java.

G22.3033-002 Scripting Languages

PHP, Perl, JavaScript, VisualBasic --- these are often-requested skills for employment, but most of us do not have the time to find out what they are all about. In this course, you will learn how to use scripting languages for rapid prototyping, web programming, data processing, and application extension. Besides covering traditional programming languages concepts as they apply to scripting (e.g., dynamic typing and scoping), this course will look at new concepts rarely found in traditional languages (e.g., string interpolation, hashes, and polylingual code). Through a series of small projects, you will use different languages to achieve programming tasks that highlight the strengths and weaknesses of scripting. For example, we will investigate AJAX and security concerns for dynamic web pages. As a side effect, you will practice teaching yourself new languages.

G22.3033-003 Open Source Programming

In this course a small group of students work on a single open-source project for the duration of a semester. The group meets every week to discuss the previous week's progress, iterate over potential designs, and to learn about technologies and tools that are particularly relevant to the project or to the team's development process. The course instructor serves as the group's technical lead, providing guidance and assistance where necessary to help ensure the success of the project.

This course is well-suited for students interested in:

- making substantial contributions to an open-source project

- learning to effectively work with others on technical problems

- improving development skills by writing lots of code, designing software components, and relentlessly (and constructively) offering feedback on other students' code.

- developing a relationship with open-source developers outside of nyu

- pursuing a career in software engineering


Permission from the instructor. Students must be able to write Java code of moderate complexity (e.g., have written many hundred lines of code, comfortable with things like Java Collections, synchronization, generics.)

top | contact