Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Instructors:

Prof. Robert "Corky" Cartwright \

Staff:

Cherif Salama

^

Prof.WalidTaha \

^

Angela Zhu

^

Dr. Dung "Zung" Nguyen\

^

JunInoue

^

 

^

Travis Martin

^

 

^

Justin Faulkner

Lectures:

Duncan Hall (DH) 1064\

Time:

MWF 11:00-11:50 am

Labs:

Sewell Hall 101 \

Times:

Monday 2:00-3:20 pm, Monday 3:30-4:50 pm, Tuesday 2:30-3:50 pm. \\\\\
(sign up sheet)

Introduction

...

Notes for Java: Object-oriented Design

References for Java

  • Wiki Markup
    \[[http:--cnx.org-content-col10213-1.31] [Principles of Object-Oriented Programming by Zung Nguyen and Stephen Wong|Principles of Object-Oriented Programming by Zung Nguyen and Stephen Wong]\].  An online self-contained introduction to OOP in Java roughly corresponding to the former Comp 212 course.  It is reasonably complete, but still under construction.
  • Index to online Java Tutorials by Sun Microsystems The Sun tutorials refer to the full Java language not the Elementary and Intermediate language levels supported by DrJava. Nevertheless, they cover many important language details in depth, such as the complete collection of primitive operators on primitive data types.
  • Java Basics by Fred Swartz is a clearly written traditional introduction to Java that focuses on Java mechanics rather than OO Design. It can be helpful in learning the {\em mechanics} of writing full Java code. Please ignore what he says about program design.
  • Java Notes by Fred Swartz is a reasonably comprehensive Java reference that is a good supplement to the official Sun documents.

...

Note that future date schedules are only guidelines. Future homeworks and slides may contain materials from previous Comp 210 and Comp 212 classes. New material will be provided before the corresponding class. There will only be two exams in the course: one given on functional programming during week 7 and one on object-oriented programming given during in the last week of the course. Both are take-home exams. There is no final examination.

 

Day

Date(2009)

Topic

Reading

Lectures

Problems

Due(2009)

Lab

Supplements

1

Mon

Jan 05 \11

Introduction \ \

 

L 1\

HW 0 \

W Jan 07 \13

Lab 0\

Pair Programming \

2

Wed

Jan 07 \13

Scheme primitives; function and data definitions \

Skim Chs. 1-10 \

L 2 \

HW 1 \

W Jan 14 \20 \

 

\

3

Fri

Jan 09 \

Inductive data, conditionals, and the design recipe \

Review Chs. 1-10 \

L 3 \

\

\

\

4

Mon

Jan 12 \

Data-directed design I\

Read Chs. 11-13\

L 4 \

\

\

Lab 1 \

\

5

Wed

Jan 14 \

Data-directed design II \

Read Chs. 14-15\

L 5 \

HW 2 (Solution to 12.4.2 (https:wikiriceedudisplayCSWIKI2111242solss)) \

Th Jan 22\

\

\

6

Fri

Jan 16 \

Mutually Referential Data Definitions \

Skim Chs. 16-17\

L 6 \

\

\

\

\

-

Mon

Jan 19 \

School Holiday \

Review Chs. 16-17\

\

\

\

Lab 2\

\

7

Wed

Jan 21 \

Local definitions and Lexical Scope \

Read Chs. 18-19\

L 7 \

HW 3 \

Mon Feb 2\

\

\

8

Fri

Jan 23 \

Functional Abstraction and Polymorphism \

Read Ch. 20\

L 8 \

\

\

\

\

9

Mon

Jan 26 \

Functions as Values \

Read Chs. 21-22\

L 9 \

\

\

Lab 3 \

\

10

Wed

Jan 28 \

Lambda the Ultimate \

Study Chs. 21-22\

L 10 \

\

\

\

\

11

Fri

Jan 30 \

Generative Recursion \

Read Chs. 25-28\

L 11 \

HW 4 \

Mon Feb 9 \

\

\

12

Mon

Feb 02 \

Generative Recursion Illustrated \

Study Chs. 25-28\

L 12 \

\

\

Lab 4\

\

13

Wed

Feb 04 \

Complexity and Accumulators \

