SCHEDULE

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. This schedule is likely to change as the quarter progresses.

The template files used frequently in this course are: the main method class template, the normal class template, and the README file template.

Skip directly to Week 1 | Week 2 | Week 3 | Week 4 | Week 5 | Week 6 | Week 7 | Week 8 | Week 9 | Week 10

If you have difficulties downloading BlueJ, there will be CS majors available in the CS Collaboration Center Monday evening, 7 - 9pm.

DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M1  
Introduction / Syllabus

Scratching the Surface:
Programming & Computer Science
(video for review)
From Recipes to Programming (video for review)
(Key concepts: classes, methods, and statements)
Download BlueJ onto your own computer (unless you plan to work on lab computers)
Study Syllabus, especially the sections on Attendance, Assignments, and Collaboration and the Honor System (because these may be different from your other classes). There is a syllabus quiz on Moodle due before class on Wed.
LAB 1
Scratching the Surface:
Intro to Objects & Classes (video) (slides)
Numbers & Strings (video) (slides)
Reading:
Textbook by Cay Horstmann (CH), Chapters 1.6-1.7
Getting Started with BlueJ and Java
Numbers and Strings
Lab 1: Getting Started
Complete Lab 1 if you have not already done so.
Study Syllabus for quiz on Moodle, due before class Wednesday (self-enroll in the Moodle class site, if you haven't already.)
Start PP #1a (due Friday)
W1
Scratching the Surface:
Variables & Assignment (video) (slides)
Primitive Types & Classes (video) (slides)
Reading Class Documentation (video) (slides)
Reading:
CH 1, skip 1.5
CH 2.1-2.7
Due on Moodle:
Syllabus Quiz on Moodle, due before class (self-enroll in the Moodle class site, if you haven't already.)
Constructing Objects and Invoking Methods
Timestamp Mini-Lab
(I recommend you follow the Alternative instructions for Getting Started.)
Mini-Lab: Method Javadocs

ML Entrance Assignment for Friday
(the last section, "Look, Ma, no main!", is optional)
F1
Complete before Class:
ML Entrance Assignment
(the last section, "Look, Ma, no main!", is optional)
Scratching the Surface:
Primitives, Objects, & Memory (video) (slides)
Functions/Methods, Parameters, & Return Values (video) (slides)
Reading:
CH 2.8-2.10
Chapter Summary 1-25
Review/Discussion Questions: R/DQ Chap 1a, R/DQ Chap 2
Due on Moodle:
PP #1a
Mini-Lab: Method Javadocs
Moodle Quiz on Variables and Types
Objects, Methods, Reading Documentation
Mini-Lab: Creating Fish in an Aquarium
PP #1b
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M2
Scratching the Surface:
Boolean Type, If Statements (video) (slides)
Random Behavior (video) (slides)
Reading: CH 4.1-4.2 (through p. 128) -- Numbers
CH 4.6 -- Strings
CH 5.1-5.4 (if statements: new material)
Review/Discussion Questions: R/DQ Chap 1b
Due on Moodle:
Moodle Quiz
Conditional Execution
Generating Random Behavior
Mini-Lab: A Whirl of Color
(Write answers to bulleted Stop and Think questions and submit before lab.)
Mini-Lab: Method Javadocs (2017 Spring only)
LAB 2
Reading:
Read the Specifications and Design sections of the Talking Robot Lab and create a table of time blocks and messages. (You can print the lab and fill out that table, or create a similar table in a notebook.)
(Just for fun: video of a talking, moving Girlbot)
Complete before Lab:
Fill out the Design section of the lab.
Due on Moodle:
PP #1b
M2 ML Stop and Think Questions
Talking Robot
(Note that this lab extends the Timestamp Mini-Lab from W1, so follow the Alternative instructions for Getting Started.)
PP #2
W2
Complete before Class:
Lab 2: Talking Robot
Scratching the Surface:
Boolean Operations & Expressions (video) (slides)
The Most General For Loops (video) (slides)
Reading:
CH 5.5
Chapter 5 Summary
Advanced Topics, Quality Tips 5.3, 5.4
Review Chapter 5
In-class Quiz on object creation
TR Loop Mini-Lab
 
F2
Reading:
CH 6.2-6.3
Read Concept Sections from ML
Review/Discussion Questions:
R/DQ If, Follow-up
R/DQ Chap 5
Due on Moodle:
Moodle Quiz
Mini-Lab: Method Javadocs (2017 Spring only (should have been done in Week 1))
For Loops
Mini-Lab: Keep on Moving
 
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M3  
Winter: MLK Day - No Class

Spring: Get a head-start on Lab 3
 
LAB 3
Review before Class: Random Behavior, If Statements, and For Loops
Review/Discussion Questions: R/DQ Probability
Due on Moodle:
PP #2
Moodle Quiz on traditional-style for loops
Histograms PP #3
W3
Scratching the Surface:
ArrayLists (video) (slides)
Reading:
CH 7.2-7.4
Concept Sections from Mini-Lab
Review/Discussion Questions: R/DQ Chap 7
Due on Moodle: Lab 3: Histograms
Looking ahead to Friday:
(There are 5 videos listed for Friday, so give yourself a head-start!)
ArrayLists
Mini-Lab: More Fish
 
F3
Scratching the Surface: [Tip: Space these 5 videos out!]
Optional Review from Week 1: Objects & Classes (video) (slides)
New: Class Implementation - Instance Variables and Constructors (video — first minute is review) (slides — first six slides only)

Review from Week 1: Functions/Methods, Parameters, & Return Values (video) (slides)
New: Class Implementation - Methods (video) (slides)

Review from W3: Stepping through an ArrayList (5:00 - 8:20 of Wednesday's video on ArrayLists)
Reading:
CH 3-3.5
How To 3.1 (p. 92-95)
Review/Discussion Questions: R/DQ More If Practice
Implementing Classes
Implementing Methods
Objects as Black Boxes / Data Hiding
Pros and Cons of "Getter" & "Setter" Methods
Mini-Lab: Creating a Collection Item Class
Demo Video: (optional)
Implementing a CarReg Class (21 min)
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M4
Complete before Class: Friday's Mini-Lab
Scratching the Surface:
Design of a Collection Class (video) (slides)
ArrayList Loop Patterns:
Process All / Sum (video) (slides)
Search Patterns (video) (slides)
Find Minimum/Maximum (video) (slides)
Reading:
CH 3.6-3.8
Chapter 3 Summary
Method Description Handout (Word document)
Review/Discussion Questions: R/DQ Chapter 3
Due on Moodle:
Class Video Feedback on any video you have watched so far (just 1) (template in Word or Open/LibreOffice format)
Mini-Lab: Creating a Collection Class (Implementing ArrayList Loop Patterns)
Demo Video: (optional)
Implementing a Collection Class (29 min)
LAB 4
Scratching the Surface:
Instance Variables, Local Variables, and Parameters (video) (slides)
Reading:
Read the Lab
Whiteboard notes about introduction of Simulation class
Review/Discussion Questions: R/DQ AquaFish class
Due on Moodle:
Submit completed Aquarium Lab Series Mini-Labs (as it exists before Lab 4)
PP #3: Histogram
Fish With Class  
W4
Review/Discussion Questions: R/DQ Method Visibility
Extra time to work on M4 Mini-Lab or Lab 4.
 
F4
Reading:
CH 4.3-4.5
HOW TO 4.1 (slowly)
Chapter 4 Summary
CH 8.8 (Scope)
7.5 (Array Algs)
Review/Discussion Questions: R/DQ Chapter 7b
Due on Moodle: Lab 4: Fish With Class

Optional Video:
Overview of in-class coding from Winter 2016
Candidate Class, PrimaryCaucusEvent Class
How to read the midterm
Opportunties to work with ArrayList Patterns:
ArrayList Patterns
Building Thermostats (worksheets, object diagram)
Email Inbox (worksheets, object diagram)
Recipe Box (exam-like questions, object diagram)
Store Inventory (worksheets, object diagram)
Solutions:
Coin Collection
Thermostats
Email
PRACTICE MIDTERM
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M5
Complete before Class:
ArrayList Algorithm Exercises from F4
Mini-Lab: Refactoring Talking Robot
Draft Notes on the Refactored Project
 
LAB 5
Complete before Class:
PRACTICE MIDTERM
Review/Discussion Questions: R/DQ Chap 6b
Go over PRACTICE MIDTERM
Here are the answers for a slightly earlier version: I think everything is the same except questions 5 and 6.
 
W5   MIDTERM
Scratching the Surface:
Arrays & ArrayLists (video) (slides) (For video, concentrate on minutes 0:00 - 2:00 and 4:00 - 6:00)
While Loops (first draft of video) (WhileLoopIllustration.java, Student.java)
Reading:
CH 7.1, 7.7, HOW TO 7.1 (p.271) (Arrays)
CH 6.1 (While), 6.4
Chapter 6 Summary (Loops)
F5
Winter: Break
 
Spring:
Review: Follow-up Assignments from Wednesday
Reading: CH 14.6-14.7 (Searching)
Winter: Break Day - No Class
 
Spring: Linear and Binary Search
Spring:
Linear Search Animation, with Best/Worst Case Analysis (4:43, analysis starts at 3:16)
Binary Search Animation (20:52 -- If you want to skip part, I recommend skipping 8:16 - 15:00. The search for an item not in the array begins at 15:00.)
Binary Search Analysis (2:20)
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M6
Scratching the Surface:
Static Keyword (video) (Related classes: StaticIllustrationDriver.java, Student.java)
Reading:
CH 8.6 - 8.8 (Static keyword)
Topics to be covered in class:
Static Keyword
Two-Dimensional Data Structures:
Mini-Lab: Exercise Sets 1 - 3 and Step 1 of Exercise Set 4 from the Grid Plotter Project
Due on Moodle:
Answers to questions from Grid Plotter Exercise Set 3
LAB 6
Due on Moodle:
Mini-Lab: Refactoring Talking Robot
Continuation of the Grid Plotter Project
W6
Scratching the Surface:
Intro to Interfaces (video) (slides)
Reading: CH 9.1 (Interfaces)

Winter:
Review: Follow-up Assignments from W5 (Arrays and While loops)
Additional Reading: CH 14.6-14.7 (Searching)
Topics to be covered in class:
.toString, .equals, .compareTo methods
Winter: Linear and Binary Search
Spring: Introduction to Interfaces
Start Interfaces Mini-Lab
Code: (SearchIllustrationMain.java, IntLinearSearcher.java, StringLinSearcher.java, IntBinSearcher.java, StringBinSearcher.java)
Winter:
Linear Search Animation, with Best/Worst Case Analysis (4:43, analysis starts at 3:16)
Binary Search Animation (20:52 -- If you want to skip part, I recommend skipping 8:16 - 15:00. The search for an item not in the array begins at 15:00.)
Binary Search Analysis (2:20)
F6
Winter: Interfaces (Ex: Comparable)
Interfaces Mini-Lab
Code: (SearchIllustrationMain.java, IntLinearSearcher.java, StringLinSearcher.java, IntBinSearcher.java, StringBinSearcher.java)
 
Spring: Continue Interfaces Mini-Lab
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M7
Review: Interfaces (see W6)
Review/Discussion Questions: R/DQ Chap 9
Due on Moodle:
PP #4: Grid Plotter
Winter: Continue Interfaces Mini-Lab
Spring: Start Bingo Card
 
LAB 7 Review: PP #1b
Scratching the Surface:
Polymorphism & Dynamic Binding (video) (slides)
Reading: CH 9.3 (Polymorphism)
Due on Moodle:
Interfaces Mini-Lab
Bingo Card PP #5: Bingo Card
W7
Reading: CH 14.1-14.3 (Sorting), Review 14.6-14.7 (Searching)
Sorting Algorithms:
Small-scale, step-by-step animations
Comparisons
Animations with larger datasets
Sorting Algs Code: (project with incomplete Selection Sort), (completed Selection Sort class)
 
F7
Scratching the Surface:
Intro to Inheritance (video) (slides)
Supplement: Inheritance Diagrams (Starter Set)
Due on Moodle:
Lab 6: Bingo Card
Intro to Inheritance
If time permits: Work on Bingo Card
 
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M8
Reading:
CH 10.1-10.3
Supplement: Inheritance Diagrams (full set)
Review/Discussion Questions: R/DQ Binary Search
 
Optional Resource:
If you want to look at the code for GridObject, TextCell, ColorBlock, or PictureBlock, they are available: Grid Package on GitHub
OO: Big Ideas and How does OO fit with other paradigms? (including Event-Driven) (slides)
 
LAB 8
Reading:
CH 10.4, Read the Lab
Complete before Class: Lab Exercises 1-3
Due on Moodle: PP #5: Bingo Card
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 Moodle. Get started on the Gravitational Percolation mini-lab (Exercise 1).
W8
Reading: CH 10.5-10.8.1
Review/Discussion Questions: R/DQ Chap 10
Mini-Lab Preparation: Do Exercise 1 in the Gravitational Percolation mini-lab.
Tips on Testing and Debugging
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
Reading: Advanced Topic 10.1
Due on Moodle: Lab 7: Percolation
Review: Abstract Superclasses
Mini-Lab: All Direction Percolation
PP #6: Percolation
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M9
Reading: CH 12.1-12.4 (Software Engineering)
Review/Discussion Questions: R/DQ Chap 8 and R/DQ More from Chap 8 or R/DQ Chap 14
Software Engineering
Possible Mini-Lab: Debugging
[Notes for Alyce] Topics for class or upcoming videos:
Scope, Part II?
Testing
Casting
 
LAB 9
Due on Moodle: PP #6: Percolation
Start on Final Programming Projects Final PP
W9
Possible misc. topics for upcoming classes or videos:
Casting
Packages
Exception Handling
Cohesion and Coupling, Testing, Review of Regression Testing
Work on Final Programming Projects
F9
Reading: CH 8.1-8.4 (OOD)
Work on Final Projects
DAY PREPARATION IN-CLASS TOPIC/ACTIVITY FOLLOW-UP ASSIGNMENTS
M10
Winter: Object Oriented Design (OOD)
Spring: Memorial Day
LAB 10
Winter: OOD lab
Spring: Work on Final Projects
 
W10
Complete before Class:
PRACTICE FINAL (supplemental classes)
Reading: CH 8.10 (Unit Test Frameworks)
Go over PRACTICE FINAL
 
F10
Due on Moodle: Final PP (submit zip file of your code)
Complete Practice Final/Wrap-Up  
Exam Week Time and place for Final Exam will be announced on the Registrar's web site.