Spring 2018 (Section 1, 16246; Section 2, 16247: 3 credits) - 3 credit hours
JMU CS462 - Network Applications Development
HelpPoliciesSolutionsStudy-AidsTools
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.

Copyright 2018