This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2001spring.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
http://www2.ics.hawaii.edu/~esb/2001spring.ics211/index.html
Office is in POST 303B, telephone 956-3891, e-mail esb@hawaii.edu. Office hours are
Tuesday from 9 to 10am, Thursday from 12 noon to 1pm, or by
appointment.
Office is
in POST 305B, telephone 956-3487, e-mail hmauch@hawaii.edu. Office hours
are Monday 10:30-11:30 and he is available to answer questions during
the labs.
Goals
In this course, students will:
- Learn standard data structures, including linked lists, stacks,
queues, and trees.
- Learn standard algorithms for sorting and searching
- Be exposed to the basics of algorithm analysis and complexity.
- Be exposed to software engineering techniques such as: abstract
data types, separation of definition and implementation.
- Learn to use Java for more complex programming projects than
those in ICS 111.
Organization
This course has
- lectures -- class participation is encouraged
- labs
- exercises
- homeworks (25% of the grade) -- all homeworks must follow the Java
Coding Standard. A late homework loses 20% of the grade if turned in
up to one day late, and gets no credit thereafter. Homeworks must be
turned in, in one of two ways:
- in person, during the scheduled labs, or
- by email to tp_250@hawaii.edu and
also hardcopy (printout) of your code
- quizzes (25% of the grade) -- 10-minute quizzes that start at the
beginning of class. I will try to keep updated statistics of quiz and exam results.
- three exams and a final (each 12.5% of the grade)
Exams and quizzes may be taken early, if requested at least two weeks
before the scheduled time.
All quizzes and exams are closed books, closed notes unless
otherwise noted.
A cumulative score of 90% will guarantee an A in the course, 80% a
B, 60% a C, and 50% a D. Depending on the performance of the class as
a whole, I may grade more generously.
The textbook is "Data Abstraction and Problem Solving with Java --
Walls and Mirrors", by Frank Carrano and Janet Prichard
(Addison-Wesley, 2001). The textbook is available from the UH
bookstore.
The lectures are Tuesdays and Thursdays at 1:30pm in Ocean 114 (MSB 114).
Cheating Policy: any cheating will result in a grade of 0
for the assignment, quiz, or exam the first time it is detected, and a
grade of F for the course for any subsequent instance. There is to be
no collaboration whatsoever on homeworks or exams (you may study
together, but anything you turn in, must be entirely your own
intellectual contribution). As practicing computer scientists, you
will learn to work in groups, but don't try it in this class if you
want to pass.
Tentative Schedule
This schedule is subject to change.
Lectures notes are in HTML. I usually post notes no later than the
day before the lecture.
- Jan 9. Course overview and Introduction. Chapter 1.
Materials covered:
- course overview
- software development life cycle
- loop invariants
- Jan 11. Chapter 1.
Materials covered:
- Program optimality
- Running Time analysis
- Data Abstraction
- Modularity
- Other programming issues
- Homework 1 assigned, due Tuesday January 23rd
- Jan 16. Quiz 1 (covering Chapter 1). Chapter 2.
Materials covered:
- Infinite Mirrors
- recursive-valued methods: factorial
- recursive void methods: printing backwards
- counting rabbits: fibonacci
- counting k out of n
- Jan 18. Chapter 2.
Materials covered:
- Searching
- Binary Search
- k-th smallest item in an array
- Recursion and Efficiency
- Jan 23. Chapter 3.
Materials covered:
- building walls
- ADT specification:
- collections of data: add, remove, ask questions about the data
- the ADT List
- the ADT Sorted List
- designing the specification
- date ADT, appointment book ADT
- Homework 2 assigned, due Thursday February 1st
- Axioms
- Jan 25. Quiz 2 (covering Chapter 2 and the beginning of Chapter 3).
Chapter 3.
Materials covered:
- classes and objects
- class implementation
- inheritance, extended classes
- interfaces
- exceptions
- special methods:
- ADT List Implementation
- Jan 30. Chapter 4.
Materials covered:
- extending classes
- ADT List array implementation
- Linked Lists
- Object References -- in-class exercise
- resizable arrays
- linked list implementation
- linked list manipulation
- insertion and deletion
- Feb 1. Chapter 4.
Materials covered:
- linked list insertion and deletion
- linked list implementation of ADT list
- recursive linked list processing
- linked list variants
- keeping inventory
- exam review
- Homework 3 assigned, due Thursday February 15th
- Feb 6. Exam 1, covering Chapters 1-4.
- Feb 8. Chapter 5. Guest lecturer: David Nickles
(the regular instructor is out of town on this date)
Materials covered:
- 8-queens (n-queens) problem
- recursive solution
- backtracking
- grammar representations
- simple languages: palindromes, An Bn
- Feb 13. Chapter 5.
Materials covered:
- algebraic expressions
- prefix and postfix expressions
- recognizing prefix expressions
- infix expressions
- towers of Hanoi problem and solution
- proofs about programs using mathematical induction:
- correctness of factorial
- cost of towers of Hanoi
- Feb 15. Quiz 3 (covering Chapter 5) Chapter 6.
Materials covered:
- Stack ADT
- Stack applications
- Stack implementations
- arithmetic expressions
- recursion and iteration
- exhaustive search
- Feb 20. Chapter 7.
Homework 4 assigned, due Thursday March 1st
Materials covered:
- Queue Operations
- Queue Implementations
- Queue Applications
- Simulation
- Feb 22. Chapter 8.
Materials covered:
- inheritance
- packages
- abstract classes
- interfaces
- iterators
- Feb 27. Quiz 4 (covering Chapters 6 and 7).
Review for Exam 2.
Materials covered:
- Recursive Problem Solving
- Stacks
- Queues
- Class Relationships
- Mar 1. Exam 2, covering Chapters 5-8.
- Mar 6. Chapter 9.
Materials covered:
- program speed and memory efficiency
- Big-O notation
- growth rates
- efficiency of binary search
- sorting algorithms:
- selection sort
- bubble sort
- insertion sort
- Homework 5 assigned
- Mar 8. Chapter 9.
Materials covered:
- insertion sort
- recursive sorting:
- radix sort
- Mar 13. Chapter 9.
Materials covered:
- quick sort
- radix sort
- trees
- Mar 15. Quiz 5 (covering Chapter 9). Chapter 10.
Materials covered:
- binary tree representations
- binary tree classes
- binary tree traversal
- Homework 6 assigned, due April 3rd.
- Mar 20. Chapter 10.
Materials covered:
- definition and ADT
- inorder traversal
- search, insertion, deletion
- cost of operations
- Mar 22. Chapter 11.
Materials covered:
- table operations
- keyed items
- table implementations
- Apr 3. Quiz 6 (covering Chapter 10 and the
first part of Chapter 11). Chapter 11.
Materials covered:
- heaps
- priority queues
- priority queue implementation using heaps
- heapsort
- Homework 7 assigned, due April 10th.
- Apr 24. Chapter 12.
Materials covered:
- balanced search trees
- 2-3 trees
- 2-3-4 trees
- red-black trees
- AVL trees
- hashing
- Apr 26. Chapter 12. Also, review for Exam 3. At the end,
take-home Exam 3 handed out, covering Chapters 9-11. Exam will
be due on Monday April 30, by 3pm, in the instructor's office, POST
303B. (If the instructor is not present, please give to Tracy
Sonomura in the ICS main office, POST 317, open 9-12 and 1-4pm but the
exam is due by 3pm).
Materials covered:
- Apr 29. Chapter 13.
Materials covered:
- general concepts
- graph representation
- graph traversal: depth-first, breadth-first
- garbage collection
- May 1. Chapter 13.
Materials covered:
- topological sorting
- spanning trees
- shortest paths
- Euler circuit
- Hamiltonian circuit
- Planar graphs and graph coloring
- May 3. Quiz 7 (covering Chapters 12 and 13). Chapter 14.
Evaluation Forms (please bring a number 2 pencil).
Materials covered:
- Hamiltonian circuit
- Planar graphs and graph coloring
- External Data
- May 6. Review of the entire course. At the end, optional quiz
(on the material for the entire course), with the score replacing the
score of your lowest quiz.
Materials covered:
- Java
- software engineering and ADTs
- recursion
- arrays, linked lists, hash tables
- trees
- recursive problem solving
- stacks, queues
- sorting
- graphs
- May 10, 12 noon -- 2pm. Final Examination, covering the
entire course but with slightly more emphasis on the material since
Exam 3.
Strike information
Apr 5th - Apr 17th.
Original (pre-strike) schedule follows
- Apr 5. Chapter 12.
Materials covered:
- balanced search trees
- 2-3 trees
- 2-3-4 trees
- red-black trees
- AVL trees
- hashing
- Apr 10. Chapter 12.
Also, review for Exam 3.
- Apr 12. Exam 3, covering Chapters 9-11.
- Apr 17. Chapter 13.
- Apr 19. Chapter 13.
- Apr 24. Quiz 7 (covering Chapters 12 and 13). Chapter 14.
- Apr 26. Chapter 14.
- May 1. Review of the entire course.
- May 10, 12 noon -- 2pm. Final Examination, covering the
entire course but with slightly more emphasis on the material since
Exam 3.
Feedback
I appreciate feedback! Please send me mail at esb@hawaii.edu with any comments, or
if you notice any mistakes, or if you have problems accessing any of
these links.
If you wish to send me anonymous feedback, I have set up a page to do just that. The comments you
make using this page are mailed to the same address as above, but
without showing your name. The comments and any responses will be
posted here.
Miscellaneous
Complete documentation of the Java 1.2 API
("Java 2 API").
Philip Johnson's
Java coding standards
I have taught this class in Fall 2000 and Fall 1999. The
web
page for the Fall '00 course has links to my notes. The
web
page for the Fall '99 course has links
to my notes and even to some of the quizzes.