ICS 22 / CSE 22 Fall 2012
Schedule


All assigned readings are from the Goodrich text, 5th Edition. 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/27
  • Introduction to the course
  • Enumerations in Java
  • skim Ch. 1
Week 1
M 10/1
Tu 10/2
  • 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/4
  • Singly-linked lists
  • Generic classes
  • Iteration and iterators
  • Ch. 2.5
  • Ch. 3.2
  • Ch. 6.1 - 6.3
Week 2
Tu 10/9
  • The importance of automated testing
  • Test-driven development
  • Unit testing using JUnit
W 10/10 Project #1 due 11:59pm
Th 10/11
  • Unit testing using JUnit (continued)
  • Inheritance and polymorphism
  • Ch. 2.1 - 2.2
Week 3
Tu 10/16
  • Inheritance and polymorphism (continued)
  • The Object class
Th 10/18
  • Algorithm analysis and O-notation
  • Ch. 4
Week 4
M 10/22 Project #2 due 11:59pm
Tu 10/23
  • Linear and binary search
  • ArrayLists and arrays
  • Ch. 3.1
Th 10/25
  • Comparing the performance of ArrayLists and linked lists
  • Variations on linked lists
  • Ch. 3.3 - 3.4
Week 5
Tu 10/30
  • The need for "classic data structures"
  • Stacks
  • Implementing stacks using linked lists and ArrayLists
  • Ch. 5.1
Th 11/1
  • MIDTERM — regular lecture time and location
Week 6
Tu 11/6
  • Queues
  • Implementing queues using linked lists and arrays
  • Ch. 5.2
W 11/7 Project #3 due 11:59pm
Th 11/8
  • 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
  • Ch. 9.3
  • skim Ch. 9.2
Week 7
M 11/12 University Holiday — Veterans' Day (NO LABS TODAY)
Tu 11/13
  • Interfaces
  • The AutoCloseable interface and try-with-resources
  • Comparability and natural orderings
  • The distinction between abstract classes and interfaces
  • Ch. 2.4
Th 11/15
  • Programming paradigms
  • Introduction to functional programming in Racket
Week 8
M 11/19 Project #4 due 11:59pm
Tu 11/20
  • Introduction to functional programming in Racket (continued)
Th 11/22 University Holiday — Thanksgiving (NO LECTURE TODAY)
F 11/23 University Holiday — Thanksgiving
Week 9
Tu 11/27
  • Introduction to functional programming in Racket (continued)
W 11/28 Project #5 due 11:59pm
Th 11/29
  • Introduction to the sorting problem
  • Insertion sort and selection sort
  • Generalizing sorting with comparability
  • Ch. 3.1.2
Week 10
Tu 12/4
  • Something cool to be announced later
Th 12/6
  • Conclusion
F 12/7 Project #6 due 11:59pm
Finals Week
Th 12/13
  • FINAL EXAM: 4:00pm-6:00pm, ELH 100