Engineering Computing

Syllabus

Tentative Schedule

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
MAY SWAP WITH 11th!

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.

10

LAB: Classes and Objects

Objectives: Apply knowledge of expressions, statements, classes and objects to build classes and instantiate objects.

11

Animacies and threads
MAY SWAP WITH 6th!

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.

Questions, comments, gripes and other communication to pi-staff@lists.cognition.olin.edu
This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the Computers and Cognition Laboratory and the Electrical and Computer Engineering area at Franklin W. Olin College of Engineering. Olin College Logo