This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2011fall.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
http://www2.hawaii.edu/~esb/2011fall.ics211/index.html
This page is subject to change without notice -- please reload it
in your browser if an item that might affect you may have changed.
The organization of the course is described here. Please review it at the beginning of the
course and occasionally during the course. It includes information
about course goals, class time and location, contacting the
instructor, office hours, the textbook, grading,
and the no cheating policy. I also have some
suggestions for doing well in this course.
If you have any questions, please contact the instructor.
Schedule
This schedule is subject to change.
Presentation notes are in HTML. I usually post notes no later than the
day before the lecture.
Chapter references are to the textbook, Data Structures: Abstraction
and Design Using Java, 2nd edition.
- Mon Aug 22, class introductions, course summary
Outline
- introductions
- course overview
Some links for this class:
- Wed Aug 24. Appendix A in the book.
Outline
- Java review:
- basics
- exceptions
- variables
- arrays
- modulo operator
- if statements, booleans, comparisons
- loops: while and for
Some links for this class:
- Mon Aug 29. Sections 1.1-1.2 in the book.
Outline
- Abstract Data Types
- Interfaces
- Class hierarchy and Inheritance
Some links for this class:
- Assignment 2, due Sunday, September 4
-
ArbitraryPrecisionInterface.java, which may be implemented
in several different ways
-
ArbitraryPrecision.java, one of several possible implementations
-
Calculate.java, which does not care
how an arbitrary precision number is represented internally
-
Java 2 Edition 6 API, a good guide to the standard classes.
- See also this collection
of Java notes, by
Fred Swartz, and this
Intro to
Programming using Java, from David J. Eck.
- also an introduction to
Java Applet Animation
-
Java coding standard, required for this class
- Eclipse IDE home page and
download
- Netbeans IDE home page
- Wed Aug 31. Sections 1.3-1.8, A6, A12 in the book.
Outline
- Overriding methods, overloading methods, and polymorphism
- casting and instanceof/getClass
- Abstract classes
- class Object
- Exception class hierarchy
Assignment 3, due Sunday, September 11
- Wed Sep 7. Sections 2-2.4 in the book.
Outline
- runtime of programs
- algorithm efficiency
- Big-O notation
- List interface
- Array lists
Some links for this class:
- Mon Sep 12. Sections 2.4-2.5 in the book.
Outline
- List interface (review)
- Array lists
- linked lists
- nodes
- linked list implementation
- invariants
Some links for this class:
Note that
invariants are not in the textbook.
Assignment 4, due Sunday, September 18
- Wed Sep 14. Sections 2.5-2.6 in the book.
Outline
- linked lists
- nodes
- linked list implementation
- invariants
- circular linked list
- doubly-linked lists
- iterators
- iterator implementation
- the ListIterator interface
- the Java foreach statement
Some links for this class:
- Mon Sep 19. Sections 2.6-2.9 in the book.
Outline
- iterator review
- iterator implementation
- the Java foreach statement
Some links for this class:
- Wed Sep 21. Sections 2.10-2.11 in the book.
Outline
- testing
- errors
- reasoning about programs
Some links for this class:
- Mon Sep 26. Exam review. Chapters 1 and 2, and Appendix A6 and A12.
Outline
- Java review
- Abstract Data Types (ADTs)
- Interfaces
- Class Hierarchy, Abstract Classes, Inheritance
- Invariants
- Lists
- ArrayList
- LinkedList
- runtime analysis
- Iterators
- references
- Wed Sep 28. Exam 1, on all the material so far.
- Mon Oct 3. Sections 3.1, 3.3 in the book.
Outline
- post-exam review
- stacks
- stack ADT
- method signatures
- array stack implementation
Some links for this class:
- Wed Oct 5. Chapter 3 in the book.
Outline
- linked stack implementation
- stack applications
- infix, prefix, and postfix expressions
- Mon Oct 10. Queues. Chapter 4 in the book.
Outline
- queues
- queue interface
- queue applications
- queue implementation: array queue
- queue implementation: linked queue
Some links for this class:
- Wed Oct 12. Sections 4.3-4.5 in the book.
Outline
- application of queues and stacks: data structure traversal
- double-ended queues
- application of queues: simulation of an airline counter
- random numbers
- recursion
- examples of recursion
- implementation of recursion using a stack
- principles of recursion
- binary search
- more examples of recursion
Some links for this class:
- Mon Oct 17. Sections 5-5.3 in the book.
Outline
- principles of recursion
- binary search
- more examples of recursion
- recursive linked list methods
- problem solving with recursion
Some links for this class:
- Wed Oct 19. Sections 5.2, 5.3-5.5 in the book.
Outline
- recursive linked list methods
- problem solving with recursion
- trees
- binary search trees
- tree traversal
- binary search tree algorithms: add, remove, traverse
- binary node class
Some links for this class:
- Mon Oct 24. Sections 6-6.2 in the book.
Outline
- trees
- binary search trees
- tree traversal
- binary search tree algorithms: add, remove, traverse
- binary node class
Assignment 9, due Sunday, Oct 30
- Wed Oct 26. Sections 6.3-6.4 in the book.
Outline
- binary node class
- binary search tree algorithms: add, remove, traverse
- heaps
Some links for this class:
- Mon Oct 31. Section 6.5 in the book.
Outline
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- priority queues implementation
- Wed Nov 2. Review for the exam.
Outline
- exam review
- stacks
- queues
- infix, prefix, and postfix expressions
- random numbers
- recursion
- binary search
- binary trees
- binary search trees
- tree traversal
- heaps
- runtime analysis
- ability to implement needed methods
- Mon Nov 7. Exam 2, on all the material so far, but emphasizing the
material since Exam 1.
Assignment 10, due Sunday, Nov 13
- Wed Nov 9. Section 6.5 in the book.
Outline
- Post-exam review
- Huffman coding
- Huffman trees
- Implementation of Huffman coding
- hash tables
- hash functions
- open addressing
- chained hashing
- Mon Nov 14. Sections 6.5-6.6 in the book.
Outline
- Implementation of Huffman coding
- hash tables
- hash functions
- open addressing
- chained hashing
Assignment 11, due Sunday, Nov 20
- Wed Nov 16. Sections 6.6, 7.3 in the book.
Outline
- open addressing
- chained hashing
- applications of hashing
- equality and comparisons in Java
- Mon Nov 21. Section 8-8.4 in the book.
Outline
- sorting
- selection sort
- bubble sort
- insertion sort
- Wed Nov 23. Sections 8.4-8.9 in the book.
Outline
- insertion sort (reminder)
- merge sort
- heap sort
- quick sort
- Shell sort
- Mon Nov 28. Sections 8.6 and 8.7 in the book.
Outline
Assignment 12, due Sunday, Dec 4
One student suggested this
web page, which shows sorting animations done in Javascript.
- Wed Nov 30. Optional material, optional lecture (no quiz).
Sections 8.6 and 9.4 in the book.
Outline
- Mon Dec 5. Course review, part 1.
Outline
- course review:
- exam 1 material: Java, ADTs, linked lists,
run-time big-O, objects, references and pointers, iterators, invariants
- exam 2 material: generic types
and container classes (including vectors), stacks, queues, recursion
binary trees, binary search, binary search trees, tree traversal,
- heaps, huffman coding, priority queues, hashing,
- sorting: insertion, selection, bubble, mergsort, heapsort, quicksort
- Wed Dec 7. Course review, part 2.
Outline
The final exam for this class is
scheduled for Monday Dec 12th, from 4:30pm to 6:30pm. The exam
is on the material in the entire course, with some emphasis on the
material since exam 2.