SCHEDULE


Note: Instructors can now make notes to themselves that can be made visible on your laptop but invisible on kcs01.kzoo.edu if you put them in a tag with class 'instNotes' and if you set the display for instNotes to none on kcs01 and to something like initial on your laptop. Just be sure not to add/commit instructorNotes.css in either place, otherwise they won't be different.

IMPORTANT NOTE:The COMP210 schedule will be updated throughout the term! Check this space frequently for any changes or any updates.

If you want to see the old schedule, to have a sense of the workload and pace in previous terms, you can look at it here.

DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
Week 1
Monday
(M1)
Introduction / Syllabus
Intro to Data Structures
Review of Data Types

Code Reading exercise (in groups) and follow-up discussion
(Simplified COMP 150 code: PercolationApp, SlowPercolationController, completed VerticalPercolator. Pair up people who didn't take 150 with people who did.)
Study the Syllabus, especially the sections on Attendance, Assignments, and Collaboration and the Honor System. (Syllabus quiz on Friday.)
Write a paragraph or two for this week's Weekly Reflection about what you learned during the Code Reading exercise, whether about the code, the process of reading unfamiliar code, or your learning style. (Think of your weekly reflections this term as a Growth Journal; a chance to reflect on your growth in this course specifically, and as a student more generally.)
Wednesday
(W1)
Reading:
Read Chapter 1.2
Review:
DQ: Review
Polymorphism and Dynamic Binding; Review of the Big Ideas of Inheritance - 12 min
Are there any questions about the terms in DQ: Review?
Second Code Reading exercise
Similar to 1st reading exercise, but with 2 more classes and comments and good names restored. Serves as intro to refactoring exercise.
Review Inheritance, Dynamic Binding, Abstract Superclasses
Refactoring Code exercise
Turn on notifications for the Collaboration Center General channel in Teams, if you haven't done so already.
Complete Refactoring Code exercise
Friday
(F1)
Reading:
Read Syllabus to prepare for Syllabus Quiz
Read the beginning of the Geeks for Geeks page on the Model-View-Controller (MVC) Design Pattern, up to "Communication between the Components".
Review:
Video: Abstract Superclasses - 9.5 min (from COMP 150)
DQ: More Review
Syllabus Quiz
Are there any questions about the terms in DQ: More Review?

MVC Separation in Percolation
Model: Grid, SolidCell, percolating objects;
View: GUI and display classes in grid.jar;
Controller: main, PercolationController, and SlowPercolationController

Start Percolation Programming Project
Continue Percolation Programming Project

Your first Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M2
Due Before Monday:
Week 1 Weekly Reflection

Complete before Class: Try to do through the end of Testing Efficiency: Testing SlowPercolationController before class
Syllabus Quiz if forgot to do it earlier; could be group discussion
In-Class: ListPercolationController
Continue Percolation Programming Project
W2
Review Videos:
Arrays & ArrayLists - 9 min (slides)
Linear Search Animation, with Best/Worst Case Analysis - 5 min; analysis starts at 3:17
Binary Search Animation - 10 min

Read and consider the discussion questions in DQ: Percolation. We will talk about these in class.
Empirical analysis and Code analysis
Discuss the questions in DQ: Percolation
Review best/worst/average case analysis of linear and binary search
Linear vs Logarithmic vs N2 time complexity
Alyce deferred formal introduction of Big-Oh until Week 3
CRUD

Group Discussion: DQ: ArrayList Performance
Complete Percolation Programming Project
F2
Due on Kit:
Percolation Programming Project

Reading:
First 4 paragraphs of the Geeks for Geeks page on Abstract Data Types
Wikipedia entry on Java Interfaces
Oracle's page on What is an Interface?
Collections: Lewis and Chase 3.1 (pp. 30 - 33)
Conceptual Queue: Lewis and Chase 5.1 (pp. 98 - 99)
Interfaces and ADTs
Reading Class Documentation with Interfaces
Java Collection Classes
List Interface and ArrayList class
Queue ADT

Group Discussion: DQ: Queue as ArrayList
Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M3
Due Before Monday:
Week 2 Weekly Reflection

Reading:
Time Complexity
Reference Review
Intro to Linked Lists
Time Complexity: Big-Oh Notation
Illustrations of Growth Functions from Lewis & Chase
Linked Lists

Group Discussion: DQ: LinkedList Performance

In-Class: Linked List Mini-Lab
Complete Linked List Mini-Lab
W3
Reading and Discussion Questions:
DQ: Big-O Analysis of Lists
DQ: K_SimpleLL Performance
Read the Problem Description for the Car Wash Design Exercise that we will do in class. (You don't need to read the exercise yet.)
DQ: K_SimpleLL Performance

Object-Oriented Design (example object diagrams, example CRC cards)

In-Class Project: Car Wash Design Exercise
Compare the design you came up with in class with the Car Wash Design Case Study.
F3
Due Before Friday:
Linked List Mini-Lab

Reading:
Read the KQueue interface and the Analysis Question for the Queue Mini-Lab that we will do in class. (You don't need to read ahead to the implementation stages of the mini-lab yet.)
Inheritance, Composition
Design guidelines: Strong cohesion, Loose coupling

In-Class: Queue Mini-Lab
Structured Design

Complete Queue Mini-Lab
Start Car Wash Project

Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template) In addition to reflecting on the topics for this week, read the class documentation for the Java Queue interface and reflect on some key differences between it and our Queue implementation.
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M4
Due Before Monday:
Weekly Growth Reflection
Queue Mini-Lab

Reading - Facade Pattern:
Read the introduction (and more if you're interested) of the Wikipedia entry on Design Patterns.
Read the introduction and Overview section of the Wikipedia entry on the Facade Pattern.
Read the Intent, Problem, Solution, and Real-World Analogy sections of the Refactoring Guru page on the Facade Pattern.
Stack ADT
Facade Design Pattern; Queue and Stack as Facades

Group Discussion:
DQ: Stack Implementation Choices

In-Class: Stack Mini-Lab
Complete Stack Mini-Lab
Complete Car Wash Project
W4
Due on Kit:
Car Wash Project

Reading - Iterators & Iterable:
Iterators
First 1st paragraph and example of the Geeks for Geeks page on Iterator in Java
Iterable
Read the class documentation for Iterable.
Iterators and Iterable
Which data structures that we've seen are Iterable?
Java's ArrayList and LinkedList are Iterable. K_SimpleLL is not (no iterator method). Queues and Stacks are not naturally iterable -- are the Java Queue interface and Stack class iterable? How can students find out?

In-Class: Add an Iterator class to K_SimpleLL. The example in this Geek for Geeks page (half-way down the page) is almost exactly what you need, although the names are different. Create your class internally in K_SimpleLL.
Read the beginning of the Geeks for Geeks page on the Iterator Pattern, up to "Iterator Design Pattern Example".
F4
Due on Kit:
Stack Mini-Lab

Reading:
Read the beginning of the Geeks for Geeks page on the Singleton Pattern, up to "Key Components".
Read the beginning of the Geeks for Geeks page on the Template Method Pattern, up to "Use of the Template Method Design Pattern".
Reading on Inheritance, Composition, Delegation? But we're not really doing full-on delegation, more like Facade.
Look at Mouse.java and RandomMouse.java:
Documenting inherited and overridden methods;
Template Method pattern (Mouse move method);
Singleton pattern (RandNumGenerator)

Catch-up Day!
Where did you see the Template Method pattern in the Percolation project?

Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template) In addition to reflecting on the topics for this week, read the class documentation for the Java Stack class and reflect on some key differences between it and our Stack implementation.
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M5
Due Before Monday:
Weekly Growth Reflection

Preparation for Monday:
Read over the Backtracking Mouse Project.
Create a folder for this new project and download the relevant files. Do this even if you did the Mouse in a Maze project in COMP 150, because some files have been changed.
Read over the classes specified in the Read for Understanding section of the project.
Where are we in this course? What have we done so far?

Backtracking Mouse Project
W5
Reading:
Recursive Functions

Choice of Video:
Recursion (Dr. Vargas-Pérez)
Recursion in Java Full Tutorial - How to Create Recursive Methods (Coding with John)
Another Code Reading Exercise
I like covering sorting before OrderedList.
Could swap the Sorting Code Reading Exercise with the RecursiveList mini-lab, though. They were done in this order for Fall 2025 because Fall Break was F5, and starting RecursiveList here didn't seem like a good idea.
Mystery Functions Follow-Up
Alternatively, could follow up with the old Mini-Lab #5 on analysis of sorting algorithms.
F5
Fall Break
Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M6
Due Before Monday:
Weekly Growth Reflection

Discussion Questions:
DQ: Sorting Algorithms

Reading:
Read the Java documentation for the Comparable interface.
Should have Reading or Video assignment here about how to use Comparable and compareTo!
Go over Discussion Questions
Be sure to talk about algorithmic approach in insertion sort, since that's an excellent choice for the add method in OrderedList. If they do a linear or binary search and then use ArrayList.add, they aren't thinking about what ArrayList.add does.

Ordered List Mini-Lab
W6
Due on Kit:
Backtracking Mouse Project

Reading on Recursive Data Structures? Analyzing Recursion? Recursion vs Iteration?
Very brief introduction to Lists as Recursive Data Structures
Recursive List Mini-Lab
F6
Due on Kit:
Ordered List Mini-Lab

Video:
Intro to Trees (Dr. Vargas-Pérez)
Watch up to time 12:50; stop when he starts talking about Implementing Trees.

Preparation for Class:
Create a folder for the NQueens Project and download the files mentioned at the beginning of the assignment.
NQueens Project
Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M7
Due Before Monday:
Weekly Growth Reflection
Recursive List Mini-Lab

Videos:
Characteristics of Binary Trees (Dr. Vargas-Pérez)
Start at 14:50 and watch to the end. (5.5 min)
Intro to Tree Traversal, Starting with Breadth-First Traversal (2.5 min)
Alternative: Sandino's video from 2020 Traversing a Tree (Dr. Vargas-Pérez) (16:40 min)
Where are we in this course? What have we done so far?

Testing: Code Coverage, Boundary Testing, Invalid Input

Work on NQueens or other works in progress
W7
Video:
Depth-First Tree Traversal (8 min)
Reading:
Read the beginning of the Geeks for Geeks page on the Visitor Design Pattern, up to "Real World Example of Visitor Design Pattern".
Preparation for Class:
Read over the Binary Tree Mini-Lab through the "Looking at the Code" section. Download the files you will need in class.
Bring to Class:
Draw (paper and pen) the tree that would be created from the following values if you constructed it in breadth-first order:
12, 7, 3, 4, 8, 25, 0, 142, 17, 26
In other words, 12 is the root; 7 and 3 are the left and right children of 12; 4 and 8 are the left and right children of 7; etc.
What would the order be if you did a pre-order traversal? An in-order traversal? A post-order traversal? A breadth-first traversal? Write each one out.
Review: Agile Development, Regression Testing

Binary Tree Mini-Lab
Notice that this lab has many "stop-and-think" questions in it. These would excellent starting points for a reflection for this week!

Read Geeks for Geeks page on the Tree Data Structure. (Skip the second, long code example. You've worked on your own code example in class.)
F7
Due on Kit:
NQueens Project
Discussion Question Why don't we have a find(T element) method in our K_BinaryTree class? (We do have contains.)

Continue with Binary Tree Mini-Lab
Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M8
Due Before Monday:
Weekly Growth Reflection
Binary Tree Mini-Lab
Removing elements from a Binary Tree
Optional: Complete Binary Tree
W8
BST Mini-Lab
F8
Reading:
Set Abstract Data Type (Ignore references to HashSet for now; we'll talk about hashing next week.)
Discussion Questions:
What test cases should we include when testing K_BST?
What is a Set? Relevance to BST?
Read the Java documentation on the Set interface and the TreeSet class.
The following has been a final project in the past, but we were all too burned out in F2025.
Read over the Spring 2025 Dictionary Project.

Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M9
Due Before Monday:
Weekly Growth Reflection

Reading:
Maps/Dictionaries/Associative Arrays (Ignore references to HashMap for now; we'll talk about hashing later this week.)
Discussion Question Why don't we have a find(T element) method in our K_BinaryTree class? (We do have contains.)

Should BSTs be balanced? Quick hand-waving introduction to Red-Black and AVL trees.
What is a Map? What is a Map.Entry?
Reading Assignments:
Read the Java documentation on the Map interface and the TreeMap class. What kind of tree does TreeMap use?
If you're interested, read more online about Red-Black and/or AVL trees. (There are lots of resources; e.g., Google AI Overview, Wikipedia, GeeksForGeeks, etc)
W9
Reading Assignments:
HashTables
The Pièce de Résistance / The Cat's Meow:
Hash Tables
The Pitfall:
Hash Codes
Table Size:
The knee in the curve
F9
Reading Assignments:
More about Hash Tables
Read the class documentation for the Object class. (Why am I asking you to read this at this point in the course?)
What are your Big Picture take-aways about hash tables?
Hopefully includes: Hash tables are cool, Table size -- load factor -- matters, Developing good hash codes is hard!
Quick in-class activity: read class documentation for String.hashCode.
Thank you, Java developers!
In-class activity: In pairs, look at some completed code for the COMP 150 Textual Analysis assignment.
Pair students who have their completed Textual Analysis code (or can get it from Kit) with students who don't or who didn't take COMP 150. Make sure students read WordReader!

The old Project 4, "Using Data Structures for a Dictionary Application" might be excellent here, but the class and I ran out of steam.
Read the class documentation for the String class.
Review the Java documentation on the Map interface and read the HashMap and TreeMap classes.

Weekly Growth Reflection is due Sunday evening. (Reflection Markdown template)
DAY PREPARATION IN-CLASS TOPICS/ACTIVITIES FOLLOW-UP ACTIVITIES
M10
Due Before Monday:
Weekly Growth Reflection
Reading:
Read over the Priority Queue Activity. We will discuss this in class.
Priority Queue Activity
Heaps
Heap Mini-Lab
W10
Read over parts of the Spring 2013 Practice Final.
In-class activity: Go over the Spring 2013 Practice Final.
Reminder: There is no final exam in this class!
F10
Read over the Spring 2025 Dictionary Project.
In-class activity: Go over the Dictionary Mini-Lab.
Reminder: There is no final project this term!
Wrap-up: What have we done in this course?
Course Evaluations
Due Before Thanksgiving:
Final Reflection
Exam Week There will be no final exam in this class this term.