Schedule
Week 1
8/31:
Lecture 1: Data Definitions in Java
Designing Data: Simple classes, classes with containment
9/02:
Lecture 2: Data Definitions: Unions
Designing unions of classes; self-reference
Brief mastery check 1
Preparation:
Recitation 0: Course Setup: IntelliJ and AI Assistance
Course accounts, licensing, IntelliJ, and AI setup
start the account-readiness checkpoint in class; pending review is expected
Recitation 1: Simple Data Definitions in Java
Simple data definitions in Java
Week 2
9/07:
LABOR DAY - UNIVERSITY CLOSED
9/09:
Lecture 3: Methods for simple classes
Methods for simple classes and classes with containment
Preparation:
Recitation 2: Working with Self-Referential Data
Designing methods in Java: classes, containment, unions, self-reference
Week 3
9/14:
Lecture 4: Methods for unions
Methods for unions of classes and classes with self-reference
9/16:
Lecture 5: Methods for self-referential lists
Methods for self-referential lists; recursive insertion sort
Brief mastery check 2
Preparation:
Recitation 3: Methods for Complex Data
Designing methods for self-referential data
Week 4
9/21:
Lecture 6: Accumulator methods
More complicated methods for self-referential data
9/23:
Lecture 7: Accumulator methods, continued
(continued) Methods with accumulators
Preparation:
Recitation 4: Working with Abstract Classes, Problem Solving
Practice with abstract classes and constructors
Week 5
9/28:
Lecture 8: Practice Design
Recap: designing methods and wish lists for a larger problem
9/30:
Lecture 9: Abstract classes and inheritance
Abstract classes and inheritance
Brief mastery check 3
Preparation:
Recitation 5: Custom Constructors and Equality
Custom constructors and equality
Week 6
10/05:
Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience
10/07:
Lecture 11: Defining sameness for complex data, part 1
Sameness of data values
Preparation:
Recitation 6: Designing a simple game
Designing a simple game with bigBang
Week 7
10/12:
FALL BREAK
10/14:
Midterm
Week 8
10/19:
Lecture 12: Defining sameness for complex data, part 2
More of the same
Brief mastery check 4
10/21:
Lecture 13: Abstracting over behavior
Function objects: abstracting over behavior
Remote class meeting, 9:30–10:45 a.m. Eastern; access details in Canvas
Preparation:
Recitation 7: Parametric data and visitors
Generics and Visitors
Week 9
10/26:
Lecture 14: Abstractions over more than one argument
More function objects
Remote class meeting, 9:30–10:45 a.m. Eastern; access details in Canvas
10/28:
Lecture 15: Abstracting over types
Generics
Remote class meeting, 9:30–10:45 a.m. Eastern; access details in Canvas
Preparation:
Recitation 8: Understanding Mutation
Understanding mutation and testing effects
Week 10
11/02:
Lecture 16: Visitors
Visitors
11/04:
Lecture 17: Mutation
Creating cyclic data, mutation
Brief mastery check 5
Preparation:
Recitation 9: Working with Cyclic Data
Working with cyclic data and buddy graphs
Week 11
11/09:
Lecture 18: Mutation inside structures
Testing mutation methods, indirect cycles
11/11:
Lecture 19: Mutation, aliasing and testing
Aliasing and equality, revisited
Mastery check 6: Homework 5 code-walk appointments this week
Week 12
11/16:
Lecture 20: Mutable data structures
Removing items from lists, mutable lists
11/18:
Timed individual practical 1
Week 13
11/23:
Lecture 21: ArrayLists
Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
11/25:
NO CLASSES - THANKSGIVING RECESS
Week 14
11/30:
Lecture 22: ArrayLists
ArrayLists, binary search, sorting, and counted-for loops
12/02:
Lecture 23: For-each loops and Counted-for loops
For-each loops and counted-for loops
Brief mastery check 7
Week 15
12/07:
Timed individual practical 2
12/09:
Lecture 24: While loops
While-loops
Brief mastery check 8
Week 16
12/14:
Course review and slack
Final exam: 12/16
2:30PM–4:30PM
SC 109