This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2021fall.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
http://www2.hawaii.edu/~esb/2021fall.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
, 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.
The class is scheduled Mondays and Wednesdays 1:30pm-2:45am on
zoom and, for section 3, in person (F2F) in POST 318A. Please note:
- Any student of any section may attend remotely.
- Section 3 students may attend in person in POST 318A or remotely,
at their individual and daily choice. Section 1 and 2 students may
attend in person if they obtain specific permission from the instructor
to do so for a specific day.
The lab is scheduled Tuesdays and Thursdays, at the time and location corresponding to the section:
- Section 1: 12noon-1:15pm online
- Section 2: 10:30am-11:45pm online
- Section 3: 12noon-1:15pm in person in POST 318A
Since the times for Section 1 and Section 3 overlap, the TA and
ATA will be available both online and in person at the same time.
The instructor's office hours are 3-4pm MW, on Zoom.
-- see here for details. Details of the zoom
meeting information are available in the resources on Laulima.
The instructor usually posts the presentation notes no later than the
day before the lecture.
Chapter references are to the textbook, Data Structures: Abstraction
and Design Using Java, 3rd edition.
- Mon, Aug 23. Course introductions, course summary.
Presentation
- introductions
- course overview
Some links for this class:
- Wed, Aug 25. Java Basics Review. Appendix A in the book.
Presentation
- basics
- exceptions
- variables
- arrays
- modulo operator
- if statements, booleans, comparisons
- loops: while and for
Some links for this class:
homework 1 assigned, due Friday, September 3rd, 11:55pm.
- Mon, Aug 30. Java Objects Review. Interfaces, super- and
sub-classing, object-oriented programming, Java classes and objects,
wrappers, exceptions. Sections 1.1-1.2, A6-A7, A11 in the book.
Presentation
- loops: while and for
- Abstract Data Types (ADTs)
- Java Interfaces
- Class hierarchy and inheritance
Some links for this class:
- Wed, Sep 1. Method overriding, overloading, and polymorphism, abstract classes, casting, exception class hierarchy. Sections 1.3-1.6 in the book.
Presentation
- Class hierarchy and inheritance
- Method overriding or overloading, polymorphism
- Abstract classes
- Casting and instanceof/getClass
- Class Object
- Exception class hierarchy
Some links for this class:
homework 2 assigned, due Friday, September 10th, 11:55pm.
- Wed, Sep 8. Selection Sort. Bubble sort. Insertion Sort. Introduction to Algorithm Analysis. Section 2.4 and Sections 8-8.4 in the book.
Presentation
- equality and comparisons in Java
- sorting
- selection sort
- bubble sort
- insertion sort
- introduction to algorithm analysis
Some links for this class:
homework 3 assigned, due Friday, September 17th, 11:55pm.
- Mon, Sep 13. Algorithm Analysis and Big-O Notation. Sections 2.1 and 8-8.4 in the book.
Presentation
- algorithm analysis
- Big-O notation
- figuring out big-O for sorting algorithms
- Wed, Sep 15. List interface. Array lists. Sections 2.1-2.4 in the book.
Presentation
- Big-O analysis in practice
- List interface
- Array lists
Some links for this class:
homework 4 assigned, due Friday, September 24th, 11:55pm.
- Mon, Sep 20. Analysis and implementation of array lists.
Presentation
- Array list implementation
- Big-O Analysis of array list efficiency
Note that
invariants are not in the book.
- Wed, Sep 22. Linked lists, with analysis and implementation. Section 2.5 in the book. Doubly-linked lists. Sections 2.6-2.9 in the book.
Presentation
- different kinds of linked lists: singly-linked lists, circular
linked lists, and doubly-linked lists
- looping over collections
- iterators
Some links for this class:
homework 5 assigned, due Friday, October 1st, 11:55pm.
- Mon, Sep 27. Iterators. Section 2.7 in the book. Testing, Chapter 3 in the book.
Presentation
- reminder: iterators
- the ListIterator interface
- programming errors
- testing
- errors
- reasoning about programs
- invariants
Some links for this class:
- Wed, Sep 29. The Collection Interface. Section 2.10 in the book.
Presentation
- the Java Collection interface
- parametrized classes and interfaces
- the Java Collection hierarchy
- Sets and Maps
- the AbstractCollection hierarchy
Some links for this class:
homework 6 assigned, due Friday, October 8th, 11:55pm.
- Mon, Oct 4. Binary Search. Section 5.3 in the book.
Presentation
- linear search
- binary search
- implementation of binary search
- runtime analysis
- Wed, Oct 6. Exam review. Chapters 1-3, 5.3, 8-8.4.
Presentation
- Java review
- Interfaces
- Class Hierarchy, Abstract Classes, Inheritance
- Selection sort, Bubble sort, Insertion sort
- Binary Search
- Invariants
- Collections
- Lists
- ArrayList
- LinkedList
- runtime analysis
- Iterators
- Java references
- Mon, Oct 11. Midterm exam 1.
- Wed, Oct 13. Stacks. Sections 4.1-4.4 in the book.
Presentation
- stacks
- stack ADT
- method signatures
- array stack implementation
- linked stack implementation
- stack applications
- infix, prefix, and postfix expressions
- StringBuilder
Some links for this class:
homework 7 assigned, due Friday, October 22, 11:55pm.
- Mon, Oct 18. Stacks and stack applications. Sections 4-4.4 in the book.
Presentation
- infix, prefix, and postfix expressions
- StringBuilder
- Wed, Oct 20. Queues. Sections 4.5-4.8 in the book.
Presentation
- prefix and postfix expressions
- StringBuilder
- queues
- queue interface
- queue applications
- queue implementation: array queue
- queue implementation: linked queue
Some links for this class:
homework 8 assigned, due Friday, October 29, 11:55pm.
- Mon, Oct 25. Queue applications. Section 4.6 in the book.
Presentation
- review: queue implementation
- application of queues and stacks: data structure traversal
- application of queues: simulation of an airline counter
- random numbers
- recursion
- examples of recursion
Some links for this class:
- Wed, Oct 27. Recursion. Sections 5-5.3 in the book.
Presentation
- examples of recursion
- principles of recursion
- binary search
Some links for this class:
homework 9 assigned, due Friday, November 5, 11:55pm.
- Mon, Nov 1. Recursion. Sections 5.4-5.6 in the book.
Presentation
- recursive printing of integers
- fibonacci numbers
- problem solving with recursion
- towers of Hanoi
- backtracking
- garbage collection
Some links for this class:
- Wed, Nov 3. Exam review.
Presentation
- towers of Hanoi
- backtracking
- garbage collection
- exam review
- recursion
- stacks
- queues
- infix, prefix, and postfix expressions
- binary search
- random numbers
- runtime analysis
- Mon, Nov 8. Trees and implementation of trees. Sections 6.1-6.3 and 6.5 and 6.7 in the book.
Presentation
- trees
- expression trees
- binary search trees
- tree traversal
Some links for this class:
- Wed, Nov 10. Midterm exam 2, on Chapters 3, 4 and 5.
homework 10 assigned, due Friday, November 19, 11:55pm.
- Mon, Nov 15. Huffman Trees. Section 6.7 in the book. Lambda Expressions, Section 6.4 in the book.
Presentation
- Huffman trees
- Huffman coding
- implementation of Huffman coding
- lambda expressions
- Wed, Nov 17. Huffman Trees. Section 6.7 in the book.
Presentation
- Huffman trees
- Huffman coding
- implementation of Huffman coding
homework 11 assigned, due Friday, December 3, 11:55pm.
- Mon, Nov 22. Heaps and priority queues. Section 6.6 in the book.
Presentation
- lambda expressions
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- Wed, Nov 24. Hash tables. Sections 7-7.4 in the book.
Presentation
- hash tables
- hash functions
- open addressing
- chained hashing
Some links for this class:
- two hash functions: from 2006 and from 2011.
- Mon, Nov 29. Reminder of sorting and quadratic sorting algorithms. Shell Sort and Merge Sort. Sections 8.5 and 8.6 in the book.
Presentation
- applications of hashing
- reminder: equality and comparisons in Java
- reminder: sorting
- reminder: selection sort
- reminder: bubble sort
- reminder: insertion sort
- Shell sort
- merge sort
Some links for this class:
- Wed, Dec 1. Merge sort, Heap sort, Quicksort. Sections 8.5, 8.8, 8.9 in the book.
Presentation
- merge sort
- heap sort
- quicksort
Some links for this class:
- Mon, Dec 6. Heap sort, Quick sort. Sections 8.8-8.9 in the book.
Presentation
Some links for this class:
- an example of heapsort
- an example of quicksort
- dancing sort videos
- If you have trouble understanding the quicksort partitioning algorithm, I encourage you to review Section 8.11 in the textbook.
- Wed, Dec 8. Course review.
Presentation
- 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 search
- binary trees, binary search trees, tree traversal, heaps, huffman coding, priority queues, hashing,
- sorting: insertion, selection, bubble, mergesort, heapsort, quicksort
The final exam for this class is scheduled for Friday December 17th, from 2:15pm to 4:15pm. 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 before December 5th.