Tentative Schedule |
Monday (LAB)
|
Tuesday
|
Wednesday
|
Thursday
|
Friday
|
|
Pre-class Assignment: Introduction and Informal Design.
Objectives: Understand how programs are put together.
Begin to spec out designs (informally).
|
2 Sept
|
Types, Names, Interfaces.
Reading: Chapters 3 (Types); skim Chapter 4
(Interfaces).
Objectives: Begin to understand basic structure of
programs at micro level.
|
3
|
Design assignment (written homework) due
Objectives: Begin to think in terms of objects, systems,
and interactions.
NB: All assignments are due on the Wednesday following,
unless otherwise indicated.
|
4
|
Expressions and statements
Reading: Chapter 5 (Expressions) and Chapter 6
(Statements) through Simple Conditionals
Objectives: Determine type and value resulting from
evaluation. Construct compund expressions. Fluency with
method invocation.
|
5
|
|
8
|
LAB: Expressions and Statements
Objectives: Apply knowledge of expressions, statements,
local and persistent state in an interactive context. Design
behavior to specification. Prepare pre- and post-lab to
expectations.
|
9
|
Control Flow, Recipes, State
Reading: Chapter 1 (Introduction), remainder of
Chapter 6 (Statements), review Chapter 4 (Interfaces)
Objectives: Determine effect and flow of statement
execution. Construct code blocks (including loops and
conditionals). Distinguish local state (variables) from
persistent state (fields).
|
10
|
|
11
|
Classes and objects
Reading: Chapter 7 (Objects) and Chapter 8 (OO
Design)
Objectives: Distinguish class from instance. Design
classes to spec. Implement methods to match signatures.
Distinguish local and persistent state and implement
accordingly. Use OO principles to analyze designs.
|
12
|
|
15
|
LAB: Classes and Objects
Objectives: Apply knowledge of expressions, statements,
classes and objects to build classes and instantiate
objects.
|
16
|
Animacies and threads
Reading: Chapter 9 (Animacies); also review
Chapter 1 (Introduction) and Chapter 6 (Statements)
Objectives: Build active objects. Explain activity in
multi-threaded programs. Appropriately use and distinguish
constructor, initializer, and start.
|
17
|
|
18
|
Debugging and Exceptions
Reading: Chapter 2 (Programming Process),
especially the section on Testing; Chapter 10 (Exceptions)
Objectives: Understand and use try/catch and throw
statements, throws declaration. Design and implement
appropriate exception handling. Explain interactions among
typing, inheritance, and exceptions.
|
19
|
|
22
|
LAB: Animacies, communication, exceptions
Objectives: Apply knowledge of class and animate object
construction, control flow and simple collection structures
to implement interactions. Handle exceptions. Debug subtle
errors, especially fenceposting.
|
23
|
Abstraction, Encapsulation
Reading: Chapter 13 (Encapsulation); section on Inner
Classes optional
Objectives: Appreciate and appropriately use
procedural encapsulation to modularize code. Design using
interfaces, inheritance, and visibility modifiers. Write
cleaner, more stylish, and better designed code.
|
24
|
|
25
|
Dispatch, Procedural Abstraction
Reading: Chapter 12 (Dispatch)
Objectives: Understand and appropriately use
various conditional forms. Use models to plan control flow
and delegate responsibility. Write cleaner, more stylish,
and better designed code.
|
26
|
|
29
|
LAB: Dispatch
Objectives: Apply an understanding of conditional
control flow and procedural abstraction to create a
substantial program. Reinforce scaled design.
|
30
|
Inheritance
Reading: Chapter 11 (Inheritance)
Possible suppliment from Coad.
Objectives: Extend classes. Relate behaviors of
instances. Explain typing rules for inheritance, method
invocation. Appropriately design distinguishing interfaces
from superclasses.
|
1 Oct
|
|
2
|
From Procedures to Objects; Object Design
Reading: Chapter 14 (Intelligent Objects)
Objectives: Understand the relationship between
encapsulated procedures and object-oriented design. Be able
to move from one idiom to the other.
|
3
|
|
6
|
No Lab Meeting
Written Assignment 2
Objectives: Apply understanding of object-oriented
programming to a design problem.
NB: The laboratory meeting time will be used for
open (optional) office hours.
|
7
|
Polymorphism
Reading: Review Chapter 14 (Intelligent Objects)
Objectives: Understand and take advantage of
method overloading. Appreciate differences between
(procedural) caller and (object-oriented) callee selection of
method. Understand structural and procedural recursion.
|
8
|
|
9
|
Olin Event: No Class Meeting
|
10
|
LAB: Software Lifecycle
Objectives: Revisit, refine, revise. Work with
legacy code and software lifecycle issues.
|
13
|
Columbus Day: No Lab
NB: This week's lab will actually be held on October 10
(the preceding Friday), which is an Olin Monday
|
14
|
Event Handling, GUI 1
Reading: Chapter 15 (Event-Driven Programming).
Also review Appendix on java.awt
Objectives: Understand and implement simple event
handlers, including paint. Use Java components.
|
15
|
|
16
|
Software Project Management 1
Reading: TBD.
Objectives: Understand some of the tools of
professional programming; begin to prepare for final
project.
|
17
|
|
20
|
LAB: Event Handling/GUI
Objectives: Apply understanding of event handlers
to build a simple customized graphical user interface.
|
21
|
Event Delegation, GUI 2
Reading: Chapter 16 (Event Delegation)
Objectives: Use event listeners to connect events
to their handler methods. Design using model/view and
model/view/controller paradigms.
|
22
|
|
23
|
GUI pragmatics and java.awt
Reading: TBD
Objectives: Develop comfort with the java.awt
toolkit. Learn about GUI design and alternative approaches.
|
24
|
|
27
|
LAB: Event Delegation/GUI 2
Objectives: Apply understanding of event
delegation to construct a full graphical user interface.
Implement to specification.
|
28
|
Communication Patterns
Reading: Chapter (Communication Patterns)
Objectives: Understand the roles of client and
server. Understand blocking and non-blocking
communication. Make appropriate tradeoffs in client/server
architectures. Appreciate duality and common interface.
Build simple clients/servers.
|
29
|
|
30
|
Concurrency
Reading: Chapter (Synchronization)
Objectives: Identify the potential modes of
concurrency failure and their causes. Eliminate some simple
causes of concurrency failure.
|
31
|
|
3 Nov
|
LAB: Communicating Applications
Objectives: Design to an interface. Use
understanding of communication patterns and concurrency to
build a multi-user networked application with GUI.
|
4
|
Olin Wednesday: No Class Meeting
|
5
|
|
6
|
I/O and networking
Reading: Chapter (Networking)
Objectives: Understand and use Java streams and
sockets to perform input and output to/from files, console,
and network.
|
7
|
|
10
|
Project Conference (Networked apps mini-lab)
Objectives: Ensure projects are appropriate and
realistic. Set up individual timetables. (Project
objectives include building a networked application with
graphical user interface, documenting design and user
interface, applying topics learned so far, building something
cool, and maybe even making something useful.)
|
11
|
Software Project Management 2
Reading: TBD
Objectives: Sum up course so far. Introduce final
project. Prepare for remainder of semester.
|
12
|
|
13
|
Special Topics
Reading: TBD
Objectives: Cover additional topics while students
work primarily on projects. List of topics may include:
Inner classes; Threads as objects; Network architectures; Web
server; Peer-to-peer; RMI; JINI; Database-backed Web
Programming; Student special topics.
|
14
|
|
17
|
LAB: First checkpoint
Objectives: Ensure that projects are progressing.
Replan as necessary.
|
18
|
Special Topics
Reading: TBD
Objectives: See May 8.
|
19
|
|
20
|
Special Topics
Reading: TBD
Objectives: See May 8.
|
21
|
|
THANKSGIVING BREAK
Objectives: Rest, relax, revise. (Remember
software lifecycle.) Also eat a lot. Sleep more.
|
1 Dec
|
LAB: Project checkpoint (T - 1 week)
Objectives: Projects should be in pretty good shape
by now. Documentation should be well underway.
|
2
|
Special Topics
Reading: TBD
Objectives: See May 8.
|
3
|
|
4
|
Special Topics
Reading: TBD
Objectives: See May 8.
|
5
|
|
8
|
LAB: Project Demos/Peer Assessment
Objectives: Impress the heck out of one another.
Also get the kinks out. Look at projects from the other
side. Evaluate them. Prepare for exhibition.
|
9
|
Project Presentations
Objectives: Communicate with one another about
what you've done. Enjoy your classmates' accomplishments.
Give them critical feedback.
|
10
|
|
11
|
|
12
|
|