Object Oriented Programming in Java

Lecturer: Dave Goddeau

Recitation Instructor: Alan Frank

       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


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