This is a rough sketch of the quarter that is likely to change. We can accurately predict the past, but predicting the future is hard! In particular,
all future assignment dates should be considered tentative and subject to change.
Jump to today
Welcome; Course policies; ArrayList
Students will be able to...
- explain the difference between client and implementer
- implement a simple array-based list of integers
More ArrayIntList
; Pre/post conditions; Exceptions
Students will be able to...
- write overloaded methods
- write effective comments for instance methods
- identify and document pre- and post-conditions
- throw exceptions from methods when appropriate
Week 2: Linear collections
Lists; Sets; for each loops
Students will be able to...
- Explain the benefits of using an interface type instead of a class type
- Identify considerations when choosing an appropriate data structure
- List the key operations of the List and Set ADTs
Students will be able to...
- Use a for-each loop to iterate over a collection
- Use an
Iterator
to iterate over a Set
- List and use the basic operations of stacks and queues
Students will be able to...
- explain the difference between a reference and an object
- define a class with a field of the same class and explain why this works
- write code to manipulate nodes of a linked list
No class - Martin Luther King Jr. Day
Linked list node manipulation
Students will be able to...
- traverse a sequence of linked list nodes
- implement a linked list class to store integers
- write code to add a new element to the end of a linked list
Students will be able to...
- efficiently construct a linked list from a collection of values
- insert values into a linked list
Complexity; Binary search
Students will be able to...
- define efficiency and describe different possible ways to measure it
- find the big-O complexity of simple algorithms
- compare algorithms to determine which is more efficient
- describe the binary search algorithm
Students will be able to...
- describe the Map ADT and list its main operations
- create and use a simple Map using the Java
Map
interface
- create and use a Map with a nested collection
Students will be able to...
- define recursion
- trace the execution of recursive methods
More recusion; Public/private pairs
Students will be able to...
- write recursive methods
- define and explain public/private recursive pairs
Regular expressions; Grammars
Students will be able to...
- implement public/private recursive pairs
- explain and recognize Backus-Naur Form
- split strings using the Java
split
method and simple regular expressions
Week 6: Applications of recursion
Recursive backtracking; Exhaustive search
More recursive backtracking
Students will be able to...
- implement exhaustive search using recursive backtracking
Students will be able to...
- describe the approach of several sorting algorithms
- list the considerations in designing and choosing sorting algorithms
No class - Presidents' Day
Students will be able to...
- describe and identify trees and binary trees
- implement a simple binary tree
- describe and implement pre-, in-, and post-order traversals of binary trees
Students will be able to...
- describe the binary search tree property
- implement search on a binary search tree
- add values to a binary search tree
Week 8: Binary search trees
Generic binary search trees; Comparable
Students will be able to...
- implement the
Comparable
interface
Two-dimensional arrays; Image manipulation
Priority queues; Huffman encoding
Collections; Two-dimensional arrays
Victory lap; Closing thoughts