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
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
|
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".
|
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
|
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:
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:
Reading:
First 4 paragraphs of the
Geeks for Geeks page on Abstract Data
Types
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:
|
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:
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.)
|
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:
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
|
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 |
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:
In-Class:
Stack
Mini-Lab
|
Complete
Stack
Mini-Lab
Complete
Car Wash Project
|
| W4 |
Due on Kit:
Reading - Iterators & Iterable:
First 1st paragraph and example of the
Geeks for Geeks page on Iterator
in Java
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:
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:
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.
|
|
|
| W5 |
Reading:
Choice of Video:
Recursion (Dr. Vargas-Pérez)
Recursion in Java Full Tutorial -
How to Create Recursive Methods (Coding with John)
|
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. |
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:
Discussion Questions:
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.
|
|
| W6 |
Due on Kit:
Reading on Recursive Data Structures? Analyzing
Recursion? Recursion vs Iteration?
|
||
| F6 |
Due on Kit:
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.
|
Weekly Growth Reflection
is due Sunday evening.
(Reflection Markdown template)
|
|
| DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES |
| M7 |
Videos:
Characteristics of Binary Trees (Dr.
Vargas-Pérez)
Start at 14:50 and watch to the end. (5.5 min)
Alternative: Sandino's video from 2020
Traversing a Tree
(Dr. Vargas-Pérez) (16:40 min)
|
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
|
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:
|
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 |
Removing elements from a Binary Tree
|
Optional:
Complete Binary Tree
|
|
| W8 | |||
| 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:
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:
|
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:
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:
Reading:
Read over the
Priority Queue Activity.
We will discuss this in class.
|
||
| 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.
|
Wrap-up:
What have we
done in this course?
Course Evaluations
|
Due Before Thanksgiving:
|
| Exam Week | There will be no final exam in this class this term. | ||