Fall 2020 (Section 1, 85880) - 3 credit hours
JMU CS462 - Network Applications Development
Help Policies Solutions Study-Aids Tools
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 )

Hitchens, R. (2009) Java NIO, 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 through the JMU Library from O'Reilly for Higher Education. In addition, there are several readings from other sources (which are also available on-line).
Outline: This course is organized as follows (though specific topics and dates may change).

Lectures in this course will be delivered on-line during scheduled meeting times. Students may participate in lectures synchronously, or watch a recording asynchronously (at any time after it has been delivered).

Some course meeting times will be devoted to face-to-face discussion/question-and-answer sessions. For these sessions, students have been divided into two groups/cohorts, purple and gold. Students may attend these sessions only with their assigned cohort. When the other cohort is meeting, you may use the time as you see fit.

Exams will be delivered on-line during scheduled exam times.

Readings are listed in the right-most column.

Part I: Software Design and Construction Background
8/26 About CS462 Review of Java
8/28 About CS462 Review of Java
8/31 Wildcards in Parameterized Classes/Generics
9/2 Design Patterns: Iterator , Observer , Strategy and Composite
9/4 Design Patterns: Singleton , Factory , Decorator and Proxy
9/7-9/9 Independent Threads , Interacting Threads and Atomic Variables Tutorial and H 5
9/11 Coordination without Monitors Tutorial
9/14 Synchronized Collections , Concurrent Collections and Thread Pools Tutorial
9/16 Question and Answer Session
9/18 Exam 1
Part II: Input/Output
9/21 An Introduction to Streams , Raw I/O and Character I/O H 4
9/23 Buffers , Buffers in Java and Channels NIO 2 and NIO 3
Part III: Communications and Networking Background
9/25 A Layered View of Networks and Communication Protocols H 2.1-2.2
9/28 The Internet Protocol (IP) , User Datagram Protocol (UDP) , Transmission Control Protocol (TCP) , The Domain Name System (DNS) and Hypertext Transfer Protocol (HTTP) H 2.3-2.6 and H 3
9/30 Discussion of PA4
Part IV: Transport Basics (and Text Transport)
10/2 Using: Network Interfaces , Using DNS , UDP , TCP , HTTP , Cookies and Proxies Tutorial , H 13 , H 9 , H 10 , H 7 and Tutorial
10/5 Customization: Stream Oriented and Packet Oriented H 16 and H 17
10/7 Discussion of PA5
10/9 Customization: Protocol Handlers and Content Handlers
10/12 Extra Office Hours
10/14 Discussion of PA6 and Question and Answer Session
10/16 Exam 2
Part V: Data Transport
10/19 Data Streams: Basics , Filters , Customization and An Example: An HTTP Server H 4
10/21 An Example Continued: An Improved HTTP Server
10/23 Describing Hierarchical Data: XML and JSON XML RFC and JSON Standard
10/26 Processing Hierarchical Data: XSLT and DOM RFC , ME 3 , ME 5 , ME 7 and JSR353
10/28 Processing Hierarchical Data: JAXP and JSON-P RFC and JSR353
10/30 Constraining Hierarchical Data: XML DTDs , XML Schema and JSON Schema ME 1 and ME 2
Part VI: Object Transport
11/2 Serialization: Introduction , Using JSON/XML Naively and Java Basics
11/4 Object Transport , Reflection , Using Reflection for Servlets (An Aside) and Using Reflection for XML Serialization (JAXB) Tutorial and Tutorial
Part VII: Transporting Function/Procedure/Method Calls
11/6 Remote Method Invocation: An Introduction to RMI and Java RMI H 18
11/9 Simple Object Access Protocol (SOAP) N 4
11/11 Question and Answer Session
11/13 Exam 3
Part VIII: Class Transport
11/16 Class Loaders , A Remote Class Loader and The Java Security Architecture O 3 and O 6
Part IX: Simultaneous Class and Object Transport
11/18 Mobile Agents
11/20 Lecture Cancelled
Part X: Final Project
11/30-12/9 Team Meetings
12/14 Presentations (1:00-3:00)

Attendance at discussion/question-and-answer sessions is not mandatory. You should complete the readings on a topic before it is covered for the first time.

Grading: Final grades will be based on your performance on: 3 in-class exams (25% each) , 1 final project (10% total) and several programming assignments (15% total).
Programming Assignments: 10 programming assignments will be assigned during the semester. Note that their due dates are subject to change.
Programming Assignment 1 ; Due: 8/31 11:00PM(Warming Up)
Programming Assignment 2 ; Due: 9/7 11:00PM(Parameterized Classes)
Programming Assignment 3 ; Due: 9/14 11:00PM(Observer Pattern)
Programming Assignment 4 ; Due: 9/28 11:00PM(Threads I)
Programming Assignment 5 ; Due: 10/5 11:00PM(Threads II)
Programming Assignment 6 ; Due: 10/12 11:00PM(Text Transport)
Programming Assignment 7 ; Due: 10/26 11:00PM(Simple Data Transport)
Programming Assignment 8 ; Due: 11/2 11:00PM(Hierarchical Data Transport)
Programming Assignment 9 ; Due: 11/11 11:00PM(Reflection)
Programming Assignment 10 ; Due: 11/20 11:00PM(Extended to 11/25 11:00PM)(Object and Method Transport [RMI and SOAP])

Make sure you read and understand all of the policies related to programming assignments. Programming assignments may not be submitted after the due date/time (in other words, you will receive a grade of 0 on any programming assignment that is not submitted on time).

Final Project: Each student must complete a (team) project. All project proposals are due on 11/16 11:00PM. All project materials are due on the day of the presentation . A Team Evaluation Form (which will be made available to you just before the project ends) must be completed and submitted by each member of the Team individually by 12/16. Make sure you read and understand all of the policies related to projects.
Office Hours: You may meet (either face-to-face or virtually, depending on the situation and schedule) with Prof. Bernstein during his scheduled office hours or you may schedule an appointment with him.

Copyright 2020