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
6.2.1

Syllabus

Week 1

9/3: Lecture 1: Data Definitions in Java
    Designing Data: Simple classes, classes with containment
  

9/4: Lab 1
    Data definitions in Java; Eclipse IDE; WebCAT homework server
  

9/4: Lecture 2: Data Definitions: Unions
    Designing unions of classes; self-reference
  

Week 2

9/8: 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
  

9/11: Lab 2
    Designing methods in Java: classes, containment, unions, self-reference
  

9/11: Lecture 5: Methods for self-referential lists
    Designing methods for complex class hierarchies
  

Week 3

9/15: Lecture 6: Accumulator methods
    More complicated methods for self-referential data
  

9/17: Lecture 7: Accumulator methods, continued
    (continued) Methods with accumulators
  

9/18: Lab 3
    Designing methods for self-referential data
  

9/18: Lecture 8: Practice Design
    Recap: designing methods and wish lists for a larger problem
  

Week 4

9/22: Lecture 9: Abstract classes and inheritance
    Abstract classes and inheritance
  

9/24: Lecture 10: Customizing constructors for correctness and convenience
     Customizing constructors for correctness and convenience
  

9/25: Lab 4
    Practice with abstract classes and constructors
  

9/25: No class
  

Week 5

9/29: Midterm 1
  

10/1: Lecture 11: Defining sameness for complex data, part 1
     Sameness of data values
  

10/2: Lab 5
    Equality, functional world games
  

10/2: Lecture 12: Defining sameness for complex data, part 2
    More sameness
  

Week 6

10/6: Lecture 13: Abstracting over behavior
     Overview of world programming; Function objects
  

10/8: Lecture 14: Abstractions over more than one argument
     More function objects
  

10/9: Lab 6
    Working with function objects
  

10/9: Lecture 15: Abstracting over types
    Generics
  

Week 7

10/13: NO CLASS
     Columbus Day
  

10/15: Lecture 16: Visitors
     Visitors
  

10/16: Lab 7
    Generics and Visitors
  

10/16: Lecture 17: Mutation
     Creating cyclic data, mutation
  

Week 8

10/20: Lecture 18: Mutation inside structures
     Testing mutation methods, indirect cycles
  

10/22: Lecture 19: Mutation, aliasing and testing
     Aliasing and equality, revisited
  

10/22: Lab 8
     Working with mutable and cyclic data
  

10/23: Lecture 20: Mutable data structures
     Removing items from lists, mutable lists
  

Week 9

10/27: Lecture 21: ArrayLists
     Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
  

10/29: Lecture 22: ArrayLists
     ArrayLists and binary search; for-each loops; working with indices
  

10/30: Lab 9
     Loyd’s 15 puzzle: working with ArrayLists, loops and imperative worlds
  

10/30: Lecture 23: For-each loops and Counted-for loops
     For-each loops and counted-for loops
  

Week 10

11/3: Lecture 24: While loops
     While-loops
  

11/5: Lecture 25: Iterator and Iterable
     Iterators and Iterables
  

11/6: Lab 10
     Practice implementing iterators
  

11/6: Lecture 26: Hashing and Equality
     HashMap, equals
  

Week 11

11/10: Lecture 27: Introduction to Big-O Analysis
     Big Oh: searching and sorting; insertion sort and selection sort
  

11/12: Lecture 28
     Big Oh: searching and sorting; quicksort and merge sort
  

11/13: Lab 11
     Heapsort, stress tests
  

11/13: Lecture 29: Priority Queues and Heapsort
     Big Oh: searching and sorting; HeapSort – Priority Queue
  

Week 12

11/17: Lecture 30
     Graph algorithms: breadth-first search, depth-first search
  

11/19: Lecture 31
     Graph algorithms: Dijkstra’s algorithm, and comparison with BFS/DFS
  

11/20: Lab 12
     TBD
  

11/20: Lecture 32
     Minimum spanning trees: Prim’s and Kruskal’s algorithms
  

Week 13

11/24: Lecture 33
     Implementing Objects
  

Week 14

12/1: Lecture 34
     Design choices in object-oriented languages: JavaScript
  

12/3: Lecture 35
     Other languages and wrapup