Syllabus | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Monday (LAB) |
Tuesday |
Thursday |
|||
---|---|---|---|---|---|
|
|
21 |
Welcome. Overview. Interaction. Reading: Chapters 1 (Intro) and 2 (Design). Objectives: Understand how programs are put together. Begin to spec out designs (informally). |
23 |
Types, Names, Interfaces. Reading: Chapters 3 (Types) and 4 (Interfaces). Objectives: Read javadoc, use libraries. Define Interfaces. |
27 |
Design and mini-lab Objectives: Design interfaces and systems. Read javadoc. Become familiar with lab setup. |
28 |
Expressions and statements Reading: Chapter 5 (Expressions) and Chapter 6 (Statements) through sequences. Objectives: Determine type and value resulting from evaluation. Construct compund expressions. Fluency with method invocation. |
30 |
Control Flow, Recipes, State Reading: Chapter 6 (Statements) Objectives: Determine effect and flow of statement execution. Construct code blocks (including loops and conditionals). Distinguish local state (variables) from persistent state (fields). |
3 |
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. |
4 |
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. |
6 |
Inheritance Reading: Chapter 11 (Inheritance) Objectives: Extend classes. Relate behaviors of instances. Explain typing rules for inheritance, method invocation. Appropriately design distinguishing interfaces from superclasses. |
10 |
LAB: Classes and Objects Objectives: Apply knowledge of expressions, statements, classes and objects to build classes and instantiate objects. |
11 |
Animacies and threads Reading: Chapter 9 (Animacies) Objectives: Build active objects. Explain activity in multi-threaded programs. Appropriately use and distinguish constructor, initializer, and start. |
13 |
Exceptions Reading: 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. |
17 |
Presidents' Day: No Lab Documentation Project Objectives: Read and analyze third-party code. Produce appropriate documentation. |
18 |
Data aggregation Reading: Chapter 12 (Dispatch) section 3 (Arrays) ONLY. Possible additional material on collections and iterators Objectives: Understand and use arrays. Understand and use Java collection objects. Understand and use iterators. Distinguish among and select appropriate collection data structures. |
20 |
Olin Monday 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. |
24 |
LAB: TBD Objectives: Catch up, reinforce, breathe. |
25 |
Dispatch, Abstraction Reading: Remainder of 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. |
27 |
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. |
3 |
LAB: Dispatch Objectives: Apply an understanding of conditional control flow and procedural abstraction to create a substantial program. Reinforce scaled design. |
4 |
Polymorphism Reading: 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. |
6 |
Event Handling, GUI 1 Reading: Chapter 15 (Event-Driven Programming) Objectives: Understand and implement simple event handlers. Use Java components. |
10 |
LAB: Event Handling/GUI Objectives: Apply understanding of event handlers to build a simple customized graphical user interface. |
11 |
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. |
13 |
TBD Reading: TBD Objectives: TBD, of course! |
SPRING BREAK Objectives: Rest, relax, revise. (Remember software lifecycle.) |
|||||
24 |
LAB: Event Delegation/GUI 2 Objectives: Apply understanding of event delegation to construct a full graphical user interface. Implement to specification. |
25 |
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. |
27 |
Concurrency Reading: Chapter (Synchronization) Objectives: Identify the potential modes of concurrency failure and their causes. Eliminate some simple causes of concurrency failure. |
31 |
LAB: Communicating Applications Objectives: Design to an interface. Use understanding of communication patterns and concurrency to build a multi-user networked application with GUI. |
1 |
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. |
3 |
Design revisited Reading: TBD Objectives: Sum up course so far. Introduce final project. Prepare for remainder of semester. |
7 |
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.) |
8 |
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. |
10 |
Special Topics Reading: TBD Objectives: See May 8. |
14 |
LAB: First checkpoint Objectives: Ensure that projects are progressing. Replan as necessary. |
15 |
Special Topics Reading: TBD Objectives: See May 8. |
17 |
Special Topics Reading: TBD Objectives: See May 8. |
21 |
Patriots' Day: No Lab Objectives: Run 26.2 miles. |
22 |
Olin Monday LAB: Project checkpoint (T - 1 week) Objectives: Projects should be in pretty good shape by now. Documentation should be well underway. |
24 |
Special Topics Reading: TBD Objectives: See May 8. |
28 |
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. |
29 |
Project Presentations 1 Objectives: Communicate with one another about what you've done. Enjoy your classmates' accomplishments. Give them critical feedback. |
1 |
Project Presentations 2 Objectives: Just like April 29. |