CS 261 University of Puget Sound Spring, 2020
 
Computer Science II
Abstract Data Types and their Implementations, Some Basic Algorithms,
Object-oriented Problem Solving, and Efficiency
 

Warning: This course is under development. Although the basic structure of this course is largely established, nothing on this Web site should be considered official or even possibly correct.
DO NOT MAKE PLANS BASED ON THE CONTENTS OF THIS SITE UNTIL JANUARY, 2020.

Tentative Class Schedule

Monday Tuesday Wednesday Friday
January 20

Martin
Luther
King, Jr.
Day
January 21 Unit 0: Intro. to Java and Object-oriented problem solving
  • Preliminaries
    • Introductions
    • Quick Course Overview
    • Home Page / Syllabus / Schedule
    • Clicker set up
  • Status Check—where are we really?
    • Class definition
    • Java packages
    • Java modules
    • static and non-static elements
    • public, protected, private access
    • enforcing assumptions (assert, pre-conditions)
    • exceptions
    • sorting algorithms?
  • Java Program Structure: Modules and Packages
  • The Eclipse programming environment
Demo:
Lab: Eclipse
January 22 Unit 0: Intro. to Object-oriented problem solving
  • The object-oriented paradigm
  • The Eclipse Programming Environment
Lab:
January 24 Unit 0: Intro. to Object-oriented problem solving
  • Exceptions
Reading:
Lab:
Homework Video:
January 27 Unit 0: Intro. to Object-oriented problem solving
  • Exceptions
Reading:
Lab:
January 28 Unit 1: Classes, Subclasses and Generalization
  • Classes
  • Subclasses
  • Inheritance
  • Polymorphism
Reading: Warm-up Examples:
Due: film response
January 29 In-class quiz
Unit 1: Classes, Subclasses and Generalization
Reading
  • K & W: Sections 1.1-1.3
Due: Entire Rational Class
January 31 In-class quiz
Unit 1: Classes, Subclasses and Generalization
Reading
  • K & W: Sections 1.1-1.3
Lab:
February 3 Unit 1: Classes, Subclasses and Generalization
  • Interfaces
  • Abstract Classes
  • Access Options (public, protected, Private)
Reading Warm-up Example:
Lab:
February 4 Unit 1: Classes, Subclasses and Generalization
Reading
  • K & W: Sections 1.1-1.4
Lab:
Due: Full lab on Generalization
February 5 In-class quiz
Unit 1: Utilizing objects and classes
  • The Exception Class Hierarchy
  • Javadocs
Reading:
February 7 Unit 2: Intro. to the analysis of algorithms
  • Asymptotic Analysis
  • Linear Search
Reading:
  • K & W: Section 2.1
Homework Video:
  • Overview of sorting algorithms
  • Film: Sorting Out Sorting
    Response (at least 6 sentences) due Tuesday, February 11 (collaboration ok, but write-ups may be from no more than 2 authors)
February 10 Unit 2: Intro. to the analysis of algorithms
  • Selection Sort
  • Insertion Sort
Reading:
February 11 Unit 2: Intro. to the analysis of algorithms
  • Merge Sort
  • Gathering experimental timing data
Reading:
February 12 In-class quiz
Unit 3: Interfaces and Abstract Classes
  • Interfaces
  • Generics
Lab:
February 14 Pause for Breath
February 17 Unit 3: Interfaces and Abstract Classes
  • Abstract Classes
  • Accessing Fields and Methods
Reading:
Lab:
February 18 Unit 4: ArrayLists
  • ArrayLists
  • ArrayList implementation, Part 1
    • Generics
    • add method
    • remove method
    • Efficiency considerations
Reading:
Lab:

Due: Supplemental Problem 1 (done individually—no collaboration!)
February 19 In-class quiz
Unit 4: ArrayLists
  • ArrayList implementation, continued
Lab:
February 21 Unit 4: ArrayLists
  • ArrayLists
    • Generics
    • Efficiency
Reading:
  • Build on previous work with ArrayLists
Lab: Complete work on previous labs:
February 24 Unit 5: Linked Lists
  • [Singly-] Linked Lists in Java
    • head, tail operations
    • list traversals
Reading:

Due: lab on Implementing ArrayLists
February 25 Unit 5: Linked Lists
  • [Singly-] Linked Lists in Java
    • List insertion at front of list
Lab:
February 26 In-class quiz
Unit 5: Linked Lists
  • [Singly-] Linked Lists in Java
    • List insertion and deletion anywhere in a list
Lab:

Due: Lab on ArrayList Timings
February 28 Unit 5: Linked Lists
  • Doubly-linked Lists
Reading:
Lab:
March 2 Unit 5: Linked Lists
  • Doubly-linked Lists, continued
Reading:
Lab:

Due: Full lab on Linked Lists
March 3 Unit 7: Software Development
  • Formal Methods
    • Assertions
    • Loop Invariants
Reading:
March 4 In-class quiz
Unit 7: Software Development
  • Formal Methods
    • Loop invariants, continued
    • Pictorial Loop Invariants
    • Binary Search
Lab:
March 6 Unit 7: Software Development
  • Pictorial Loop Invariants
  • Array Partition
Reading: included in Lab
Lab:
March 9 Unit 7: Software Development
  • Formal Methods
    • Loop Invariants
    • Array Partition
  • Stubs and Drivers
Reading: included inlab
Lab:
March 10
Lab Time!!!


