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.
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
)
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.
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).
Copyright 2020