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