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 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 following schedule
represents a current best guess concerning actual due dates (and
everything else),
to give you a general idea of the pace and timing of the class.
Specific details are likely to change as the quarter progresses.
Last modified on .
The template files used frequently in this course are: the
main
method class template,
the normal
class template.
Reading assignments are from the Second Edition of Think Java: How to Think Like a Computer Scientist by Downey & Mayfield, unless specified otherwise.
Getting Ready (Before Quarter Begins)
Skip directly to Week 1 | Week 2 | Week 3 | Week 4 | Week 5 | Week 6 | Week 7 | Week 8 | Week 9 | Week 10
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
---|---|---|---|---|
Week 1
Monday(M1) |
Get the book, join the CS Collaboration Center in
Microsoft Teams, and download BlueJ.
(See Getting Ready above.)
|
Introduction / Syllabus
|
Study the Syllabus, especially the
sections on Attendance, Assignments, and
Collaboration and the Honor System.
|
|
LAB 1 |
Videos:
- Getting Started with BlueJ and Java
(7:46 min)
- JavaDoc Documentation Comments
(3:40 min)
- Getting Started with Lab 1
(4 min)
Reading:
Read Chapter 1 from Think Java. You may skim the
section on Compiling Java Programs (pp. 4-5) if you
like.
|
Answer Questions about videos:
Getting Started with BlueJ and Java
Lab 1: Getting
Started (Exercises 1 - 3)
Start
Programming Project 1a
|
Study Syllabus for quiz on Wednesday.
|
|
Wednesday (W1) |
Videos:
-
Numbers & Strings (7 min) • [slides]
-
Variables & Assignment (9 min) • [slides]
- Primitive Types in Memory (6.5 min)
Reading:
Read Chapter 2 from Think Java and the Remainder Operator
section on p. 37 of Chapter 3 (just the one page). (You may skim the
sections on "The Scanner Class" (pp. 30-31) and "The Scanner Bug" (pp.
39-40).
|
Answer Questions about videos:
Numbers, Strings, Variables, Assignment
Do Exercises
4 - 6 in
Lab 1: Getting Started
Work on Programming Project 1a
|
||
Friday (F1) |
Videos:
- Classes as Blueprints for New Types
(8.5 min) • [slides]
- Object Types (15 min)
- Preview of today's Mini-Lab Results (1.5 min)
|
Answer Questions about videos: Constructing Objects, Reading Documentation, Invoking Methods
|
||
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 2
MondayM2 |
Videos:
- Preview of today's Mini-Lab Results (1.5 min)
Reading:
Read the first section of Chapter 5 (p. 63 and the
first 2 lines of p. 64) in Think Java.
Read the sections on "The for Statement" and "Nested
Loops" on pp. 81-83 of Chapter 6 in Think Java.
|
Turn on notifications for the Collaboration Center
General channel in Teams, if you haven't done so
already.
|
Remind students to
Download at least one book from Project Gutenberg
and watch videos before Lab.
Complete the
Before Getting Started section of tomorrow's Lab, by selecting and downloading a plain text eBook.
|
|
LAB 2 |
Video:
- Functions/Methods, Parameters, &
Return Values (13.5 min)
• [slides]
Pre-Lab Preparation:
Complete the
Before Getting Started section of today's Lab
Optional: Watch
this video about creating a
file reader object. (2.25 min)
[A follow-up video will show how to use the reader
object.]
|
Review Conditions and Random Behavior:
|
||
W2 |
Videos:
- Boolean
Expressions and If Statements (12 min) •
[slides]
- Random Behavior (5 min) •
[slides]
- Preview of today's Mini-Lab Results (1.5 min)
Reading:
Read Chapter 5 in
Think Java.
Read Concept Sections from
Aquarium Lab Series: Mini-Lab #3 A Whirl of Color
and answer the Stop and Think questions.
|
Quiz #1 Conditional (if else ) Statements |
||
F2 |
Due on Kit:
Videos:
- ArrayLists and the For-Each Loop
(10:43 min) •
[slides]
- Preview of today's Mini-Lab Results (1.5 min)
Reading:
Quick Reference List of ArrayList
methods (useful subset)
|
ArrayLists
|
Complete the Aquarium Lab Series
which will be due W3 (Wednesday Week 3).
Here's a copy of the
rubric.)
|
|
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 3
M3 |
Winter:
MLK Day - No Class
Spring:
Complete the Aquarium Lab Series
which will be due W3 (Wednesday Week 3).
Here's a copy of the
rubric.
|
|||
LAB 3 |
Video:
First 14 min of
Variations on a Theme: Looping through an
ArrayList
Sub-Topics for Later Reference: Intro of video and MenuItem class
used in this demo (0:00 - 2:30)
Review of reading class
documentation (2:30 - 3:20)
(Digression:
The
.toString
method (2:54 - 3:16)Creating an ArrayList
(3:42 - 4:14)
Reading in whole file and filling
the ArrayList (4:17 - 6:59)
Stepping through a list using the
2 types of for loops (7:00 - 9:40)
Summing items in a list
(10:09 - 12:18)
Computing the average (12:19 - 14:20)
(Digression: Alyce's First Law of
Programming — 12:27 - 12:38)
|
Think-Pair-Share: Practice Quiz on
Reading and Understanding Code
(arithmetic operations, operation precedence, and
loops; quiz is due by Friday)
Instructions: Think about the
questions and talk them through with each other
before submitting the "quiz" to see the answers.
If you have time,
get started on the first exercises in
Further Textual Analysis
(ArrayList Traversal Patterns)
|
Complete Lab
Two useful quick references on ArrayLists:
The Intro
to ArrayLists slide lists a few of the most common
ArrayList methods.
The ArrayList
Details slide gives a good summary of key ArrayList
characteristics and methods.
|
|
W3 |
Due on Kit:
Video: ArrayList Loop Patterns
2nd half (roughly) of
Variations on a Theme: Looping through an
ArrayList
- 15 min, starting at 14:20
Sub-Topics for Later Reference: Finding and printing a subset of
items in a list (14:20 - 18:23)
(Digression: Using
.equals instead of ==
with Strings — 15:45 - 17:12)Formatting with tabs and newlines
(8:13 - 8:17, 18:23 - 19:05, 20:21 - 20:30, 24:56 -
25:05)
Printing an element that matches two
criteria (20:32 - 23:58)
(Digression: Advantage of using
.contains instead of
.equals with Strings
— 22:47 - 23:58)Printing all elements that match one
criterion (23:58 - 25:19)
Using the
.toString method
(24:24 - 25:48)Find how many elements are less than
some value (25:48 - 27:43)
(Digression: Don't need
else in these "finding" loops
— and it would break the code
— 27:17 - 28:24)Wrap-up (talks about methods that
return ArrayLists of results rather than printing
them — 28:24 - 29:29)
|
Complete Mini-Lab
Here's a 2020 article about actual word analysis at
work:
We Analyzed the Comments on the
Atrocious "Dr. Jill Biden" Op-Ed: Men and Women Saw
Something Different
|
||
F3 |
Due on Kit:
Lab 3: Counting Words
(part of the Textual Analysis series)
Due before Class:
|
Quiz #2 Reading and Understanding Code
Think-Pair-Share: Practice Quiz on
Constructing and Looping through an ArrayList
(quiz is due by Tuesday)
Begin Project:
Word Frequency Project: Finding
Maximum Values
|
Continue working on Project (due
Tuesday)
|
|
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 4
M4 |
Review: Practice Quiz on
Constructing and Looping through an ArrayList
(quiz is due by Tuesday)
Continue Project:
Word Frequency Project: Finding
Maximum Values
|
|||
LAB 4 |
Due before Lab:
Optional Review:
From Week 1:
Classes as Blueprints for New Types
- 8.5 min
(slides)
From Lab 2:
Functions/Methods, Parameters, &
Return Values - 13.5 min
(slides)
Video:
Refactoring — 6.5 min
(slide)
Our first refactoring exercise will be refactoring the Aquarium Lab Series in Lab 4 and then we will refactor the Textual Analysis program in Lab 5. |
Think-Pair-Share: Practice Quiz on
Writing Code —
6 short-answer code-writing questions representing
the first third of the course.
Topics include
declaring variables, constructing objects, calling methods,
Boolean (true/false) expressions, if statements, and simple
loops.
An expression is a part of a statement that
evaluates to a value, such as
2 + 3 ,
i < j , or aFish.atWall() .
(Answer Key; quiz due by
Friday)
|
Follow-Up Video:
Watch
Alyce Refactor Aquarium Program
- 20.5 min
(Whiteboard notes from a previous quarter about
introduction of Simulation class)
|
|
W4 |
Video:
Looking Inside the MenuItem
Class - 19 min
(MenuItem.java;
text version for viewing)
Introduces instance variables
(aka state or attributes), constructors, simple
methods
Reading:
Read Chapter 11 of Think Java up through the
section on "The toString Method", stopping on p. 168 at
the beginning of the section on "The equals Method".
|
Quiz #3 Constructing and Looping through an ArrayList Review:
Objects (Instances) are Data + Operations
Objects as Black Boxes / Data Hiding
3 types of Methods: Constructors,
Observers, Modifiers
Pros and Cons
of "Getter" & "Setter" Methods
Activity: Create Menu class, with
addMenuItem, printAll, and getPriceOf(itemName) methods
Companion Classes:
MenuItem.java,
MenuItemReader.java,
MainForMenuDemo.java,
MenuItems.txt
(You can put these classes in a new folder, then choose
Project -> Open Non BlueJ...,
which will create a project for these.)
Students should be creating this!
Menu.java
This uses an ArrayList in main:
LoopPatterns2020.java
If students seem mostly on track, could do Friday's
Think-Pair-Share here and cancel class on Friday
|
||
F4 |
Due on Kit:
Lab 4: Fish With Class
|
Think-Pair-Share: Practice Quiz on
Identifying Errors
-- Match 6 incorrect code snippets with
the appropriate error description.
(quiz due by Monday of 5th Week)
Catch-Up Work Day
(or Rest Day)
|
||
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 5
M5 |
Video:
|
Quiz #4 Writing Code
Think-Pair-Share: Practice Quiz on
Writing ArrayList Loops in Methods
(quiz due by Wednesday)
(Sample solution -- you can
also use a traditional style
for loop in
Question 2)
|
||
LAB 5 |
Optional "Watch Alyce Code"
videos: (only watch if you find them useful)
Refactoring Initial "Word Counter" Textual
Analysis Lab - 36 min
(The video refactors the code from the original version of the program. It covers many related sub-topics such as what to put in a constructor vs. a method; when to use instance variables, local variables or parameters; reducing duplicated code; and regression testing. The video description includes a "table of contents" showing when various topics are covered.) |
Continue with
Refactoring the Textual Analysis
Project
|
Refactoring the Rest of the Textual
Analysis Program - 46 min
(This video refactors the rest of the project. Again, it covers other topics as well, such as for loops vs. while loops; style guidelines; and using this program for simple digital humanities analysis. The video description includes a "table of contents" showing when various topics are covered.) |
|
W5 |
Pre-Class Preparation:
GridPlotter Project, Exercises 1-3
(here's a
Markdown template for Exercise
3)
Recommended: Start Exercise 4 also.
(Don't know Markdown? Intro to Markdown in
plain text
or
Markdown
format; you can edit a Markdown file in any tool that
can handle plain text files, e.g., VS Code, Atom,
Brackets, Spyder, SublimeText, vi/emacs, etc.)
|
Topic to be covered in class:
showMessageDialog vs throwing an exception
(e.g., for method not implemented yet)
GridPlotter Project, Exercise 4
GridPlotter Project, Exercise 5,
items 1 - 6, any 2 of items 7 - 11, and item 12
(You may also do any of the other exercises that you want.) |
Complete the
GridPlotter Project
|
|
F5 |
Due before Class:
|
Complete the
GridPlotter Project
|
||
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 6
M6 |
Videos:
Watch first 12 min of
Running the MBS Case Study and a Quick
Peek at Some Code (and a quick introduction to arrays)
First 7 min: Intro to Graphical User Interface, how
to choose different starting files, etc. (And why
have different files?)
7:25: MBSDemo1 (and comparison to Aquarium Lab
Series)
8:50: MBSDemo2 and Simulation class
10:10: Arrays (similar to ArrayLists, but
different!)
12:15: Stop when it starts to talk about the Run
button.
14:15: Definitely stop when it starts to talk about
MBSApp, if you haven't already!
Prepare for the Marine Biology Simulation case
study:
Read Why a Case
Study?
Read
Pat's
Introduction (including "Experimenting with the
Program") through Exercise 1
Complete Exercise 1 in
Pat's
Introduction
Due on Kit:
GridPlotter:
Answers to questions from Exercise Set 3
and
finished
project
|
Marine Biology
Simulation case study:
Introduction (Exercises 2 and 3) Demo 1 and Demo 2
You will be handing in the Analysis Questions from
Pat's
Introduction
(Markdown
template) and
Demos 1
and 2
(Markdown
template)
|
Read
MBS:
Understanding Code (through MBSApp)
Optional:
Watch 2 min about MBSApp in
Running the MBS Case Study and a Quick
Peek at Some Code
(around 14:30 - 16:20)
Not Optional:
Do Exercise on MBSApp
Read
Understanding Code
(
BoundedGrid, Location, Direction )
|
|
LAB 6 |
Videos:
Intro to
Inheritance - 15 min
(slides)
Supplement:
Inheritance Diagrams (Starter Set) (pdf document)
Due on Kit:
- Completed GridPlotter Project
- MBS Analysis Questions from
Pat's
Introduction
(Markdown
template) and
Demos 1
and 2
(Markdown
template)
|
Work on
Location and
Direction Analysis Questions
(Markdown
template);
Submit to Kit when done
Helpful Resources:
Quick
Reference on GridPkg methods (also ArrayList and
some common Color constants)
Full Class
Documentation for all classes in the
GridPackage (Click on the
edu.kzoo.grid package
to focus on
relevant classes.)
Read about Fish constructors and fields
in
MBS: Understanding Code
Work on the
Analysis Questions about Client
Code, Instance and Class Variables, and Fish Constructors
(Markdown
template)
|
Complete
Location and
Direction Analysis Questions;
Submit to Kit when done
Complete the
Analysis Questions about Client
Code, Instance and Class Variables, and Fish Constructors
Optional Resource:
Grid Package Inheritance Diagrams
|
|
W6 |
Reading:
Read Chapter 14 of Think Java. The chapter refers
to three classes from previous chapters:
Card ,
Deck , and Pile , but you don't
need to know their details to
understand the extended example in this chapter.
[Note: Pg. 207 refers to an "overloaded" method: this means two (or more) methods with the same name but different parameters and different behavior. Which one gets executed depends on the number and type of parameters you pass.]
Reference:
Quick Reference List of ArrayList
methods
Read the section about Inheriting and
Redefining Methods in
MBS: Understanding Code
Read the section about Fish Movement
in
MBS: Understanding Code
Video:
Static Keyword - 9 min
(Classes used in this video:
StaticIllustrationDriver.java,
Student.java)
Due on Kit:
MBS Location and Direction Analysis Questions from
Understanding Code
(Markdown
template)
|
Quiz #5 Identifying Errors
Work on the
Analysis Questions about Inheriting
and Redefining Methods, the
move method,
the nextLocation and
emptyNeighbors methods.
(Markdown
template)
Read the Overall Notes on the Fish
Class in
MBS: Understanding Code
Work on the
Exploring Inheritance
Analysis Questions
(Markdown template);
Submit to Kit when done.
|
Complete the Fish and Exploring Inheritance
Analysis Questions;
Submit to Kit when done.
|
|
F6 |
Break Day - No Class
|
|||
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 7
M7 |
Videos:
Subclasses are NOT
Subsets! - 12 min
Due on Kit:
All MBS Analysis Questions about the Fish class from
Understanding
Code
(Markdown
template)
|
First
and Second Simple Subclasses (SimpleFish and
WhiteFish)
|
Complete First
and Second Simple Subclasses
Continue with
DarterFish - due Tues along with
SlowFish
Optional:
Watch Alyce Program DarterFish (Unedited
- 18 min)
|
|
LAB 7 |
Video:
The
this and super
Keywords (context: Fish and SlowFish classes)
- 17 min
0:30: What is client code?
1:30:
this to refer to instance variables
or call local methods (in Fish class)
3:22: Review of
toString method
5:40: Introduction to
SlowFish
7:00: Review of
static for class variables
7:54:
this to call an alternative
constructor
10:06:
super to call a superclass
constructor
12:35: Review of
RandNumGenerator.getInstance()
13:30:
super.method to call an overridden
method
14:43: Summary of
SlowFish class
16:18: summary of uses for
this and
super
Reading:
Read the first half of Chapter 17 in
Think Java (up to Blinking Polygons on p.
250). This section reviews extending
classes and multiple constructors, and
introduces polymorphism on p. 250.
Since we won't be implementing Polygons, you
may skim the section on Regular Polygons.
|
Polymorphism & Dynamic Binding
(slides)
Based on how the class is doing, decide whether to make Breeding and Dying optional or required. If optional, tell students ahead of time so they can make decisions about what they want to do. They might even want to do the New Classes PP first, and only do Breeding and Dying if they have the time. |
Video:
|
|
W7 |
Video:
Review of MBS Class Hierarchy - 4 min
|
OR
Catch up on everything we've been doing to this point.
|
Culminating MBS Programming
Assignment:
New Fish Subclasses Programming Project
(may be done in groups)
|
|
F7 |
Could create a video on testing and debugging!
|
Quiz #6 Writing Methods
Topics to be covered in class:
Object-oriented Design
Note: Classes are objects too!
Marine Biology Simulation case study: Continue with
works in progress —
Breeding and Dying
Fish (optional)
Fish Subclasses Programming
Project (required)
|
Optional Resource:
If you want to look at the
code (not just the class documentation)
for GridObject, TextCell, ColorBlock, or
PictureBlock, it is available for download:
Grid
Package on GitHub
|
|
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 8
M8 |
Why is Inheritance So Important?
Code Reuse — This was subject of the M7
follow-up video and is briefly revisited in the
next video.
|
Overview of Percolation and Final Project Ideas, so people
can decide what to work on next.
Have covered OO Ideas and Other Paradigms here in the past |
Brief intro to
Final Programming Project Options
with videos.
|
|
LAB 8 |
Due on Kit:
Lab Preparation:
Read the Getting Started section of
the
Percolation Lab
and do Exercises 1 - 3.
|
Percolation Lab
(Note: the heart of this lab is in Exercises 6 - 9)
|
Finish the Percolation Lab (Vertical Percolator) and
submit it to Kit.
Get started on the
Gravitational Percolation
mini-lab (Exercise 1).
|
|
W8 |
Due on Kit:
Lab 8: Percolation
Mini-Lab Preparation:
Do Exercise 1 in the
Gravitational Percolation mini-lab.
Review:
Tips on Testing and Debugging
(Don't forget Regression Testing!)
|
Mini-Lab:
Gravitational Percolation
|
Finish the
Gravitational
Percolation mini-lab. You may also wish to get
started on Friday's
All Direction Percolation mini-lab.
|
|
F8 |
Video:
Abstract Superclasses
- 9.5 min (This is relevant to both Percolation and the
Final Projects.)
|
Quiz #7 Inheritance Concepts
Review:
Scope and public/private/protected
Mini-Lab:
All
Direction Percolation
|
The Percolation Programming Project has usually been assigned here. |
|
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 9
M9 |
Videos:
Arrays & ArrayLists - 9 min
(slides)
|
Winter:
Work on MBS, Percolation, or
Final Programming Project
Spring:
Memorial Day - No Class
Misc. topics for Weeks 9 & 10: Scope, Review &
public/private/protected
Casting
Packages
Review of Regression Testing
Exception Handling
|
Brief intro to
Final Programming Project Options
with videos.
|
|
LAB 9 |
Due on Kit:
Percolation Mini-labs (Gravitational and AllDirections)
Videos:
Linear Search Animation,
with Best/Worst Case Analysis - 5 min; analysis starts at 3:17
Binary Search Animation - 10 min
Binary Search Analysis - 2+ min
The Percolation Programming Project has usually been due here. |
Work on Final Programming Project
|
||
W9 |
Quiz #8 Variable and Method Return Types
Work on Final Programming Project
|
|||
F9 |
|
Work on Final Programming Project
|
||
DAY | PREPARATION | IN-CLASS TOPICS/ACTIVITIES | FOLLOW-UP ACTIVITIES | |
Week 10
M10 |
|
Continue working on Final Project
|
||
LAB 10 |
Sorting Algorithms
Note that this is slightly different from the one in 107 (is that also used in 105?), so that students don't do exactly the same thing in both -- but are they still too similar? |
|||
W10 |
Quiz —
Terminology (Matching quiz)
(There is no practice quiz for this quiz) Terminology Quiz:
You should be
familiar with the following terms: class, abstract
class, class documentation, instance variable, class
variable, local variable, constructor, method,
parameter, parameter type, return type, inheritance,
subclass, superclass.
|
Quiz #9 OOP Terminology. (There is no practice quiz for this quiz) More on Quiz #9You should be familiar with the following terms: class, abstract class, class documentation, instance variable, class variable, local variable, constructor, method, parameter, parameter type, return type, inheritance, subclass, superclass. Work on Final Projects |
||
F10 |
Due on Kit:
Final PP (submit zip file of your code). You have until
Sunday, March 16th by 11:59PM
|
OO: Big Ideas and How does OO fit
with other paradigms? (including Event-Driven)
(slides)
Wrap-up
Course Evals
|
||
Exam Week | There will be no final exam in this class this quarter. |