Read Chs. 29.1-2; Skim Chs. 30-32\

L 13 \

\

\

\

\

14

Fri

Feb 06 \

Accumulators and Tail Calls\

Read Chs. 30-32\

L 14 \

\

\

\

\

15

Mon

Feb 09 \

Review and First-Class Functions\

Review prior readings\

L 15 \

HW 5 \

Mon Feb 16 \

Lab 5 \

210 Exam 1, 210 Exam 2\

16

Wed

Feb 11 \

Powerful Functionals \

Review prior readings \

L 16 \

\

\

\

\

17

Fri

Feb 13 \

Exam Review \

Review prior readings \

L 17 \

Take-home exam \

\

\

Exam Errata \

18

Mon

Feb 16 \

On to Java\

OO Design Notes, Ch 1.1-1.4.1 \

L 18 \

HW 6 (Extra Credit) \

Mon Feb 23 \

Lab 6 \

parse/unparse (https:wikiriceedudisplayCSWIKI211parsess)\

19

Wed

Feb 18 \

Java Design Recipe \

OO Design Notes, Ch 1.1-1.4 \

L 19 \

\

\

\

\

20

Fri

Feb 20 \

Defining Inductive Data in Java \

OO Design Notes, Ch 1.5\

L 20 \

HW 7\

\

\

IntList (https:wikiriceedudisplayCSWIKI211IntListdj0)IntListTest (https:wikiriceedudisplayCSWIKI211IntListTestdj0) \

21

Mon

Feb 23 \

Static Class Members and the Singleton Pattern\

OO Design Notes, Ch 1.6\

L 21 \

\

\

Lab 7 \

ObjectList (https:wikiriceedudisplayCSWIKI211ObjectListdj1)ObjectListTest (https:wikiriceedudisplayCSWIKI211ObjectListTestdj1)\

22

Wed

Feb 25 \

Polymorphism and Interfaces \

OO Design Notes, Ch 1.8\

L 22 \

\

\

\

ComparableList (https:wikiriceedudisplayCSWIKI211ComparableListdj1)ComparableListTest (https:wikiriceedudisplayCSWIKI211ComparableListTestdj1)\

23

Fri

Feb 27 \

Loose Ends and First-class Functions \

OO Design Notes, Ch 1.9-1.10, 1.12\

L 23 \

HW 8 \

Fri Mar 13 \

\

\

24

Mon

Mar 9 \

The Strategy and Visitor Patterns \

OO Design Notes, Ch 1.9, 1.11\

L 24 \

\

\

Lab 8\

IntList.dj1 (https:wikiriceedudisplayCSWIKI211IntListdj1)IntListTest.dj1 (https:wikiriceedudisplayCSWIKI211IntListTestdj1) \

25

Wed

Mar 11 \

Visitors, Visitors, Vistors ... \

OO Design Notes, Ch 1.11\

L 25 \

\

\

\

\

26

Fri

Mar 13 \

Full Java \

OO Design Notes, Ch 1.13\

L 26 \

HW 9 \

Wed Mar 25 \

\

\

27

Mon

Mar 16 \

Visibility, Type-Checking, and Generics\

OO Design Notes, Ch. 1.10, 1.13\

L 27\

\

\

Lab 9\

List.java (https:wikiriceedudisplayCSWIKI211Listjava)ListTest.java (https:wikiriceedudisplayCSWIKI211ListTestjava)\

28

Wed

Mar 18 \

Generics with Discretion \

\

L 28 \

\

\

\

\

29

Fri

Mar 20 \

Mutation: Succumbing to the Dark Side? \

OO Design Notes, Ch 1.13 \

L 29 \

\

\

\

\

30

Mon

Mar 23 \

Arrays as Bounded Sequences\

OO Design Notes, Ch 2.1 \

L 30 \

\

\

Lab 10\

\

31

Wed

Mar 25 \

Mutable Linked Lists\

OO Design Notes, Ch 2.1 \

L 31 \

HW 10 \

\

\

BigBiList.java (https:wikiriceedudisplayCSWIKI211BiListjava)BigBiListTest.java (https:wikiriceedudisplayCSWIKI211BiListTestjava) \

32

Fri

Mar 27 \

Mutable Trees \

