5.3.5

Syllabus

Lecture 1: 1/6
    Designing Data: Simple classes, classes with containment
  

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

Lecture 2: 1/8
    Designing unions of classes; self-reference
  

Lecture 3: 1/9
    Methods for simple classes and classes with containment
  

Lecture 4: 1/13
    Methods for unions of classes and classes with self-reference
  

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

Lecture 5: 1/15
    Designing methods for complex class hierarchies
  

Lecture 6: 1/16
    Designing methods for complex class hierarchies: sorting
  

Lab 3: 1/21      text
    Designing methods for complex data and for collections of data
  

Lecture 7: 1/22
    Abstracting over common fields and methods: Abstract classes
  

Lecture 8: 1/23
    Abstracting over common fields and methods: Abstract classes
  

Lecture 9: 1/27
    Designing interactive games; Using libraries
  

Lab 4: 1/28      text
    Abstract classes; Designing interactive games
  

Lecture 10: 1/29
     Designing subclasses
     Subclass of a library class
  

Lecture 11: 1/30
     Constructors - books
     Constructors - temperature
     Constructors - time
     Constructors - rats
     Integrity of data - Exception - version 1     Designing constructors; Exceptions
  

Lecture 12: 2/3
     Understanding equality - comparing complex data
  

Lab 5: 2/4      Lab5      Lab5a     Lab5b
    Subclasses; Constructors; Exceptions; Equality
  

Lecture 13: 2/5     Exam 1: Designing classes, methods; abstract classes.
  

Lecture 14: 2/6
    Abstracting over the behavior; designing and using function objects.
    Boston Marathon
  

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

Lab 6: 2/11      Lab6
     Function Objects
  

Lecture 16: 2/12      Circularly-referential data; Methods for circularly referential data
    Circularity; Methods with side effects: design and testing
  

Lecture 17: 2/13
     Phone lists
     Phone lists - code
    Circularity; Methods with side effects: design and testing
  

Lab 7: 2/19      Lab7
     Circularly-referential data and Methods for Circularly-referential data
  

Lecture 18: 2/20     
     Direct-access data structures: ArrayList; Binary search
  

Lecture 19: 2/21     
     Direct-access data structures: ArrayList; Stacks, Queues, Linked lists
  

Lecture 20: 2/24
     Parametrized data types: Generics
  

Lab 8: 2/25      Lab 8a
    Design and test void methods
  

Lab 8 : 2/25      Lab 8b
    Parametrized Types; Mutating ArrayList
  

Lecture 21: 2/26      Loops and Iterators
    Java loop control statements: for and for-each
  

Lecture 22: 2/27      For-each loops
     Loop practice; counted loops
  

Lecture 23: 3/10     
    Java while loop; Sorting: selection
  

Lab 9: 3/11      Lab 9
    Java for-each and for loop; Selection sort
  

Lecture 24: 3/12     
    Exam 2 Function objects, mutation, parametrized types.
  

Lecture 25: 3/13      Loops and Iterators
    Iterator, Iterable, Sorting: insertion; Big Oh
  

Lecture 26: 3/17     
    HashMap, equals
  

Lab 10: 3/18      Lab 10
    Iterator/Iterable; HashMap, equals; Javadocs
  

Lecture 27: 3/19     
    Big Oh: searching and sorting; Quicksort
  

Lecture 28: 3/20     
    Big Oh: searching and sorting; Merge sort;
  

Lecture 29: 3/24     
    Big Oh: searching and sorting; HeapSort – Priority Queue
  

Lab 11: 3/25     
    Heapsort, stress tests
  

Lecture 30: 3/26     
    Extending unions: visitors
  

Lecture 31: 3/27     
    Javadocs, Java Collections Framework; toString method
    Designing game in imperative style; designing tests for imperative style game
  

Lecture 32: 3/31     
    GUI, Images
    Imperative style game with MIDI sound
  

Lab 12: 4/1     
    Visitors; GUIs; Interactions
  

Lecture 33: 4/2
    Algorithm complexity: exponential algorithms
  

Lecture 34: 4/3
    Graph algorithms: representation, DFS, BFS, Shortest path; Priority queue, heapsort
  

Lecture 35: 4/7
     Array; Array-based computations
  

Lab 13: 4/8 (optional)     
     Java I/O: text, files, streams; Array
  

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

Lecture 36: 4/9     
    GUI Design: MVC
  

Lecture 37: 4/10     
     Summary
  

Lecture 38: 4/14     
     Code Reviews
  

Lab 13: 4/15     
    Code Reviews