This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2023fall.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
https://www2.hawaii.edu/~esb/2023fall.ics211/
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 lectures for this class are in the Business Administration
building (BusAd) room A101, every Monday and Wednesday 1:30-2:45pm.
The labs for this class are in the Pacific Ocean Science and Technology
building (POST) room 319:
- Section 1 (CRN 72479, TA Benjamin Strauss): every Tuesday and Thursday, 9am-10:15am
- Section 2 (CRN 74256, TA Benjamin Strauss): every Tuesday and Thursday, 1:30pm-2:45pm
- Section 3 (CRN 77403, TA Tyler Anderson): every Tuesday and Thursday, 3pm-4:15pm
- Section 4 (CRN 77405, TA Tyler Anderson): every Monday and Wednesday, 4:30pm-5:45pm
Office hours and contact information for the instructor and the TAs are available in the Resources on Laulima.
The textbook for the course is
"Data Structures: Abstraction and Design Using Java", Third Edition, by Elliot B. Koffman and Paul A. T. Wolfgang, Wiley 2017. The book is accessible online from Laulima, in the left-hand menu bar as "Vital Source for UH Manoa IDAP".
Students may also wish to consider looking at these freely accessible books:
Schedule
This schedule is subject to change.
- Mon, Aug 21. Course introductions, course summary.
Presentation
- introductions
- course overview
Some links for this class:
homework 1 (Java Review) assigned, due Saturday August 26th at 11:55pm.
- Wed, Aug 23. 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 2 (Java Challenges) assigned, due Saturday September 2nd at 11:55pm.
- Mon, Aug 28. Java Review, continued. Java Objects Review. Interfaces, super- and sub-classing, object-oriented programming, Java classes and objects, wrappers, exceptions. Textbook Sections 1.1-1.2, A6-A7, A11.
Presentation
- modulo (%) operator
- if statements, booleans, comparisons
- loops: while and for
- Java Interfaces
- Class hierarchy and inheritance
- Wed, Aug 30. 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 and overloading, polymorphism
- Abstract classes
- Casting and instanceof/getClass
- Class Object
- Exception class hierarchy
Some links for this class:
homework 3 (Class Hierarchies) assigned, due Saturday September 9th at 11:55pm.
- Mon, Sep 4. Labor day holiday.
- Wed, Sep 6. 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
Some links for this class:
homework 4 (Sorting) assigned, due Saturday September 16th at 11:55pm.
- Mon, Sep 11. Algorithm Analysis and Big-O Notation. Sections 2.1 and 8-8.4 in the book.
Presentation
- insertion sort
- summary: selection sort, bubble sort, insertion sort
- introduction to algorithm analysis
- Big-O notation
- figuring out big-O for sorting algorithms
- logarithms
- Wed, Sep 13. Recursion. Sections 5-5.3 in the book.
Presentation
Some links for this class:
homework 5 (Recursion) assigned, due Saturday September 30th at 11:55pm.
- Mon, Sep 18. Recursion. Sections 5.4-5.6 in the book.
Presentation
- fibonacci numbers
- problem solving with recursion
- towers of hanoi
- backtracking
- garbage collection
Some links for this class:
- Wed, Sep 20. Exam review. Chapters 1-2, 5-5.6, 8-8.4, and Appendix A.
Presentation
- Java review and Java references
- interfaces, class hierarchy, abstract classes, inheritance
- selection sort, bubble sort, insertion sort
- binary search
- runtime analysis
- recursion
- Mon, Sep 25. Midterm Exam 1.
- Wed, Sep 27. 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:
Note that
invariants are not in the book.
homework 6 (Array Lists) assigned, due Saturday October 7th at 11:55pm.
- Mon, Oct 2. Analysis and implementation of array lists. Linked Lists.
Presentation
- Invariants
- Array list Implementation
- Big-O Analysis of array list efficiency
- Linked Lists
- Wed, Oct 4. Linked lists, with analysis and implementation. Section 2.5 in the book. Doubly-linked lists. Sections 2.6-2.9 in the book.
Presentation
- linked list removal
- linked list runtime analysis
- different kinds of linked lists:
singly-linked lists,
circular linked lists,
doubly-linked lists
- looping over collections
- iterators
Some links for this class:
homework 7 (Sorted Linked List) assigned, due Saturday October 14th at 11:55pm.
- Mon, Oct 9. Iterators. Section 2.7 in the book.
Presentation
- looping over collections
- iterators
Some links for this class:
- Wed, Oct 11. The Collection Interface. Section 2.10 in the book.
Presentation
- the ListIterator interface
- the Collection interface
- parametrized classes and interfaces
- the Collection hierarchy
- Sets and Maps
- the AbstractCollection hierarchy
Some links for this class:
homework 8 (Iterators) assigned, due Saturday October 28th at 11:55pm.
- Mon, Oct 16. Testing and Debugging, Chapter 3 in the book.
Presentation
- reminder of binary search
- testing and debugging
- StringBuilder
Some links for this class:
- Wed, Oct 18. Stacks. Sections 4.1-4.4 in the book.
Presentation
- stacks
- method signatures
- array stack implementation
- linked stack implementation
- stack applications
- infix, prefix, and postfix expressions
Some links for this class:
- Mon, Oct 23. Exam review. Chapters 2, 3, 4-4.4, and
invariants.
Presentation
- Collection, List, ArrayList, LinkedList
- parametrized types
- iterators
- invariants
- stacks
- infix expression evaluation
- reminders: recursion, runtime analysis, binary search
- Wed, Oct 25. Midterm exam 2.
homework 9 (Stack Calculator) assigned, due Saturday November 4th at 11:55pm.
- Mon, Oct 30. Stacks and stack applications. Sections 4-4.4 in the book.
Presentation
- post-exam review
- infix, prefix, and postfix expressions
- Wed, Nov 1. Queues. Sections 4.5-4.8 in the book.
Presentation
- queues
- queue interface
- queue applications
- queue implementation: array queue
- queue implementation: linked queue
- application of queues: data structure traversal
Some links for this class:
homework 10 (Queue and Scheduler) assigned, due Saturday November 11th at 11:55pm.
- Mon, Nov 6. Queue applications. Section 4.6 in the book.
Presentation
- application of queues: simulation of customer queue
- random numbers
- trees
- expression trees
- binary search trees
Some links for this class:
- Wed, Nov 8. Trees and implementation of trees. Sections 6.1-6.3 and 6.5 and 6.7 in the book.
Presentation
- binary tree traversal
- binary search tree algorithms: add, remove, traverse
- binary node class
Some links for this class:
homework 11 (Binary Search Trees) assigned, due Saturday November 18th at 11:55pm.
- Mon, Nov 13. Huffman Trees. Section 6.7 in the book.
Presentation
- Huffman trees
- Huffman coding
- implementation of Huffman coding
- Wed, Nov 15. Hash tables. Sections 7-7.4 in the book.
Presentation
- hash tables
- hash functions
- chained hashing
- open addressing
Some links for this class:
- two hash functions: from 2006 and from 2011.
homework 12 (Hash Table) assigned, due Saturday November 25th at 11:55pm.
- Mon, Nov 20. Hash Tables. Lambda Expressions, Section 6.4 in the book.
Presentation
- hash tables
- open addressing
- lambda expressions
- Wed, Nov 22. Heaps and priority queues. Section 6.6 in the book.
Presentation
- heaps
- heap storage in arrays
- heap insertion and removal
- priority queues
homework 13 (Graph Traversal) assigned, due Wednesday December 6th at 11:55pm.
- Mon, Nov 27. Reminder of sorting so far. Merge Sort, Shell sort.
Sections 8.5 and 8.6, in the book.
Presentation
- reminder: selection, bubble, and insertion sort
- merge sort
- shell sort
Some links for this class:
- Wed, Nov 29. Merge Sort, Heap Sort, Quicksort. Sections 8.5, 8.8, 8.9 in the book.
Presentation
Some links for this class:
- Mon, Dec 4. Course review.
Presentation
- exam 1 material: Java, 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
- Wed, Dec 6. Course review, continued.
- Fri, Dec 15, 2:15pm-4:15pm, final
exam, in the usual location of the lecture, BusAd A101.
Organization
Generally speaking, the instructor (see Laulima resources for office
hours) is responsible for the lectures, and the TAs are responsible for
the labs. The instructor assigns the homeworks and the TAs grade them.
The instructor grades lecture quizzes.
Homeworks are posted on this web site (usually) no later than Friday
each week and are due by 11:55pm on Saturday the following week (8 days later).
All assignments must be turned in on time. Assignments turned in
within 24 hours of the deadline (i.e. by 11:55pm on Sunday) will be
given a 10% (10-point) penalty. The first assignment will be posted by
Friday, August 25th and is due at 11:55pm on Saturday, September 2nd.
Assignments must turned in via Laulima. Contact your TA if you have
any questions about the assignments or how they are graded.
Grading
This course has weekly homework assignments, and quizzes to record
attendance and test knowledge of the material. Each of these must be
done individually by each student with no collaboration allowed, except
for those homework assignments that explicitly allow teamwork.
Quizzes are made available on paper at the beginning of class (you
are responsible for providing your own writing instrument), and must be
turned in at the assigned time.
- Assignments: 40%.
- Two midterms and the final, for a total of 30%.
- Attendance at lecture: 15%.
- Attendance at lab: 15%.
To accomodate the potential for covid or other emergencies affecting academic performance,
- the lowest 2 assignment grades will be dropped
- the lowest exam grade will be dropped
- up to 4 absences at lectures will not affect the student's grade
- up to 10 absences at lab will not affect the student's grade
- exams may be taken early, if requested at least one week before the scheduled time. Under no circumstances may an exam be taken late.
- if the instructor or either TA has to take time off for health
reason, the students must study the corresponding material on their own.
This is intended for use with covid or other emergencies. It need not
be justified, but will also not be extended in any way, so students
should not take advantage of it unless actually needed (or until the
end of the semester, whichever comes first).
Grading will use the standard cutoffs of
97% (A+), 93% (A), 90% (A-), 87% (B+), 83% (B), 80% (B-), 77% (C+),
73% (C), 70% (C-), 67% (D+), 63% (D), 60% (D-).
To get a good grade in ICS 211, students are expected to be able
to write simple Java programs under time pressure (and without help
from an IDE) on the quizzes, and more substantial Java programs on
the assignments. Practicing for the quizzes at home is encouraged.
Accomodations
If you feel you need reasonable accomodations because of the impact of
a disability, please (1) contact the Kokua (Disability Access) Program
at 956-7511 or in room 013 of the Queen Lili'uokalani Center for Student
Services, and/or (2) speak privately with the instructor to discuss your
specific needs. I will be happy to work with you and the Kokua program
to meet your access needs related to your documented disability.
Cheating
In this course, in completing their assignments and exams, students
may not use material from any source other than instructor- or TA-provided
material, including the textbook(s). Code must be written by the student,
not copied from the web, another student, or any other source. Any
violation of this is considered cheating. Quizzes and assignments
must be done individually, except for those homework assignments that
explicitly allow teamwork.
Anything a student turns in must be entirely that student's own
intellectual contribution. The instructor and TAs may check homeworks
using a specialized tool designed to detect cheating.
In the past, TAs and the instructor have detected cheating, and
student grades have been affected. Don't do it!!!
In general, cheating means presenting the work of somebody else as
one's own, or providing one's work to somebody else to help them cheat.
Policy: any cheating will result in a grade of 0
for the assignment or quiz the first time it is detected, and a grade
of F for the entire course for any subsequent instance. Any instance
of cheating may also be reported to the office of the Dean of Students,
possibly resulting in disciplinary action against the student.
The
Student Conduct Code has more details on both impermissible behavior
(see for example section IV.B.1 of the policies, Acts of dishonesty)
and possible disciplinary sanctions.
Goals of this Course and Learning Objectives
From the UH
catalog:
ICS 211 Introduction to Computer Science II (4)
Reinforce and strengthen problem-solving skills using abstract data types and introduce software development practices. Emphasize the use of searching and sorting algorithms and their complexity, recursion, object-oriented programming, and data structures. Pre: 111 or consent.
Student Learning Objectives for the Fall 2023 ICS 211 are:
- learn and implement standard data structures, including linked lists, stacks, queues, hash tables, and binary trees.
- learn and implement standard algorithms for sorting and searching and tree traversal
- learn and use the basics of algorithm analysis and complexity, including big-O notation
- be exposed to software engineering techniques such as: separation of definition and implementation, encapsulation, and information hiding
- write substantial Java programs, when appropriate reusing previously created classes, eventually writing programs requiring three or more classes. Overall, students can expect to program over 1,000 lines of Java code over the course of the semester.
- understand Java collection classes and the basics of memory management
- appropriately use exception handling and recursion in Java
- learn to write algebraic equations in prefix, infix and postfix notation
- learn preorder, inorder and postorder tree traversal
Learning to program in Java is only one of the goals for this course, but may be the most important: fluency in Java is needed to apply many of the other tools and information presented in this course as well as in subsequent ICS courses. The homeworks and exams assume students are comfortable programming in Java at the level required for this course. Students who are not comfortable with programming, as determined either by individual difficulty or by lack of overall success on homework assignments, should consult with the TAs or instructor for additional (optional) assignments to help them come up to speed.
University of Hawaiʻi at Mānoa (UHM) TITLE IX SYLLABUS INFORMATION
UHM is committed to providing a learning, working and living environment that promotes personal integrity, civility, and mutual respect and is free of all forms of sex discrimination and gender-based violence, including sexual assault, sexual harassment, gender-based harassment, domestic violence, dating violence, and stalking. If you or someone you know experiences any of these, UHM has staff and resources on campus to support and assist you. Staff also can direct you to resources in the community. Here are some:
If you wish to remain ANONYMOUS, speak with someone CONFIDENTIALLY, or would like to receive information and support in a CONFIDENTIAL setting, contact: (* Confidential Resource)
Counseling & Student Development Center* (808) 956-7927 • manoa.hawaii.edu/counseling/
Office of Gender Equity* (808) 956-9499 • manoaadv@hawaii.edu
Lesbian, Gay, Bisexual, Transgender, Queer (LGBTQ+) Center (808) 956-9250 • manoa.hawaii.edu/lgbt
Respondent Support (808) 956-4392 • PAUrs@hawaii.edu
Student Parents at Mānoa (SP@M)* (808) 956-8059 • manoa.hawaii.edu/studentparents/
UH Confidential Advocacy* • advocate@hawaii.edu
University Health Services Mānoa* (808) 956-8965 • hawaii.edu/shs/
http://www.manoa.hawaii.edu/titleix/resources.html#confidential
If you wish to REPORT an incident of sex discrimination or gender-based violence including sexual assault, sexual harassment, gender-based harassment, domestic violence, dating violence or stalking as well as receive information and support, contact:
Dee Uwono
Director and Title IX Coordinator
Hawaiʻi Hall 124
2500 Campus Road
Honolulu, HI 96822
(808) 956-2299
t9uhm@hawaii.edu
As a member of the University faculty, I am required to immediately report any incident of sex discrimination or gender-based violence to the campus Title IX Coordinator. Although the Title IX Coordinator and I cannot guarantee confidentiality, you will still have options about how your case will be handled. My goal is to make sure you are aware of the range of options available to you and have access to the resources and support you need. For more information regarding sex discrimination and gender-based violence, the University’s Title IX resources and the University’s Policy, EP 1.204, go to: http://www.manoa.hawaii.edu/titleix/
Improvements
Any suggestions for improvement to this web page or to the course are welcome.