CS 261: Computer Science II  (Fall 2019)

Instructor: David Chiu
Meeting Time: MWF 11:00-11:50 in TH 399 and Tue 10:00-11:50 in TH 409
Office: Thompson Hall 390 B
Office Hours: Open door, or by appointment
Tutoring: TBD
Canvas: canvas.pugetsound.edu


The course syllabus contains general information on course topics, grading procedures, and classroom policies.


  • Koffman and Wolfgang. Data Structures: Abstraction and Design Using Java. 2nd edition or higher. (Required)

Homework Assignments


Course Schedule (Tentative)

Week 1 (Reading: Chap 1)

Mon 09/02Tue 09/03
Lab 1 due
Wed 09/04Fri 09/06 etc.

Labor Day (No Class)

Introductions and Review Lab

Inheritance: motivation, abstraction

Inheritance (cont.): this(), super(), adding Goats

Code: Better Farm

Week 2

Mon 09/09Tue 09/10
Lab 2 due
Wed 09/11Fri 09/13
Hwk 1 due

Polymorphism: variables as boxes; the Object class

(Inheritance Lab)

Lab review; the Object class, instanceof, down-casting, method overriding

Polymorphism: dynamic method dispatch

Code: Method Dispatch

Week 3

Mon 09/16Tue 09/17
Lab 3 due
Wed 09/18Fri 09/20 etc.

Abstract classes

(Abstract Class Lab)

Interfaces and implements; ternary operator

Multiple implementation, Comparable<T>

Code: ShapesManager
Code: Controllable Interface

Week 4 (Reading: Chap 2.1)

Mon 09/23Tue 09/24Wed 09/25
Hwk 2 due
Fri 09/27 etc.

Finish Comparable LibraryBook; Start exceptions

(Interface Lab)

Exceptions: throwing, catching

Exceptions: checked vs. unchecked, customization

Code: Exception

Week 5 (Reading: Chap 2.2-2.4)

Mon 09/30Tue 10/01Wed 10/02Fri 10/04 etc.


(Exception Lab)

Big-O (cont.)

Lists: List interface, ArrayList: Under the hood

Code: Pair (Generics)
Code: MyArrayList

Week 6 (Reading: Chap 2.5-end)

Mon 10/07Tue 10/08Wed 10/09Fri 10/11 etc.


Midterm Exam I

ArrayList: Under the hood

Singly linked lists: Inner node class, addFirst()

Review Guide 1
Code: LinkedList

Week 7 (Reading: Chap 4.1-4.4)

Mon 10/14Tue 10/15Wed 10/16Fri 10/18 etc.

Singly linked lists: addAfter(), add(), removeFirst()

(Linked Lists lab)

Linked list optimizations; Start Queues

Queue implementation; start Priority Queues

Code: ListQueue
Code: PriorityQueue (Naive)

Week 8 (Reading: Chap 4.5-4.7. Start Chap 5.1-5.2)

Mon 10/21Tue 10/22Wed 10/23Fri 10/25 etc.

Fall Break

(Queue lab)

Finish priority queue; Start Stack

Stack applications

Code: Stack
Code: Stack Examples

Week 9 (Reading: Chap 5.3-5.5; Start Chap 6.1-6.3)

Mon 10/28Tue 10/29Wed 10/30Fri 11/01 etc.


(Stack Lab)

Recursion (cont.)

Recursion (cont.)

Code: Recursion Examples
Code: Recursive List

Week 10 (Reading: Chap 6.2, 6.4)

Mon 11/04Tue 11/05Wed 11/06Fri 11/08 etc.

Trees and BinaryTree: implementation, traversal

(Recursion Lab)

BST: height proof, contains(), add()

BST: add() cont., remove()

Code: BST

Week 11 (Chap 7.2)

Mon 11/11Tue 11/12Wed 11/13Fri 11/15 etc.


Midterm Exam II

Heaps: Min-Heap, percolate up/down; HeapSort

Heaps (cont.): Heap-based PriorityQueue; Start Set

Review Guide 2 (Sol, Code)
Code: Min-Heap
Code: PriorityQueue

Week 12 (Chap 7.2-7.6)

Mon 11/18Tue 11/19Wed 11/20Fri 11/22 etc.

Start Maps

(BST Lab)

HashMaps: open addressing

HashMap: Chaining

Code: ListMap

Week 13 (Chap 8.1-8.3)

Mon 11/25Tue 11/26Wed 11/27Fri 11/29 etc.


(Map lab)

Code: Sorting

Week 14 (Chap 8.4, 8.6, 8.9)

Mon 12/02Tue 12/03Wed 12/04Fri 12/06 etc.

Sorting: insertion sort

Work Day

Sorting: merge sort

Sorting: quicksort

Week 15

Mon 12/09Tue 12/10Wed 12/11Fri 12/13 etc.


(Sorting lab)


Reading period


Mon 12/16Tue 12/17Wed 12/18Fri 12/20 etc.

Final Exam 12-2p

Review Guide 3 (Sol, Code)

   Department of Mathematics and Computer Science
University of Puget Sound
1500 N. Warner St
Tacoma, WA 98416