Schedule
Week 1
8/25:
Syllabus, tech set-up
8/27:
Lecture 1: Data Definitions in Java
Designing Data: Simple classes, classes with containment
Lab:
Recitation 1, first half
Week 2
9/01:
LABOR DAY – UNIVERSITY CLOSED
9/03:
Lecture 2: Data Definitions: Unions
Designing unions of classes; self-reference
Lab:
Recitation 1: Introduction to IntelliJ and Simple Data Definitions
Data definitions in Java; IntelliJ IDE; Handins homework server
Week 3
9/08:
Lecture 3: Methods for simple classes
Methods for simple classes and classes with containment
9/10:
Lecture 4: Methods for unions
Methods for unions of classes and classes with self-reference
Lab:
Recitation 2: Working with Self-Referential Data
Designing methods in Java: classes, containment, unions, self-reference
Week 4
9/15:
Lecture 5: Methods for self-referential lists
Designing methods for complex class hierarchies
9/17:
Lecture 6: Accumulator methods
More complicated methods for self-referential data
Lecture 7: Accumulator methods, continued
(continued) Methods with accumulators
Lab:
Recitation 3: Methods for Complex Data
Designing methods for self-referential data
Week 5
9/22:
Lecture 8: Practice Design
Recap: designing methods and wish lists for a larger problem
9/24:
Git/Github
Week 6
9/29:
Lecture 9: Abstract classes and inheritance
Abstract classes and inheritance
10/01:
Java at the CLI
Lab:
Recitation 4: Working with Abstract Classes, Problem Solving
Practice with abstract classes and constructors
Week 7
10/06:
Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience
10/08:
Exam 1
Lab:
Recitation 5: Custom Constructors and Equality
Functional world games
Week 8
10/13:
FALL BREAK
10/15:
Lecture 11: Defining sameness for complex data, part 1
Sameness of data values
Lecture 12: Defining sameness for complex data, part 2
More of the same
Week 9
10/20:
Lecture 13: Abstracting over behavior
Overview of world programming; Function objects
10/22:
Lecture 14: Abstractions over more than one argument
More function objects
Lecture 15: Abstracting over types
Generics
Lab:
Recitation 6: Designing a simple game
Working with function objects
Week 10
10/27:
Exam 1 Post-mortem
10/29:
Lecture 16: Visitors
Visitors
Lab:
Recitation 7: Parametric data and visitors
Generics and Visitors
Week 11
11/03:
Exam 2
11/05:
Lecture 17: Mutation
Creating cyclic data, mutation
Lab:
Recitation 8: Understanding Mutation
Working with mutable and cyclic data
Week 12
11/10:
Lecture 18: Mutation inside structures
Testing mutation methods, indirect cycles
11/12:
Lecture 19: Mutation, aliasing and testing
Aliasing and equality, revisited
Lab:
Recitation 9: Working with Cyclic Data
Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds
Week 13
11/17:
Lecture 20: Mutable data structures
Removing items from lists, mutable lists
11/19:
Lecture 21: ArrayLists
Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
Lab:
Recitation 10: Imperative Worlds
Practice implementing iterators
Week 14
11/24:
Lecture 22: ArrayLists
ArrayLists and binary search; for-each loops; working with indices
Lecture 23: For-each loops and Counted-for loops
For-each loops and counted-for loops
11/26:
THANKSGIVING BREAK
Lab:
Recitation 11: Working with Stacks, Queues and Trees
Heapsort, stress tests
Week 15
12/01:
Lecture 24: While loops
While-loops
12/03:
Lecture 25: Iterator and Iterable
Iterators and Iterables
Lab:
Recitation 12
TBD
Week 16
12/08:
Immaculate Conception Force / Immaculate Conception Acceleration
Lab:
Recitation 13
TBD