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
6.1.1

Syllabus

Week 1

1/12: Lecture 1: Data Definitions in JavaDesigning Data: Simple classes, classes with containment

1/14: Lecture 2: Data Definitions: UnionsDesigning unions of classes; self-reference

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

Lab 1: Introduction to Eclipse and Simple Data DefinitionsData definitions in Java; Eclipse IDE; WebCAT homework server
Lab 1h: Introduction to Eclipse and Simple Data DefinitionsData definitions in Java; Eclipse IDE; WebCAT homework server; simple methods

Week 2

1/19: No Class: MLK Day 

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

1/22: Lecture 5: Methods for self-referential listsDesigning methods for complex class hierarchies

Lab 2: Working with Self-Referential DataDesigning methods in Java: classes, containment, unions, self-reference
Lab 2h: Working with Self-Referential DataDesigning methods in Java: classes, containment, unions, self-reference

Week 3

1/26: Lecture 6: Accumulator methodsMore complicated methods for self-referential data

1/28: No Class: Snow day 

1/29: Lecture 7: Accumulator methods, continued(continued) Methods with accumulators

Lab cancelled due to snow

Week 4

2/2: No Class: Snow day 

2/4: Lecture 8: Practice DesignRecap: designing methods and wish lists for a larger problem

2/5: Lecture 9: Abstract classes and inheritanceAbstract classes and inheritance

Lab 3: Methods for Complex DataDesigning methods for self-referential data

Week 5

2/9: No Class: Snow day 

2/11: Lecture 10: Customizing constructors for correctness and convenienceCustomizing constructors for correctness and convenience

Lab cancelled due to snow

Week 6

2/16: No Class: Presidents’ Day 

2/19: Lecture 13: Abstracting over behaviorOverview of world programming; Function objects

Lab 5: Equality and World ProgrammingFunctional world games
Lab 5h: Equality and World ProgrammingEquality, functional world games

Week 7

2/26: Lecture 16: VisitorsVisitors

Lab 6: Abstracting with Function ObjectsWorking with function objects
Lab 6h: Abstracting with Function ObjectsWorking with function objects, introduction to generics

Week 8

3/2: Lecture 17: MutationCreating cyclic data, mutation

3/4: Lecture 18: Mutation inside structuresTesting mutation methods, indirect cycles

3/5: Lecture 19: Mutation, aliasing and testingAliasing and equality, revisited

Week 9

3/9: No Class: Spring break 

3/11: No Class: Spring break 

3/12: No Class: Spring break 

Week 10

3/16: Lecture 20: Mutable data structuresRemoving items from lists, mutable lists

3/18: Lecture 21: ArrayListsDirect-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops

3/19: Lecture 22: ArrayListsArrayLists and binary search; for-each loops; working with indices

Lab 8: Working with Cyclic DataWorking with mutable and cyclic data
Lab 9: Imperative WorldsLoyd's 15 puzzle: working with ArrayLists, loops and imperative worlds

Week 11

3/23: Lecture 23: For-each loops and Counted-for loopsFor-each loops and counted-for loops

3/25: Lecture 24: While loopsWhile-loops

3/26: Lecture 25: Iterator and IterableIterators and Iterables

Lab 9: Imperative WorldsLoyd's 15 puzzle: working with ArrayLists, loops and imperative worlds
Lab 10: Working with Stacks, Queues and TreesPractice implementing iterators
Lab 10h: Trickier iteratorsWider trees and advanced iterators

Week 12

4/1: Lecture 27: Introduction to Big-O AnalysisBig Oh: searching and sorting; insertion sort and selection sort

4/2: Lecture 28: Quicksort and MergesortBig Oh: searching and sorting; quicksort and merge sort

Lab 10: Working with Stacks, Queues and TreesPractice implementing iterators
Lab 10h: Trickier iteratorsWider trees and advanced iterators

Week 13

4/6: Lecture 29: Priority Queues and HeapsortBig Oh: searching and sorting; HeapSort -- Priority Queue

4/8: Lecture 30: Breadth-first search and Depth-first search on graphsGraph algorithms: breadth-first search, depth-first search

4/9: Lecture 31Graph algorithms: Dijkstra's algorithm, and comparison with BFS/DFS

Week 14

4/13: Lecture 32Minimum spanning trees: Prim's and Kruskal's algorithms

4/15: Lecture 33Design choices in object-oriented languages: JavaScript

4/16: Lecture 34: Implementing ObjectsImplementing Objects

Week 15

4/20: No Class: Patriots’ Day 

4/22: Lecture 35Other languages and wrapup