ICS 22 / CSE 22 Fall 2008
Schedule


All assigned readings are from the Goodrich text. It is a good idea to skim the assigned reading before the lecture for the main ideas, attend lecture, and then to go through the assigned reading again to fill in the details that you missed, both in your initial skim of the reading and in the lecture.

Several lectures have little or no reading corresponding to them. In some cases, this is because a block of reading corresponds to more than one lecture. In other cases, the material covered in that lecture is not discussed in the textbook.

Date Lecture Topics Readings Project Due
Week 0
Th 9/25
  • Introduction to the course
  • Enumerations in Java
  • skim Ch. 1
Week 1
M 9/29 In-Lab Assignment #0
(to be done in today's lab section)
Tu 9/30
  • Exception handling in Java
  • try and catch
  • When to handle an exception and when to allow it to propagate
  • Reading input from text files, and how exceptions fit into it
  • Ch. 2.3
Th 10/2
  • Singly-linked lists
  • Writing a generic singly-linked list class
  • Iteration and iterators
  • Ch. 2.5
  • Ch. 3.1 - 3.2
  • Ch. 6.1 - 6.3
Week 2
Tu 10/7
  • Inheritance and polymorphism
  • Ch. 2.1 - 2.2
W 10/8 Project #1 due 9:00pm
Th 10/9
  • Inheritance and polymorphism (continued)
  • The Object class
  • Ch. 2.4
Week 3
Tu 10/14
  • Interfaces
  • Comparability and natural orderings
  • The distinction between abstract classes and interfaces
Th 10/16
  • Strategies for testing and debugging
  • Introduction to programmatic testing
Week 4
Tu 10/21
  • Algorithm analysis and O-notation
  • Ch. 4
W 10/22 Project #2 due 9:00pm
Th 10/23
  • Linear and binary search
  • ArrayLists and arrays
  • Ch. 3.3 - 3.4
Week 5
Tu 10/28
  • Comparing the performance of ArrayLists and linked lists
  • Variations on linked lists
  • Stacks (briefly)
  • Ch. 5.1
Th 10/30
  • The need for "classic data structures"
  • Stacks
  • Implementing stacks using linked lists and ArrayLists
  • Ch. 5.1
Week 6
Tu 11/4
  • MIDTERM — regular lecture time and location
Th 11/6
  • Queues
  • Implementing queues using linked lists and arrays
  • Ch. 5.2 - 5.3
F 11/7 Project #3 due 9:00pm
Week 7
Tu 11/11
  • University Holiday: Veterans' Day — NO CLASS TODAY
Th 11/13
  • Simplified unit testing with JUnit
Week 8
Tu 11/18
  • Maps
  • Implementing maps using sorted and unsorted lists
  • The case for non-linear data structures
  • Binary search trees (briefly)
  • Hash tables (briefly)
  • Ch. 9.1
Th 11/20
  • Programming paradigms
  • Introduction to functional programming in Scheme
F 11/21 Project #4 due 9:00pm
Week 9
Tu 11/25
  • Introduction to functional programming in Scheme (continued)
Th 11/27
  • University Holiday: Thanksgiving — NO LABS TODAY
Week 10
M 12/1 Project #5 due 9:00pm
Tu 12/2
  • Introduction to functional programming in Scheme (continued)
Th 12/4
  • Introduction to the sorting problem
  • Insertion sort and selection sort
  • Generalizing sorting with comparability
  • Conclusion
Sa 12/6 Project #6 due 9:00pm
Finals Week
Tu 12/9
  • FINAL EXAM: 4:00pm-6:00pm, PSCB 120