Pause for Breath
March 11

In-class Test (Wednesday, March 11)

In-class Test

In-class Test

In-class Test
March 13 No Class today
Due: Full lab on Pictorial loop invariants
(No late penalty as long as lab submitted by Wednesday, March 25)
March 16 Spring Recess March 17 Spring Recess March 18 Spring Recess March 20 Spring Recess
March 23


Mid-semester

Planning
March 24

More

Mid-semester

Planning
March 25 Unit 9: Recursion
  • Mid-semester Restart
  • Partition Problem, Review
  • Using Partitions to compute Medians
  • Quicksort (using Partitions
Reading: included inlab
March 27 Unit 9: Recursion
  • Recursive Algorithms
  • Quicksort
  • More timing of algorithms
Reading:
Lab:
March 30 In-class quiz
Unit 9: Recursion
  • Comparing sorting algorithms
Reading:
  • K & W: Sections 8.6
Lab:
March 31 Unit 5: Linked Lists
  • Merge Sort for Linked Lists
  • Recursive Definition
Reading:
  • Merge Sort reading included in first lab today
  • K & W: Sections 5.2, 5.4
Reading: Included in today's lab
Labs:
April 1 Unit 9: Recursion
Reading:
  • K & W: Sections 5.2, 5.4
Lab:
April 3 Unit 9: Recursion
  • Problem Solving with Recursion and Backtracking
Reading:
  • K & W: Sections 5.5-5.6
Lab:

Due: Full lab on Quicksort and more algorithmic timing
April 6 Unit 8: Abstract Data Types: Stacks and Queues
  • Abstract Data Types (ADTs)
  • Stacks
  • Implementation with Arrays
Reading:
April 7 In-class quiz
Unit 8: Abstract Data Types: Stacks and Queues
  • Stacks
  • Implementation with Linked Lists
Reading:
  • K & W: Sections 4.3-4.4
  • Stacks

Due: Full lab on Practice with Recursion
April 8 Unit 8: Abstract Data Types: Stacks and Queues
  • Queues
  • Implementation with Arrays
Reading:
  • K & W: Sections 4.5, 4.7
  • Queues
April 10 Unit 8: Abstract Data Types: Stacks and Queues
  • Queues
  • Implementation with Linked Lists
Reading:
Lab:
April 13 Unit 5: Linked Lists
  • Circular Linked Lists
Reading:
Lab:

Due: Supplemental Problem 2 (done individually—no collaboration!)
April 14 In-class quiz
Unit 5: Linked Lists
  • More practice with Stacks and Queues
  • Circular Linked Lists
Reading:
Lab:
April 15 Unit 10: Tree Structures
  • Trees
  • Tree Traversals
Reading:
April 17 Unit 10: Tree Structures
  • Binary Search Trees
Reading:
Lab:

Due: Full lab on Queues (singly-linked list implementation)
April 20 Unit 10: Tree Structures
  • More binary search trees
Lab:
April 21 In-class quiz
Unit 10: Tree Structures
  • Properties of binary trees
    • Height
    • Height-balanced
    • Weighted height
    • Testing search tree property
    • Nodes at a given level
Reading:
  • TBD
Lab:
April 22 Pause for Breath
Lab/Discussion:
April 24 Pause for Breath
Lab/Discussion:
  • Review/Rethinking of Lists

Due: Full lab on Binary search trees
(Revisions allowed, without penalty, through Tuesday, April 28)
April 27 Unit 11: Heaps, Priority Queues, and Heap Sort
  • Binary Heaps
  • Heaps Operations
  • Implementation of Heaps
Reading:
  • K & W: Section 6.6
Lab:
  • Lab on heaps (initial work) (Full lab required—due Monday, May 4)
April 28 In-class quiz
Unit 11: Heaps, Priority Queues, and Heap Sort
  • Priority Queues
Reading:
  • K & W: Section 6.6
Lab:
  • Lab on heaps (continued) (Full lab required—due Monday, May 4)
April 29 Unit 11: Heaps, Priority Queues, and Heap Sort
  • Heap Sort
  • Analysis
Reading:
  • K & W: Section 8.8
Lab:
  • Lab on heaps (concluded) (Full lab required—due Monday, May 4)

Due: Supplemental Problem 2, revised (done individually—no collaboration!)
Supplemental Problem 3—available for extra credit
May 1 Unit 12: Sets, Maps, and Hash Tables
  • Review of Binary Search Trees
  • Sets and Maps (Optional)
Reading:
  • W & K: Sections 7.1-7.2 (Optional)
Lab:
May 4 Unit 12: Sets, Maps, and Hash Tables
  • Hashing and Hash Tables
    • Hash functions and Rehashing
    • Open hash tables
    • Closed hash tables
    • Chaining
Reading:
  • W & K: Section 7.3, 7.4-7.6
Lab:

Due: Full Lab on heaps
May 5 In-class quiz
Iterators
  • Hash Tables, Continued
  • Linked Lists and Iterators (Optional)
Reading
  • W & K: Section 7.3, 7.4-7.6
  • W & K: Section 2.7-2.8—Iterators (Optional)
Lab
May 6 Course review
  • Semester wrap-up (Wednesday, May 6)
May 8 Reading Period, Friday, May 8
created 24 June 2019
revised Summer-Fall 2019
refined Winter/Spring 2020
updated 23 March 2020
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.