Syllabus
Week 1
8/26:
Lecture 1: Data Definitions in Java
Designing Data: Simple classes, classes with containment
8/28:
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 2
9/02:
LABOR DAY – UNIVERSITY CLOSED
9/04:
Lecture 3: Methods for simple classes
Methods for simple classes and classes with containment
Week 3
9/09:
Lecture 4: Methods for unions
Methods for unions of classes and classes with self-reference
9/11:
Lecture 5: Methods for self-referential lists
Designing methods for complex class hierarchies
Lab:
Recitation 2: Working with Self-Referential Data
Designing methods in Java: classes, containment, unions, self-reference
Week 4
9/16:
Lecture 6: Accumulator methods
More complicated methods for self-referential data
Lecture 7: Accumulator methods, continued
(continued) Methods with accumulators
9/18:
Lecture 8: Practice Design
Recap: designing methods and wish lists for a larger problem
Lab:
Recitation 3: Methods for Complex Data
Designing methods for self-referential data
Week 5
9/23:
Lecture 9: Abstract classes and inheritance
Abstract classes and inheritance
9/25:
Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience
Lab:
Recitation 4: Working with Abstract Classes, Problem Solving
Practice with abstract classes and constructors
Week 6
9/30:
Lecture 11: Defining sameness for complex data, part 1
Sameness of data values
10/02:
Lecture 12: Defining sameness for complex data, part 2
More of the same
Lab:
Recitation 5: Custom Constructors and Equality
Functional world games
Week 7
10/07:
Lecture 13: Abstracting over behavior
Overview of world programming; Function objects
10/09:
Exam 1
Lab:
Recitation 6: Designing a simple game
Working with function objects
Week 8
10/14:
FALL BREAK
10/16:
Lecture 14: Abstractions over more than one argument
More function objects
Week 9
10/21:
10/23:
Lecture 16: Visitors
Visitors
Lab:
Recitation 7: Parametric data and visitors
Generics and Visitors
Week 10
10/28:
Lecture 17: Mutation
Creating cyclic data, mutation
10/30:
Lecture 18: Mutation inside structures
Testing mutation methods, indirect cycles
Lab:
Recitation 8: Understanding Mutation
Working with mutable and cyclic data
Week 11
11/04:
Lecture 19: Mutation, aliasing and testing
Aliasing and equality, revisited
11/06:
Lecture 20: Mutable data structures
Removing items from lists, mutable lists
Lab:
Recitation 9: Working with Cyclic Data
Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds
Week 12
11/11:
Lecture 21: ArrayLists
Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
11/13:
Lecture 22: ArrayLists
ArrayLists and binary search; for-each loops; working with indices
Lab:
Recitation 10: Imperative Worlds
Practice implementing iterators
Week 13
11/18:
Lecture 23: For-each loops and Counted-for loops
For-each loops and counted-for loops
Lecture 24: While loops
While-loops
11/20:
Lecture 25: Iterator and Iterable
Iterators and Iterables
Week 14
11/25:
Lecture 26: Hashing and Equality
HashMap, equals
11/27:
NO CLASSES
Week 15
12/02:
Lecture 34: Implementing Objects
Implementing Objects
12/04:
Exam 2