OO Design Notes, Ch 2.1 \

L 32 \

\

\

\

TreeMap.java (https:wikiriceedudisplayCSWIKI211TreeMapjava)TreeMapTest.java (https:wikiriceedudisplayCSWIKI211TreeMapTestjava)\

33

Mon

Mar 30 \

Designing OO Data Structures \

\

L 33\

\

\

Lab 11\

OOTreeMap.java (https:wikiriceedudisplayCSWIKI211OOTreeMapjava)OOTreeMapTest.java (https:wikiriceedudisplayCSWIKI211OOTreeMapTestjava)\

34

Wed

Apr 1 \

Efficient Representations of Maps and Sets \

\

L 34\

HW 11 \

\

\

Okasaki's Red-Black Trees\

35

Fri

Apr 3 \

Rice Board Game Framework \

\

\

\

\

\

\

36

Mon

Apr 5 \

OO Design Retrospective \

OO Design Notes \

L 36\

\

\

Lab 12\

\

37

Wed

Apr 7 \

Faster Searching Methods \

OO Design Notes \

L 37\

\

\

\

\

38

Fri

Apr 9 \

The Othello Game Framework \

The Othello Game Framework \

\

HW 12\

\

\

\

39

Mon

Apr 13 \

Faster Searching Methods (Updated with code) \

OO Design Notes \

L 37\

\

\

Lab 13\

MyHashMap.java (https:wikiriceedudisplayCSWIKI211MyHashMapjava)MyHashMapTest.java (https:wikiriceedudisplayCSWIKI211MyHashMapTestjava) \

40

Wed

Apr 15 \

Fast Sorting Methods \

OO Design Notes \

L 40\

\

\

\

\

41

Fri

Apr 17 \

Graphical User Interfaces \

OO Design Notes, Ch. 3 \

L 40\

\

\

\

\

41+

Fri

Apr 24 \

Optional Othello Tournament \

\

Tournament Rules\

\

\

\

\

...

Here is a nice article about
the basic approach taken in this course.

More on CS:

\\\\\
The New Turing Omnibus, A. K. Dewdney

QA76 .D448 1993

^

\\\\\
Algorithmics: The Spirit of Computing, David Harel

QA76.9 .A43 H37 2004

^

\\\\\
Computers Ltd.: What They Really Can't Do, David Harel

QA76.5 .H3575 2000

^

\\\\\
Great Ideas in Computer Science, Alan W. Biermann

QA76 .B495 1997

^

\\\\\
Computer Science: An Overview, J. Glenn Brookshear

QA76 .B743 1997

^

\\\\\
G�del, Escher, Bach: An Eternal Golden Braid, Douglas Hofstadter

QA9.8 .H63 1980

^

\\\\\
Metamagical Themas, Douglas Hofstadter

Q335 .H63 1985

 

 

 

If you liked Scheme, you'll love these resources:

\\\\\
Google's MapReduce

(Online)

^

\\\\\
The Little Schemer, Friedman & Felleisen

QA76.73 .S34 F75 1996

^

\\\\\
The Seasoned Schemer, Friedman & Felleisen

QA76.73 .S34 F77 1996

^

\\\\\
Developing Applications with Objective Caml, Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano

 

^

\\\\\
The Haskell School of Expression: Learning Functional Programming Through Multimedia, Paul Hudak

QA76.62 H83 2000

 

 

 

More on Java:

\\\\\
Principles of Object-Oriented Programming: The Connexions Curriculum for the former Comp 212 course

^

\\\\\
The Java Programming Language: Book written by James Gosling the father of Java himself!

 

^

\\\\\
Thinking In Java: A Java Book by Bruce Eckel, a well-known and seasoned professional programmer. Look for the link to free book downloads on this page

 

^

\\\\\
Design Patterns: Elements of Reusable Object-Oriented Software: This is the "Bible" of OO software design. The authors (all four of them) of the book are affectionately referred to as the Gang of Four (GoF).

 

^

\\\\\
Head First Design Patterns (by O'Reilly): A very accessible introduction to Design Patterns using Java.

 

 

 

 

More on Data Structures and Algorithms:

\\\\\
Introduction to Algorithms: Book written by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. The authoritative reference on algorithms.

 

...