Syllabus
Description:
This course considers the design and implementation of
network-based applications. It focuses on object-oriented design
and programming techniques at the application layer. It
considers text transport, data transport, object transport,
function/procedure call transport, and class transport.
In lectures we will consider several example applications, but
will focus on the design and implement a "WWW Server" of
increasing sophistication. This "WWW Server" will be used to both
motivate and explore the topics we discuss. You will then use and
expand on and use this "WWW Server", and associated "WWW Clients",
in a sequence of programming assignments.
Textbook:
Readings for this course are primarily from the following books and
The Java Tutorials.
Harold,
E.R.
(2004)
Java Network Programming, O'Reilly Meda, Inc..
(Order from
amazon
, order from
Barnes and Noble
, compare at
bigwords
, compare at
CampusBooks4Less
, order from
Chegg
, or search
eFollett
)
McLaughlin,
B.
and
J. Edelson
(2006)
Java and XML, O'Reilly Media, Inc..
(Order from
amazon
, order from
Barnes and Noble
, compare at
bigwords
, compare at
CampusBooks4Less
, order from
Chegg
, or search
eFollett
)
Newcomer,
E.
(2002)
Understanding Web Services: XML, WSDL, SOAP, and UDDI, Addison Wesley Professional.
(Order from
amazon
, order from
Barnes and Noble
, compare at
bigwords
, compare at
CampusBooks4Less
, order from
Chegg
, or search
eFollett
)
Oaks,
S.
(2001)
Java Security, O'Reilly Media
, Cambridge, MA.
(Order from
amazon
, order from
Barnes and Noble
, compare at
bigwords
, compare at
CampusBooks4Less
, order from
Chegg
, or search
eFollett
)
These books are available from
Safari Books Online.
In addition, there are several readings from other sources (which are
also available on-line).
Part I: Software Design and Construction Background
|
1/8 |
About CS462
|
Review of Java
|
1/10-1/12 |
State Diagrams
,
Sequence/Collaboration Diagrams
and
Deployment Diagrams
|
|
1/17-1/19 |
Design Patterns:
Iterator
,
Observer
,
Command
,
Strategy
,
Singleton
,
Factory
,
Decorator
and
Proxy Pattern
|
|
1/22-1/26 |
Independent Threads
,
Interacting Threads
,
Atomic Variables
and
Coordination without Monitors
|
Tutorial
and
H5
|
1/29-1/31 |
Synchronized Collections
,
Concurrent Collections
and
Thread Pools
|
Tutorial
|
Part II: Input/Output
|
2/2 |
An Introduction to Streams
,
Raw I/O
and
Character I/O
|
H 4
|
2/5 |
Buffers
,
Buffers in Java
and
Channels
|
NIO 2
and
NIO 3
|
Part III: Communications and Networking Background
|
2/7 |
A Layered View of Networks
and
Communication Protocols
|
H 2.1-2.2
|
2/9-2/12 |
The Internet Protocol (IP)
,
User Datagram Protocol (UDP)
,
Transmission Control Protocol (TCP)
,
Stream Control Transmission Protocol (SCTP)
,
The Domain Name System (DNS)
and
Hypertext Transfer Protocol (HTTP)
|
H 2.3-2.6
and
H 3
|
2/14 |
Working with Network Interfaces
|
Tutorial
|
2/16 |
Naming and Directory Services:
Overview
,
Using DNS
and
Using JNDI
|
Tutorial
|
2/19 |
Exam 1
|
|
Part IV: Text Transport
|
2/21-2/23 |
Text Transport Using:
UDP
,
TCP
and
Text Transport Using HTTP
|
H 13
,
H 9
,
H 10
and
H 7
|
2/26 |
SCTP
,
Cookies
and
Proxys
|
Tutorial
|
Part V: Data Transport
|
2/28 |
Data Streams:
Basics
,
Filters
and
Customization
|
H 4
|
3/2 |
An Example:
An HTTP Server
|
|
3/12 |
An Example Continued:
An Improved HTTP Server
|
|
3/14 |
Describing Hierarchical Data:
XML
|
RFC
|
3/16-3/19 |
Processing Hierarchical Data:
XSLT
,
DOM
and
JAXP
|
RFC
,
ME 3
,
ME 5
and
ME 7
|
3/21 |
Constraining Hierarchical Data:
XML DTDs
and
XML Schema
|
ME 1
and
ME 2
|
3/23 |
Access Control
and
An HTTP Server with Access Control
|
|
3/26 |
Exam 2
|
|
Part VI: Object Transport
|
3/28-3/30 |
Serialization:
Introduction
,
Java Basics
and
Object Transport
|
|
4/2 |
JavaScript Object Notation (JSON)
and
JSON in Java
|
|
4/4 |
Reflection
,
JAXB
and
An Aside: Reflection for Servlets
|
Tutorial
and
Tutorial
|
Part VII: Transporting Function/Procedure/Method Calls
|
4/6-4/9 |
Remote Method Invocation:
An Introduction to RMI
and
Java RMI
|
H 18
|
4/11 |
Simple Object Access Protocol (SOAP)
|
N 4
|
Part VIII: Class Transport
|
4/13 |
Class Loaders
,
A Remote Class Loader
and
The Java Security Architecture
|
O 3
and
O 6
|
4/16 |
Security:
Specification
and
Enforcement
|
O 5
and
O 4
|
Part IX: Simultaneous Class and Object Transport
|
4/18 |
Mobile Agents
|
|
4/20 |
Object Security
|
|
Attendance at lectures is not mandatory but is strongly encouraged.
You are expected to come to class prepared to ask and
answer questions. Hence,
you should complete the readings on a topic before it
is discussed in lecture.
Grading:
Final grades will be based on your performance on:
2
,
1
and
several
Programming Assignments: 9
programming assignments will be
assigned during the semester. Note that their due dates are subject
to change.
Programming Assignment 1
; Due: 1/17
(Warming Up)
Programming Assignment 2
; Due: 1/26
(OOP, Observer Pattern)
Programming Assignment 3
; Due: 2/7
(Threads, Command Pattern)
Programming Assignment 4
; Due: 2/16
(Threads, Input/Output)
Programming Assignment 5 ; Due: 3/14
(Text Transport)
Programming Assignment 6 ; Due: 3/21
(Simple Data Transport)
Programming Assignment 7 ; Due: 3/28
(Hierarchical Data Transport)
Programming Assignment 8 ; Due: 4/18
(Object and Method Transport [RMI])
Programming Assignment 9 ; Due: 4/25
(Object and Method Transport [SOAP])
Make sure you read and understand all of the
policies
related to programming assignments.
Office Hours:
You may meet with Prof. Bernstein during his
scheduled office hours
or you may schedule an appointment with him.