On this page:
Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Week 7
Week 8
Week 9
Week 10
Week 11
Week 12
Week 13
Week 14
Week 15
8.13

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🔗

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

Week 9🔗

10/23:

 

Lecture 16: Visitors
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