This page will be removed on August 6th 2026. Please update your links to refer to https://esb.ics.hawaii.edu/2023spring.ics211/index.html instead.
Introduction to Computer Science II, ICS 211
This page is
http://www2.hawaii.edu/~esb/2023spring.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 82009), (see below for TA): every Tuesday and Thursday, 9am-10:15am
- Section 2 (CRN 82851), TA Tyler Anderson: every Tuesday and Thursday, 1:30pm-2:45pm
- Section 3 (CRN 85465), TA Pauline Wu: every Tuesday and Thursday, 3pm-4:15pm
- Section 4 (CRN 89298), TA Taryn Takebayashi: every Tuesday and Thursday, 4:30pm-5:45pm
Section 1 will have all three TAs: Taryn Takebayashi from January 9th to February 12th, Pauline Wu from February 13th to March 26th, and Tyler Anderson
from March 27th.
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, Jan 9. Course introductions, course summary.
Presentation
- introductions
- course overview
Some links for this class:
homework 1 assigned, due Friday January 20th at 11:55pm.
- Wed, Jan 11. 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 assigned, due Friday January 27th at 11:55pm.
- Mon, Jan 16. Martin Luther King Day holiday.
- Wed, Jan 18. 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
- creating and throwing exceptions
- Java Interfaces
- Class hierarchy and inheritance
- Mon, Jan 23. Method overriding, overloading, and polymorphism, abstract classes, casting, exception class hierarchy. Sections 1.3-1.6 in the book.
Presentation
- Method overriding and overloading, polymorphism
- Abstract classes
- Casting and instanceof/getClass
- Class Object
- Exception class hierarchy
Some links for this class:
- Wed, Jan 25. 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 3 assigned, due Friday February 3rd at 11:55pm.
- Mon, Jan 30. 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
- Wed, Feb 1. 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 4 assigned, due Friday February 10th at 11:55pm.
- Mon, Feb 6. Analysis and implementation of array lists. Linked Lists.
Presentation
- Invariants
- Array list Implementation
- Big-O Analysis of array list efficiency
- Linked Lists
- Wed, Feb 8. 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 5 assigned, due Friday February 17th at 11:55pm.
- Mon, Feb 13. Iterators. Section 2.7 in the book.
Presentation
- looping over collections
- iterators
Some links for this class:
- Wed, Feb 15. The Collection Interface. Section 2.10 in the book.
Presentation
- the Collection interface
- parametrized classes and interfaces
- the Collection hierarchy
- Sets and Maps
- the AbstractCollection hierarchy
Some links for this class:
homework 6 assigned, due Friday March 3rd at 11:55pm.
- Mon, Feb 20. Presidents' Day holiday.
- Wed, Feb 22. Exam review. Chapters 1-2, 5.3, 8-8.4.
Presentation
- Java review and Java references
- Interfaces, Class Hierarchy, Abstract Classes, Inheritance
- Collection, List, ArrayList, LinkedList, type parameters
- Selection sort, Bubble sort, Insertion sort
- Binary Search
- runtime analysis
- iterators
- invariants
- Mon, Feb 27. Midterm Exam 1.
- Wed, Mar 1. Binary Search. Section 5.3 in the book. Testing, Chapter 3 in the book.
Presentation
- linear search
- binary search
- implementation of binary search
- runtime analysis
- testing
homework 7 assigned, due Friday March 10th at 11:55pm.
- Mon, Mar 6. Stacks. Sections 4.1-4.4 in the book.
Presentation
- runtime analysis of binary search
- testing
- StringBuilder
- stacks
- method signatures
- array stack implementation
- linked stack implementation
Some links for this class:
- Wed, Mar 8. Stacks and stack applications. Sections 4-4.4 in the book.
Presentation
- stacks
- method signatures
- array stack implementation
- linked stack implementation
- stack applications
- infix, prefix, and postfix expressions
homework 8 assigned, due Friday March 24th at 11:55pm.
- Mar 13-17. Spring Recess
- Mon, Mar 20. Queues. Sections 4.5-4.8 in the book.
Presentation
- infix, prefix, and postfix expressions
- queues
- queue interface
- queue applications
- queue implementation: array queue
- queue implementation: linked queue
Some links for this class:
- Wed, Mar 22. Queue applications. Section 4.6 in the book. Recursion. Chapter 5 in the book.
Presentation
- application of queues: data structure traversal
- application of queues: simulation of customer queue
- random numbers
- recursion
- examples of recursion
- principles of recursion
Some links for this class:
homework 9 assigned, due Friday April 7th at 11:55pm.
- Mon, Mar 27. Kuhio Day holiday.
- Wed, Mar 29. Exam review.
Presentation
- recursion
- stacks
- queues
- infix, prefix, and postfix expressions
- binary search
- random numbers and simulation
- runtime analysis
- implementation
- Mon, Apr 3. Midterm exam 2, on Chapters 4 and 5.
- Wed, Apr 5. Recursion. Sections 5-5.3 in the book.
Presentation
Some links for this class:
homework 10 assigned, due Friday April 14th at 11:55pm.
- Mon Apr 10. 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, Apr 12. 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:
homework 11 assigned, due Friday April 21st at 11:55pm.
- Mon, Apr 17. Binary Search Trees. Huffman Trees. Section 6.7 in the book.
Presentation
- binary search trees
- tree traversal
- binary search tree algorithms: add, remove, get
- Wed, Apr 19. 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
homework 12 assigned, due Friday April 28th at 11:55pm.
- Mon, Apr 24. 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, Apr 26. 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 13 assigned, due Friday May 5th at 11:55pm.
- Mon, May 1. Reminder of sorting so far. Merge Sort, Quicksort. Sections 8.5, 8.6, 8.8, 8.9 in the book.
Presentation
- hash functions
- applications of hash tables
- reminder: selection, bubble, and insertion sort
- merge sort
- quick sort
Some links for this class:
- Wed, May 3. 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
- Fri, May 12, 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 the web site no later than Thursday each week
and are due by 11:55pm on Friday 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 Saturday) will be
given a 10% (10-point) penalty. The first assignment will be posted by
Thursday, January 12th and is due .t 11:55pm on Friday, January 20th.
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 assignment grade 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 2022 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.