This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2013fall.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
http://www2.hawaii.edu/~esb/2013fall.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 or the TAs,
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.
- Tue Aug 27, class introductions, course summary
Outline
- introductions
- course overview
Some links for this class:
- Thu Aug 29. 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:
- Tue Sep 3. Sections 1.1-1.2 in the book.
Outline
- Java review (continued)
- Abstract Data Types
- Interfaces
- Class hierarchy and Inheritance
No labs this week.
Some links for this class:
- Thu Sep 5. Sections 1.3-1.8, A6, A12 in the book.
Outline
- class hierarchy and inheritance
- casting and instanceof/getClass
- Abstract classes
- class Object
- Exception class hierarchy
Assignment 2, due Friday, September 13
No labs this week.
- Tue Sep 10. 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:
- Thu Sep 12. Sections 2.4-2.5 in the book.
Outline
- List interface (review)
- Array lists (review)
- linked lists
- nodes
- linked list implementation
- invariants
Some links for this class:
Note that
invariants are not in the textbook.
- Tue Sep 17. Sections 2.5-2.6 in the book.
Outline
- linked lists reminders: nodes, implementation, invariants
- circular linked list
- doubly-linked lists
- iterators
- iterator implementation
- the ListIterator interface
- the Java foreach statement
Some links for this class:
- Thu Sep 19. Sections 2.6-2.9 in the book.
Outline
- iterator review
- iterator implementation
- the Java foreach statement
- testing
Some links for this class:
- Tue Sep 24. Sections 2.10-2.11 in the book.
Outline
- testing
- errors
- reasoning about programs
- Thu 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
Assignment 5, due Friday, October 11th. This is a two-week assignment,
and so is substantially more challenging than a regular assignment. Be sure
to start early.
Some links for this class:
- Tue Oct 1. Exam 1, on all the material so far.
- Thu Oct 3. Post-exam review.
Outline
- Thu Oct 8. Sections 3.1, 3.3 in the book.
Outline
- stacks
- stack ADT
- method signatures
- array stack implementation
- linked stack implementation
- stack applications
- infix, prefix, and postfix expressions
Some links for this class:
- Thu Oct 10. Queues. Chapter 4 in the book.
Outline
- infix, prefix, and postfix expressions
- queues
- queue interface
- queue applications
- queue implementation: array queue
- queue implementation: linked queue
- application of queues and stacks: data structure traversal
- application of queues: simulation of an airline counter
- random numbers
Some links for this class:
- Tue Oct 15. Sections 4.3-4.5 in the book.
Outline
- queue implementation: array queue
- queue implementation: linked queue
- application of queues and stacks: data structure traversal
- application of queues: simulation of an airline counter
- random numbers
Some links for this class:
- Thu Oct 17. Sections 5-5.3 in the book.
Outline
- 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:
- Tue Oct 22. Sections 5.2-5.5 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:
- Thu Oct 24. Sections 6-6.2 in the book.
Outline
- implementation of recursion
- recursive linked list methods
- problem solving with recursion
Some links for this class:
- Tue Oct 29. Sections 6.3-6.4 in the book.
Outline
- trees
- binary search trees
- tree traversal
- binary search tree algorithms: add, remove, traverse
- binary node class
- Thu Oct 31. Section 6.5 in the book.
Outline
- binary tree traversals
- binary node class
- binary search tree algorithms: add, remove, traverse
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- priority queues implementation
Assignment 9, due Friday, Nov 8
- Tue Nov 5. Heaps, Priority Queues.
Outline
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- priority queues implementation
- Thu Nov 7. Review for the exam.
Outline
- exam review
- recursion
- binary search
- stacks
- queues
- infix, prefix, and postfix expressions
- random numbers
- binary trees
- binary search trees
- tree traversal
- heaps
- runtime analysis
- ability to implement needed methods
Some links for this class:
- Tue Nov 12. Exam 2, on all the material so far, but emphasizing the
material since Exam 1.
- Thu Nov 14. Post-exam review.
- Tue Nov 19. Sections 6.5-6.6 in the book.
Outline
- Huffman coding
- Huffman trees
- Implementation of Huffman coding
- hash tables
- hash functions
- open addressing
- chained hashing
- Thu Nov 21. Sections 6.6, 7.3 in the book.
Outline
- open addressing
- chained hashing
- applications of hashing
- equality and comparisons in Java
Assignment 11, due Friday, Nov 29
- Tue Nov 26. Section 8-8.4 in the book.
Outline
- equality and comparisons in Java
- sorting
- selection sort
- bubble sort
- insertion sort
Assignment 12, due Friday, Dec 6
- Tue Dec 3. Sections 8.4-8.9 in the book.
Outline
- selection/insertion sort (reminder)
- merge sort
- heap sort
- quick sort
- Shell sort
Some links for this class:
- Thu Dec 5. Section 8.6 in the book and start of Course Review.
Shell Sort
Course Review, Part 1
- 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, 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
Assignment 13, due Friday, Dec 13
- Tue Dec 10. Assignment 13, part 1 in class.
- Thu Dec 12.
Course Review, Part 2
The final exam for this class is
scheduled for Thursday Dec 19th, from 9:45am to 11:45am. The exam
is on the material in the entire course, with some emphasis on the
material since exam 2.
Anyone wishing to take the final exam early
please contact the instructor by December 10th. At least one student is
currently signed up to take the exam on Monday, December 16th, at 10am.