5.3.5

Syllabus

Lecture 1: 9/4
    Design recipes; Methods in Java; Loops with accumulators; Inexact numbers
  

Lecture 2: 9/5
    Designing Data: Simple classes, classes with containment
  

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

Lecture 3: 9/9
    Designing unions of classes; self-reference
  

Lecture 4: 9/11
    Methods for simple classes and classes with containment
  

Lecture 5: 9/12
    Methods for unions of classes and classes with self-reference
  

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

Lecture 6: 9/16
Lecture 6a: 9/18
    Designing methods for complex class hierarchies
  

Lecture 7: 9/19
    Abstracting over common fields and methods: Abstract classes
  

Lab 3: 9/19      text
    Designing methods for complex data and for collections of data
  

Lecture 9: 9/23
    Review for Exam 1: Designing classes, designing methods
  

Lecture 10: 9/25
     Exam 1 Designing classes, designing methods
  

Lecture 11: 9/26
    Designing interactive games; Using libraries, Extending abstract class; Deriving subclass
  

Lab 4: 9/26      text
    Abstract classes; Designing interactive games
  

Lecture 12: 9/30
    Abstracting over the behavior; designing and using function objects.
    Boston Marathon
  

Lecture 12a: 10/2
    Abstracting over the behavior; designing and using function objects.
    Three Questions
  

Lecture 13: 10/3
     Constructors - books
     Constructors - temperature
     Constructors - time
     Constructors - rats
     Integrity of data - Exception - version 1     Designing constructors; Exceptions
  

Lab 5: 10/3      Lab5      Lab5a     Lab5b
    Function objects; Constructors; Exceptions; Equality
  

Lecture 14: 10/7     Understanding equality (part 1)
  

Lecture 15: 10/9      Circular lists
     Circularly-referential data; Methods for circularly referential data
    Circularity; Methods with side effects: design and testing
  

Lecture 16: 10/10      Phone lists
     Phone lists - code     Circularity; Methods with side effects: design and testing
  

Lab 6: 10/10      Lab6
     Circularly-referential data and Methods for Circularly-referential data
  

Lecture 17: 10/16     
     Direct-access data structures: ArrayList; Binary search
  

Lecture 18: 10/17     
     Parametrized data types: Generics
  

Lab 7: 10/17      Lab 7a
    Design and test void methods
  

Lab 7: 10/17      Lab 7b
    Parametrized Types; Mutating ArrayList
  

Lecture 19: 10/21
    Exam 2 Abstract classes; function objects; void methods; equality
  

Lecture 20: 10/23     
    Java loop control statements: for and for-each
  

Lecture 21: 10/24     
     Loop practice; counted loops
  

Lab 8: 10/24      Lab 8
    Java for-each and for loop; Selection sort
  

Lecture 22: 10/28     
    Java while loop; Sorting: selection
  

Lecture 23: 10/30      Loops
    Iterator, Iterable, Sorting: insertion
  

Lecture 24: 10/31     
    Iterator, Iterable, Sorting: mergesort, quicksort
  

Lab 9: 10/31      Lab 9
    Loops, Iterators, sorting
  

Lecture 25: 11/4     
    HashMap, equals; Java Collections Framework
  

Lecture 25: 11/6     
    Extending unions: visitors
  

Lecture 26: 11/7     
    Imperative games, sound
  

Lab 10: 11/7     
    Visitors, HashMap, equals
  

Lecture 28: 11/13
    Graph algorithms: representation, DFS, BFS, Shortest path; Priority queue, heapsort
  

Lecture 29: 11/14
     Algorithm complexity: seraching, sorting
  

Lab 11: 11/14     
     GUI, Images, Array
  

Lecture 30: 11/18
    Algorithm complexity: exponential algorithms
  

Exam 3: 11/18 Evening exam: 6:00 - 9:00 pm, room TBA     
     Loops, parametrized data types, sorting, equals, Java Collections
  

Lecture 31: 11/20     
    GUI Design
  

Lecture 32: 11/21     
    Java I/O: text, files, streams
  

Lab 12: 11/21     
    Heapsort, stress tests
  

Lecture 33: 11/25     
     Code Reviews
  

Lecture 34: 12/2     
    Code Reviews
  

Lecture 35: 12/4     
    Code Reviews