Engineering Computing

Syllabus

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

 
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