Course Outline: Review of Object Oriented Concept - Object Data, Object Behaviors, Class, Attributes, Methods, Encapsulation and Data Hiding: Interfaces and Implementations, Inheritance: Super classes and Sub classes, Abstraction and Is-A relationship, Polymorphism, Compositions: Abstractions and Has-A Relationship; Mastering Composition and Building Objects – Representing Composition with UML, Composition Relationships, Building in Phases, Types of Composition: Aggregation and Associations, Avoiding Dependencies and Cardinality; Details of Creating Object Models with UML – Class Diagram, Attributes and Methods, Access Designations, Inheritance, Interfaces, Composition: Aggregations and Associations, and Cardinality; Objects and Portable Data - Portable Data, The Extensible Markup Language (XML), XML Versus HTML, XML and Object-Oriented Languages, Validating the Document with the Document Type Definition (DTD), Integrating the DTD into the XML Document, and Using Cascading Style Sheets; Persistence objects – Basics of Persistence, Saving to a Flat File, Using XML in the Serialization Process and Writing to a Relational Database; Objects and the Internet – Object-Based Scripting Languages, Objects in a Web Page and Distributed Objects and the Enterprise; Objects and Client/Server Applications – Client/Server Approaches, Proprietary Approaches and Nonproprietary Approaches; Object Oriented Design Principles - Single Responsibility Principle, Open/Close Principle, Liskov Substitution Principal, Interface Segregation Principle and Dependency Inversion Principle; Introduction to Component Based Design, Design Patterns and Code Smells. Programming lessons - Object Oriented Programming (OOP) - The students will implement each of the object oriented concepts which are discussed in the class. Java features to support practical OOP – Generics: Wildcard, Generic class definitions, Generic method definitions, Using generics; Collection Framework: Collection interfaces, List and SortedList, Map and SortedMap, Navigable Map, Set and Sorted Set, Navigable Set, Queue and DeQueue, Stack, hashCode() and equals(), Comparator and Comparable; Reflection: The Class Class, reflect package, Fields and Methods, Exception Handling and Reflections and Dynamic Programming; Multi-Threaded Programming: Overview of Thread, Java Thread Model, Creating and Running Thread, Thread Pools, Thread Synchronization, wait and notify, join and sleep and The concurrency API; User Interface: Swing, Components, Container, Events, Layouts and SwingWorker; Serialization: Serializable interface, Writing and Reading an Object, Handling Exceptions, Customized Serialization and Controlling Serialization; Socket Programming: Clients and Servers, Ports, Addresses and Protocols, Communication using I/O, Servers, The ServerSocket Class, The URL lass and URLConnction Class; Java Servlet Programming: Introduction To Servlet, Servlet Life cycle, HttpServlet, HttpRequest, HttpResponse, RequestDispatcher, HttpSession and ServletContext, Servlet Configuration, Cookies, Servlet Filters and Http Headers and MIME types; The Java Beans AOI: Introspector, PropertyDescriptor, EventSetDescriptor and MethodDescriptor.