Versions Compared

Key

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

...

Please fill out this survey.

Pick a Lab Section

Confirm that You Can Attend Lab

The lab is an essential component of the course. Every student should attend lab on Tuesday 10:50-12:05 in Ryon 102.
If you have a conflict, you probably should drop the course. If you have a conflict, but still want to take the course, please come see Prof. Cartwright or Prof. Wong to evaluate your optionsEvery student must attend an assigned lab section each week. Lab sections meet M 2-3:25pm, M 3:30-4:55pm, and T 2:30-3:55 in Ryon 102 (the CLEAR lab room on the ground floor of the Ryon Building). If you have not already contacted Dr. Nguyen (dxnguyen@rice.edu), immediately send him an email message stating your preferred lab sections (first and second choices).

Computing Environment

All Comp 211 programming assignments will be run and graded on the new CLEAR (Linux) educational computing facility. The Ryon 102 lab is equipped with machines connected to the CLEAR network.
For instructions on how to use CLEAR, see the CLEAR web page.

Errata

The Confluence This wiki for Comp 211 is new and presumably full a revision of last year's and may contain a significant number of broken links and typos. If you notice an error in the wiki, please send email to the Comp 211 staff.

...

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(20092011)

Topic

Reading

Lectures

Problems

Due(20092011)

Lab

Supplements

1

Mon

Jan 10

Introduction & Scheme Primitives

 

L 1, L 2

HW 0

W Jan 12

Lab 0

Pair Programming

2

Wed

Jan 12

Inductive data, conditionals, and the design recipe

Read Chs. 1-10

L 3

HW 1

F Jan 21

 

 

3

Fri

Jan 14

Data-directed design I

Read Chs. 11-13

L 4

 

 

 

 

-

Mon

Jan 17

School Holiday

 

 

 

 

Lab 1

 

4

Wed

Jan 19

Data-directed design II

Read Chs. 14-15

L 5

 

 

 

 

5

Fri

Jan 21

Mutually Referential Data Definitions

Read Chs. 16-17

L 6

HW 2

Fri Jan 28

 

 

6

Mon

Jan 24

Local Definitions and Lexical Scope

Read Ch. 18

L 7

 

 

Lab 2

 

7

Wed

Jan 26

Functional Abstraction and Polymorphism

Read Chs. 19-20

L 8

 

 

 

 

8

Fri

Jan 28

Functions as Values

Read Chs. 21-22

L 9

HW 3

Fri Feb 5

 

 

9

Mon

Feb 01

xxx

xxxx

L 9

 

 

Lab 3

 

10

Wed

Feb 03

Lambda the Ultimate

Read Ch. 24

L 10

 

 

 

 

11

Fri

Feb 05

Generative Recursion

Read Chs. 25-28

L 11

HW 4

Fri Feb 15

 

 

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

HW 5

Fri Feb 19

 

 

15

Mon

Feb 15

Clever Programming With Functions

Review prior readings

L 15

 

 

Lab 5

210 Exam 1
210 Exam 2

16

Wed

Feb 17

Vectors and Iteration

Review prior readings

L 16

 

 

 

 

17

Fri

Feb 19

Exam Review

Review prior readings

L 17

HW 6 (optional)
Exam 1

Fri Feb 26

 

 

18

Mon

Feb 22

On to Java

OO Design Notes Ch 1.1-1.4

L 18

 

 

Lab 6

parse/unparse

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.dj0
IntListTest.dj0

-

M-F

Mar 01-05

Spring Break

 

 

 

 

 

 

21

Mon

Mar 08

Static Class Members and the Singleton Pattern

OO Design Notes Ch 1.6

L 21

 

 

Lab 7

ObjectList.dj1
ObjectListTest.dj1

22

Wed

Mar 10

Polymorphism and Interfaces

OO Design Notes Ch 1.8

L 22

 

 

 

ComparableList.dj1
ComparableListTest.dj1

23

Fri

Mar 12

Handling Exceptions and Errors

OO Design Notes Ch 1.9-1.10, 1.12

L 23

HW 8

Fri Mar 13

 

 

24

Mon

Mar 15

The Strategy and Visitor Patterns

OO Design Notes Ch 1.9, 1.11

L 24

 

 

Lab 8

IntList.dj1
IntListVisitor.dj1
IntListTest.dj1

25

Wed

Mar 17

Visitors, Visitors, Vistors ...

OO Design Notes Ch 1.11

L 25

 

 

 

 

26

Fri

Mar 19

Full Java, Arrays, Mutation

OO Design Notes Ch 1.13

L 26

HW 9

Wed Mar 31

 

IntList.java
IntListTest.java

27

Mon

Mar 22

Visibility, Type-Checking, and Generics

OO Design Notes Ch. 1.10, 1.13

L 27

 

 

Lab 9

List.java
ListTest.java

28

Wed

Mar 24

Generics with Discretion

 

L 28

 

 

 

 

29

Fri

Mar 26

Mutation and Bi-Directional Linked Lists

OO Design Notes Ch 1.13

L 29

 

 

 

 

30

Mon

Mar 29

Graphical User Interfaces

OO Design Notes Ch 3

L 30

 

 

Lab 10

 

31

Wed

Mar 31

Anonymous Inner Classes and Task Decomposition

OO Design Notes Ch 2.1

L 31

HW 10

 

 

BigBiList.java
BigBiListTest.java

-

Fri

Apr 2

School Holiday

 

 

 

 

 

 

32

Mon

Apr 5

Mutable Trees

OO Design Notes Ch 2.1

L 32

 

 

Lab 11

TreeMap.java
TreeMapTest.java
OOTreeMap.java
OOTreeMapTest.java

33

Wed

Apr 7

Review: Confronting the Reality of Full Java

 

L 33

 

 

 

 

34

Fri

Apr 9

QuickSort Revisited

 

L 34

HW 11

 

 

FunctionalQuicksort.java
CallableQuicksort.java
CallableQuicksortAlternateOrder.java
ParallelQuicksort.java
QuicksortWithComparable.java
QuicksortTest.java

35

Mon

Apr 12

Graphical User Interfaces II

OO Design Notes

L 35

 

 

Lab 12

 

36

Wed

Apr 14

OO Sorting Algorithms

 

L 36

 

 

 

Design Patterns for Sorting.pptx
Design Patterns for Sorting SIGCSE paper.pdf
Sorter Demo code.zip

37

Fri

Apr 16

Fast Searching with Balanced Trees

 

L 37

HW 12

 

 

Red-Black Trees
Animated PPT
OOPSLA paper on balanced trees
Executable demo
Demo source code

38

Mon

Apr 19

Fast Searching and Memoization

 

L 38

 

 

Lab 13

MyHashMap.java
MyHashMapTest.java
BetterMath.java

39

Wed

Apr 21

Parallel Programming Tradeoffs

 

L 39

 

 

 

 

40

Fri

Apr 23

Exam II Review

 

L 40

 

 

Lab 14

 

...