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)
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
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
Reading: CJv1: Chapter 5
-Motivation and background -Inheritance in Java: extends -Polymorphism and RTTI. -Downcasting and upcasting -JavaDoc -examples -inner classes -anonymous classes
Reading: CJv1: Chapter 6
-Motivation -Interfaces in Java (Interface and Implements) -Interface design and implementation -Multiple inheritance -Examples
-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
Reading: CJv1: Chapter 11
PS1 back
-Error handling stratgies: return values vs exceptions -Basic Exception Handling -try/catch/finally/throw -Debugging
Reading: CJv1: Chapter 12
Evening: Quiz1
-Devices and files -Streams -Programming in Java
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
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.
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
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)
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
-Source control -Documentation -Build systems -Testing methodologies
-Packages -JAR files -Layout
- Intro: Web programming via CGI - Client vs server-side programming - Applets - Servlets - JSP
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
-Differences between Java and C++ -Memory issues -Multiple inheritance, interfaces, templates -Implemented OOP techniques in C
-Intro to design patterns -Examples -Sources
Reading: CJv2: Chapter 4
-re-entrant programming -Distributed programming and RPC -Object persistance -Serialization and Marshalling -DB interface -JDBC
Reading: CJv2: Chapter 10
PS4 due
-Summary of course -Important ideas (threading,networking,event models,io and streams,exceptions) -Principles of good technique (from CoreJava) -Design and testing