Versions Compared

Key

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

...

 

Day

Date(2009)

Topic

Reading

Lectures

Problems

Due(2009)

Lab

Supplements

1

Mon

Jan 11

Introduction

 

L 1

HW 0

W Jan 13

Lab 0

Pair Programming

2

Wed

Jan 13

Scheme primitives; function and data definitions

Skim Chs. 1-10

L 2

HW 1

W Jan 20

 

 

3

Fri

Jan 15

Inductive data, conditionals, and the design recipe

Review Chs. 1-10

L 3

 

 

 

 

 

4

Mon

Jan 18

Data-directed design I

Read Chs. 11-13

L 4

 

 

 

Lab 1

 

5

Wed

Jan 20

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 22

Mutually Referential Data Definitions

Skim Chs. 16-17

L 6

 

 

 

 

Mon

Jan 25

School Holiday

Review Chs. 16-17

 

 

 

Lab 2

 

7

Wed

Jan 27

Local definitions and Lexical Scope

Read Chs. 18-19

L 7

HW 3

Mon Feb 2

 

 

8

Fri

Jan 29

Functional Abstraction and Polymorphism

Read Ch. 20

L 8

 

 

 

 

9

Mon

Feb 01

Functions as Values

Read Chs. 21-22

L 9

 

 

Lab 3

 

10

Wed

Feb 03

Lambda the Ultimate

Study Chs. 21-22

L 10

 

 

 

 

11

Fri

Feb 05

Generative Recursion

Read Chs. 25-28

L 11

HW 4

Mon Feb 9

 

 

12

Mon

Feb 08

Generative Recursion Illustrated

Study Chs. 25-28

L 12

 

 

Lab 4

 

13

Wed

Feb 10

Complexity and Accumulators

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

L 13

 

 

 

 

14

Fri

Feb 12

Accumulators and Tail Calls

Read Chs. 30-32

L 14

 

 

 

 

15

Mon

Feb 15

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 17

Powerful Functionals

Review prior readings

L 16

 

 

 

 

17

Fri

Feb 19

Exam Review

Review prior readings

L 17

Take-home exam

 

 

Exam Errata

18

Mon

Feb 22

On to Java

OO Design Notes Ch 1.1-1.4.1

L 18

HW 6

Mon Feb 23

Lab 6

parse/unparse (https:wikiriceedudisplayCSWIKI211parsess)

19

Wed

Feb 24

Java Design Recipe

OO Design Notes Ch 1.1-1.4

L 19

 

 

 

 

20

Fri

Feb 26

Defining Inductive Data in Java

OO Design Notes Ch 1.5

L 20

HW 7

 

 

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

21

Mon

Mar 01

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

Mar 03

Polymorphism and Interfaces

OO Design Notes Ch 1.8

L 22

 

 

 

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

23

Fri

Mar 05

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

 

 

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="aa45d6a3-ad74-4138-95e5-1799b17f0cc3"><ac:plain-text-body><![CDATA[

[Lab 8211lab08]

[ IntList.dj1 (https:wikiriceedudisplayCSWIKI211IntListdj1 [) IntListTest.dj1 (https:wikiriceedudisplayCSWIKI211IntListTestdj1] ]]></ac:plain-text-body></ac:structured-macro>)

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

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.

 

...