Object Oriented Programming in Java

Lecturer: Dave Goddeau

Recitation Instructor: Alan Frank


Administration
       Lectures M-F 10-11:30
       Recitation M 3:30, T-F 1:00
       Problem Sets: 4 total, 
           programming exercises at first, then projects
       Quizzes: Quiz 1: Wed Jan 11 Evening (covers PS1)
                Quiz 2: Sun Jan 21 4 PM (covers PS2)
                Note: Quiz 1 is on Wed evening to allow for grading and
		return of PS1 before Quiz1.
       Grading: 20% Quizzes, 20% each Problem Set
       Text: Core Java Volume 1 (CJv1), plus some of Volume 2 (CJv2)

T 1/2/00: Lecture 1: Introduction

Reading: CJv1: Chapters 1-3

- Introduction and Administration - Overview of class - Introduction to Procedural Languages - Overview of Language space - Basic Concepts and Syntax - Types, variables, and constants - Scope and extent rules, blocks. - Expressions and Assignment - Program control (if,for,while...) -Intro to Java -Hello World


W 1/3/00: Lecture 2: Classes

Reading: CJv1: Chapter 4
PS1 out

-Classes -Instances -Instance variables --declarations (public,private,final,static, etc) -Methods --calling methods --defining -static variables and methods -typical classes (data types, math obj, DB , containers, GUI..etc) -Constructors and Initialization


R 1/4/00: Lecture 3: Inheritance

Reading: CJv1: Chapter 5

-Motivation and background -Inheritance in Java: extends -Polymorphism and RTTI. -Downcasting and upcasting -JavaDoc -examples -inner classes -anonymous classes


F 1/5/00: Lecture 4: Interfaces

Reading: CJv1: Chapter 6

-Motivation -Interfaces in Java (Interface and Implements) -Interface design and implementation -Multiple inheritance -Examples


S 1/6/00: No Class:


S 1/7/00:


M 1/8/00: Lecture 5: OOP Design
PS1 due

-Review -OOP as a programming style: manifestos -Encapsulation,Isolation,Abstraction -Separating Interface and Implementation -constructors -destructors (lack of in Java) -accessors and mutators (cloning issues on contained instances) -basic OOP design: choosing class and method -Interfaces vs classes -Polymorphism and downcasting -more examples


T 1/9/00: Lecture 6: Exception Handling

Reading: CJv1: Chapter 11
PS1 back

-Error handling stratgies: return values vs exceptions -Basic Exception Handling -try/catch/finally/throw -Debugging


W 1/10/00: Lecture 7: I/O Programming
PS2 out

Reading: CJv1: Chapter 12
Evening: Quiz1

-Devices and files -Streams -Programming in Java


R 1/11/00: Lecture 8: Window Systems and Graphics

Reading: CJv1: Chapter 7

-History and Movitation -Window systems/window managers -GUI toolkits -Intro to Java Swing set. -HelloSwing, basic stuff (windowAdaptor) -buttons,text input,etc -2D graphics


F 1/12/00: Lecture 9: Event-Based Programming

Reading: CJv1: Chapter 8

-Motivation,multiple input sources. -Basic notions, events, event loop, handlers/callbacks -Event models,Windows,X,Java -UI componenet events (vs basic events) -Events in Java 2 (sources, listeners, handlers) -Getting source and data from event.


S 1/13/00: No Class:


S 1/14/00:


M 1/15/00: Holiday:


T 1/16/00: Lecture 10: GUI Programming: Widgets

Reading: CJv1: Chapter 9 v2: Chapter 6
PS2 due
PS3 out

-Containers, layout, and components -Intro to Java Swing set. -HelloSwing, basic stuff (windowAdaptor) -buttons,text input,etc -containers and layout -list,table widgets


W 1/17/00: Lecture 11: Multi-Thread Programming

Reading: CJv2: Chapter 1

-Motivation -Basic thread ideas -Thread data vs global/class data -Creating and destroying threads -Synchronization -Common Usage patterns -Hidden threads (Gui, network)


R 1/18/00: Lecture 12: Network Programming

Reading: CJv1: Chapter 3

-Intro to IP networks -Sockets -Clients and listeners -Client/server Architectures -Networking Java -Web protocols(HTTP etc) -Web programming in Java -Serialization and Marshalling -RPC -Web sites as RPC's remote objects


F 1/19/00: Lecture 15: Software Cycle and Tools

-Source control -Documentation -Build systems -Testing methodologies


S 1/20/00: No Class:


S 1/21/00: Work on PS3


M 1/22/00: Lecture 14: Miscellaneous Java
AM: PS2 back

-Packages -JAR files -Layout


T 1/23/00: Lecture 14: Web Programming in Java: Servlets and JSP and Applets

- Intro: Web programming via CGI - Client vs server-side programming - Applets - Servlets - JSP


W 1/24/00: Lecture 16: Components

Quiz2

Reading: CJv2: Chapter 8

-Intro to binary componenents -Compare to objects -in-process vs service_process vs remote -method calls -creation and factories -registry issues -Componenets in Java (Beans, EJB) -Components in Windows (ActiveX,COM,DCOM) -CORBA


R 1/25/00: Lecture 17: OOP in C++ and C
PS3 due
PS4 out

-Differences between Java and C++ -Memory issues -Multiple inheritance, interfaces, templates -Implemented OOP techniques in C


F 1/26/00: Lecture 18: Design Patterns

-Intro to design patterns -Examples -Sources


S 1/27/00: No Class:


S 1/28/00: No Quiz


M 1/29/00: Lecture 19: Persistance, Databases, and Distributed Programming

Reading: CJv2: Chapter 4

-re-entrant programming -Distributed programming and RPC -Object persistance -Serialization and Marshalling -DB interface -JDBC


T 1/30/00: Lecture 20: I18N and L10N

Reading: CJv2: Chapter 10
PS4 due


W 1/31/00: Lecture 21: Summary and Review
PS4 play

-Summary of course -Important ideas (threading,networking,event models,io and streams,exceptions) -Principles of good technique (from CoreJava) -Design and testing