...
Instructors: | |||
---|---|---|---|
Staff: | |||
^ | |||
^ | |||
^ | |||
^ | |||
^ |
| ^ | |
^ |
| ^ | |
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. \\\\\ |
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 | ||
2 | Wed | Jan 07 \13 | Scheme primitives; function and data definitions \ | L 2 \ | HW 1 \ | W Jan 14 \20 \ |
| ||
\ | |||||||||
3 | Fri | Jan 09 \ | |||||||
Inductive data, conditionals, and the design recipe \ | |||||||||
L 3 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
4 | Mon | Jan 12 \ | |||||||
Data-directed design I\ | |||||||||
L 4 \ | |||||||||
\ | |||||||||
\ | |||||||||
Lab 1 \ | |||||||||
\ | |||||||||
5 | Wed | Jan 14 \ | |||||||
Data-directed design II \ | |||||||||
L 5 \ | |||||||||
HW 2 (Solution to 12.4.2 (https:wikiriceedudisplayCSWIKI2111242solss)) \ | |||||||||
Th Jan 22\ | |||||||||
\ | |||||||||
\ | |||||||||
6 | Fri | Jan 16 \ | |||||||
Mutually Referential Data Definitions \ | |||||||||
L 6 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
- | Mon | Jan 19 \ | |||||||
School Holiday \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
7 | Wed | Jan 21 \ | |||||||
Local definitions and Lexical Scope \ | |||||||||
L 7 \ | |||||||||
HW 3 \ | |||||||||
Mon Feb 2\ | |||||||||
\ | |||||||||
\ | |||||||||
8 | Fri | Jan 23 \ | |||||||
Functional Abstraction and Polymorphism \ | |||||||||
L 8 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
9 | Mon | Jan 26 \ | |||||||
Functions as Values \ | |||||||||
L 9 \ | |||||||||
\ | |||||||||
\ | |||||||||
Lab 3 \ | |||||||||
\ | |||||||||
10 | Wed | Jan 28 \ | |||||||
Lambda the Ultimate \ | |||||||||
L 10 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
11 | Fri | Jan 30 \ | |||||||
Generative Recursion \ | |||||||||
L 11 \ | |||||||||
HW 4 \ | |||||||||
Mon Feb 9 \ | |||||||||
\ | |||||||||
\ | |||||||||
12 | Mon | Feb 02 \ | |||||||
Generative Recursion Illustrated \ | |||||||||
L 12 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
13 | Wed | Feb 04 \ | |||||||
Complexity and Accumulators \ | |||||||||
L 13 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
14 | Fri | Feb 06 \ | |||||||
Accumulators and Tail Calls\ | |||||||||
L 14 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
15 | Mon | Feb 09 \ | |||||||
Review and First-Class Functions\ | |||||||||
Review prior readings\ | |||||||||
L 15 \ | |||||||||
HW 5 \ | |||||||||
Mon Feb 16 \ | |||||||||
Lab 5 \ | |||||||||
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 \ | |||||||||
\ | |||||||||
\ | |||||||||
18 | Mon | Feb 16 \ | |||||||
On to Java\ | |||||||||
OO Design Notes, Ch 1.1-1.4.1 \ | |||||||||
L 18 \ | |||||||||
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 \ | |||||||||
\ | |||||||||
\ | |||||||||
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\ | |||||||||
\ | |||||||||
\ | |||||||||
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 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
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\ | |||||||||
\ | |||||||||
\ | |||||||||
OOTreeMap.java (https:wikiriceedudisplayCSWIKI211OOTreeMapjava)OOTreeMapTest.java (https:wikiriceedudisplayCSWIKI211OOTreeMapTestjava)\ | |||||||||
34 | Wed | Apr 1 \ | |||||||
Efficient Representations of Maps and Sets \ | |||||||||
\ | |||||||||
L 34\ | |||||||||
HW 11 \ | |||||||||
\ | |||||||||
\ | |||||||||
35 | Fri | Apr 3 \ | |||||||
Rice Board Game Framework \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
36 | Mon | Apr 5 \ | |||||||
OO Design Retrospective \ | |||||||||
OO Design Notes \ | |||||||||
L 36\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
37 | Wed | Apr 7 \ | |||||||
Faster Searching Methods \ | |||||||||
OO Design Notes \ | |||||||||
L 37\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
38 | Fri | Apr 9 \ | |||||||
The Othello Game Framework \ | |||||||||
The Othello Game Framework \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
39 | Mon | Apr 13 \ | |||||||
Faster Searching Methods (Updated with code) \ | |||||||||
OO Design Notes \ | |||||||||
L 37\ | |||||||||
\ | |||||||||
\ | |||||||||
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 \ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ | |||||||||
\ |
...
Here is a nice article about
the basic approach taken in this course.
More on CS: | \\\\\ | QA76 .D448 1993 |
^ | \\\\\ | QA76.9 .A43 H37 2004 |
^ | \\\\\ | QA76.5 .H3575 2000 |
^ | \\\\\ | QA76 .B495 1997 |
^ | \\\\\ | QA76 .B743 1997 |
^ | \\\\\ | QA9.8 .H63 1980 |
^ | \\\\\ | Q335 .H63 1985 |
|
|
|
If you liked Scheme, you'll love these resources: | \\\\\ | (Online) |
^ | \\\\\ | QA76.73 .S34 F75 1996 |
^ | \\\\\ | QA76.73 .S34 F77 1996 |
^ | \\\\\ |
|
^ | \\\\\ | QA76.62 H83 2000 |
|
|
|
More on Java: | \\\\\ | |
^ | \\\\\ |
|
^ | \\\\\ |
|
^ | \\\\\ |
|
^ | \\\\\ |
|
|
|
|
More on Data Structures and Algorithms: | \\\\\ |
|
...