ICS 22 / CSE 22 Fall 2009
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/24
  • Introduction to the course
  • Enumerations in Java
  • skim Ch. 1
Week 1
M 9/28 Labs begin meeting today In-Lab Assignment #0
(to be done in today's lab section)
Tu 9/29
  • 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/1
  • 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/6
  • Inheritance and polymorphism
  • Ch. 2.1 - 2.2
W 10/7 Project #1 due 9:00pm
Th 10/8
  • Inheritance and polymorphism (continued)
  • The Object class
  • Ch. 2.4
Week 3
Tu 10/13
  • Strategies for testing and debugging
  • Introduction to programmatic testing
Th 10/15
  • Interfaces
  • Comparability and natural orderings
  • The distinction between abstract classes and interfaces
Week 4
Tu 10/20
  • Algorithm analysis and O-notation
  • Ch. 4
Th 10/22
  • Linear and binary search
  • ArrayLists and arrays
F 10/23 Project #2 due 9:00pm
Week 5
Tu 10/27
  • Comparing the performance of ArrayLists and linked lists
  • Variations on linked lists
  • Stacks (briefly)
  • Ch. 3.3 - 3.4
Th 10/29
  • MIDTERM — regular lecture time and location
Week 6
Tu 11/3
  • The need for "classic data structures"
  • Stacks
  • Implementing stacks using linked lists and ArrayLists
  • Ch. 5.1
Th 11/5
  • Queues
  • Implementing queues using linked lists and arrays
  • Ch. 5.2 - 5.3
F 11/6 Project #3 due 9:00pm
Week 7
Tu 11/10
  • Simplified unit testing with JUnit
W 11/11 University Holiday: Veterans Day — NO LABS TODAY
Th 11/12
  • 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
Week 8
M 11/16 Project #4 due 11:59pm
Tu 11/17
  • Programming paradigms
  • Introduction to functional programming in Scheme
Th 11/19
  • Introduction to functional programming in Scheme (continued)
Week 9
Tu 11/24
  • Introduction to functional programming in Scheme (continued)
W 11/25 Project #5 due 11:59pm
Th 11/26 University Holiday: Thanksgiving — NO LECTURE TODAY
Week 10
Tu 12/1
  • Introduction to the sorting problem
  • Insertion sort and selection sort
  • Generalizing sorting with comparability
Th 12/3
  • Conclusion
F 12/4 Project #6 due 11:59pm
Finals Week
Tu 12/8
  • FINAL EXAM: 4:00pm-6:00pm, HH 262