Introduction to Computer Science II, ICS 211
This page is
http://www2.hawaii.edu/~esb/2011spring.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 given as X/Y, with X being the chapter in the
2010 version of the textbook (Data Structures: Abstraction and Design
Using Java, 2nd edition), and Y the chapter in the 2005 version of
the textbook (Objects, Abstraction, Data Structures and Design using
Java 5.0). So, for example, Section 1.5/3.4 refers to the section named
"Class Object and Casting", which is section 1.5 in the orange and blue
book, and section 3.4 in the green book.
- Tue, Jan 11, class introductions, course summary
Outline
- introductions
- course overview
Some links for this class:
- Thu, Jan 13. Appendix A/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 Jan 18. Sections 1.1-1.2/(1.2-1.3,3.1) in the book.
Outline
- Abstract Data Types
- Interfaces
- Class hierarchy and Inheritance
Some links for this class:
- Assignment 2, due Monday, January 24
-
ArbitraryPrecisionInterface.java, which may be implemented
in several different ways
-
ArbitraryPrecision.java, one of several possible implementations
-
Calculate.java, which does not
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
- Tue Jan 20. Sections (1.3-1.8,A6,A12)/(2.2-2.4,3.1-3.4,3.6,3.7)
in the book.
Outline
- Overriding methods, overloading methods, and polymorphism
- casting and instanceof/getClass
- Abstract classes
- class Object
- Exception class hierarchy
- Tue Jan 25. Sections (2-2.4)/(4-4.3,2.8) in the book.
Outline
- List interface
- Array lists
- runtime of programs
- algorithm efficiency
- Big-O notation
Some links for this class:
- Thu Jan 27. Sections (2.4-2.5)/(4.4,2.7-2.8) in the book.
Note that invariants are not in the new book.
Outline
- runtime of programs
- algorithm efficiency
- Big-O notation
- linked lists
- nodes
- linked list implementation
- invariants
Some links for this class:
- Tue Feb 1. Sections (2.5-2.6)/(4.4,2.7) in the book.
Outline
- linked lists
- nodes
- linked list implementation
- invariants
- doubly-linked lists
Some links for this class:
- Thu Feb 3. Sections (2.6-2.8)/(4.4-4.6) in the book.
Outline
- doubly-linked lists
- iterators
- iterator implementation
- the ListIterator interface
- the Java foreach statement
Some links for this class:
- Tue Feb 8. Sections (2.7-2.11)/(4.5-4.8, 2.5) in the book.
Outline
- iterator review
- iterator implementation
- the Java foreach statement
- testing
Some links for this class:
- Thu Feb 10. Exam review (chapter references are in the outline).
Outline
- Java review
- Abstract Data Types (ADTs)
- Interfaces
- Class Hierarchy, Abstract Classes, Inheritance
- Invariants
- Lists
- ArrayList
- LinkedList
- runtime analysis
- Iterators
- references
- Tue Feb 15. Exam 1, on all the material so far.
Assignment 5, due Monday, February 21
- Thu Feb 17. Sections (2.11, 3.1, 3.3)/(2.5, 5.1, 5.3) in the book.
Outline
- exam review
- testing
- stacks
- stack ADT
- method signatures
- array stack implementation
Some links for this class:
- Tue Feb 22. Sections (2.11, 3.1-3.3)/(2.5, 5.1-5.3) in the book.
Outline
- reasoning about programs
- stacks
- stack ADT
- method signatures
- stack implementations
- stack applications
Assignment 6, due Monday, February 28
- Thu Feb 24. Expressions and queues. Sections (3.4, 4-4.3)/(5.4, 6-6.3)
Outline
- infix, prefix, and postfix expressions
- queues
- queue interface
- queue applications
- queue implementation: array queue
- data structure traversal
- Tue Mar 1. Sections (4.3-4.5)/(6.3-6.4 -- this book does not have dequeues)
Outline
- queue implementation: array queue
- data structure traversal
- double-ended queues
- queue application: simulation of an airline counter
- random numbers
Assignment 7, due Monday, March 7
- Thu Mar 3. Sections (5-5.3)/(7-7.3)
Outline
- 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 Mar 8. Section (5.2, 5.3-5.5)/(7.2, 7.3-7.5)
Outline
- binary search
- more examples of recursion
- recursive linked list methods
- problem solving with recursion
Some links for this class:
- Thu Mar 10. Section (5.4-5.5)/(7.4-7.5)
Outline
- recursive linked list methods
- problem solving with recursion
- Tue Mar 15. Section (6-6.2)/(8-8.2)
Outline
- problem solving with recursion
- trees
- tree traversal
- binary search trees
- binary search tree algorithms: add, remove, traverse
- binary node class
Some links for this class:
- Thu Mar 17. Section (6.3-6.5)/(8.3-8.5)
Outline
- binary search trees
- binary node class
- binary search tree algorithms: add, delete, traverse
- binary tree traversal
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- priority queues implementation
Some links for this class:
- Tue Mar 29. Review for the exam. Chapter references are in the outline.
Outline
- exam review
- stacks
- queues
- infix, prefix, and postfix expressions
- random numbers
- recursion
- binary search
- binary trees
- binary search trees
- tree traversal
- runtime analysis
- ability to implement needed methods
- Thu Mar 31. Exam 2, on all the material so far, but emphasizing the
material since Exam 1.
- Tue Apr 5. Section (6.5)/(8.5)
Outline
- exam review
- implementing binary tree traversal
- heaps
- heap storage in arrays
Assignment 10, due Monday, April 11
- Thu Apr 7. Section (6.5-6.6)/(8.5-8.6)
Outline
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
- priority queues implementation
- Huffman coding
- Huffman trees
- Implementation of Huffman coding
- Tue Apr 12. Section (6.6, 7.3)/(8.6, 9.3)
Outline
- Huffman coding
- Huffman trees
- Implementation of Huffman coding
- hash tables
- hash functions
- open addressing
- chained hashing
Assignment 11, due Monday, April 18
- Thu Apr 14. Section (7.3)/(9.3)
Outline
- open address hashing
- chained hashing
Some links for this class:
- Tue Apr 19. Section (8-8.4)/(10-10.4)
Outline
- equality and comparisons in Java
- sorting
- selection sort
- bubble sort
- insertion sort
Some links for this class:
- Thu Apr 21. (no lab on Apr 22)
Outline
- bubble sort
- insertion sort
- merge sort
- heap sort
- quick sort
- Shell sort
- Tue Apr 26.
Outline
- heap sort
- quick sort
- Shell sort
No assignment this week.
- Thu Apr 28. Course review, part 1.
Outline
- quick sort
- Shell sort
- course review
- Tue May 3. Course review, part 2.
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, including
insertion, selection, bubble, mergsort, heapsort, quicksort
The final exam for this class is
scheduled for Thursday May 12th, 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.
For those who wish, the final exam may be taken on Monday May 9th,
12noon-2pm. Please contact the instructor as early as possible if
you wish to take the exam on Monday. The early final exam will be
different from the regularly scheduled final exam, but approximately
equally challenging.