- 9/27/10: Presentation of the course. Basic concepts and definitions.
[ slides
| printable slides ]
- 9/29/10: Asymptotic Notation.
- 10/4/10: Summation formulas. Loop invariants. SelectionSort
revisited. Proof of correctness and analysis of the computational
complexity. Logarithms.
- 10/6/10: Length of the representation of integer
numbers. Approximation of summations: the method of the integral. The
factorial of arbitrary integers: importance of the cost criterion in
the model of computation.
[ slides (revised
10/6/10) | printable
slides (revised 10/6/10)]
- 10/11/10: Loop Invariants: exercises 19, 20, page
40. Horner's algorithm to evaluate a polynomial on a point. Design
Techniques: the Divide-and-Conquer method. MergeSort. Direct solution
to the MergeSort equation.
[ slides
| printable
slides ]
- 10/13/10: Recurrence relations of the Divide-and-Conquer
type. Linear Recurrence relations of the first order. Master
Method.
Recommended Exercises:
- Study all class notes including the last part: exponentiation, the
repeated squaring method and the discussion over cost criteria.
- From the textbook: 21, page 20, 13-20, page 52, 13-29, page 65.
- 10/18/10: Integral powers of a number. The Repeated
Squaring Method. Discussion over the cost criteria. Exercises on the
master method and on linear recurrence relations of the first
order.
- 10/20/10: Exercises on the analysis of nested for-loop statements.
- 10/25/10: MT1.
- 10/27/10: Review of MT1.
- 11/1/10: Preparation to MT1 Makeup. Fibonacci
numbers. Recursive memoized solution. Solving second-order homogeneous
recurrence relations with constant coefficients.
- 11/3/10: MT1 Makeup.
- 11/8/10: Review of MT1 Makeup
(statistics of the
results). Introduction to Data Structures (chapter 3). Stacks:
Adt specification and array implementation.
Assignment: Study the Linked List implementation of a Stack.
- 11/10/10: Queues and Priority Queues. Heaps.
Assignment: study package priorityq.
- 11/15/10: Priority Queues. Introduction to graphs. The
single source multiple destination shortest path problem. Sketch of
the Dijkstra Algorithm. Second midterm announced.
- 11/17/10: Indirect Heaps. Graph representations: adjacency
matrices and adjacency lists. Implementation of the Dijkstra algorithm
using indirect heaps.
- 11/22/10: Partitions and Union-Find Data
Structures. Minimal Spanning Trees and the Kruskal Algorithm.
- 11/24/10: MT2.
Recommended Exercises: page 148-149, all; page 161-162, 10, 11; page
163-164: 3.12, 3.15; page 282-283: all; page 301-302: 5, 6, 7, 8, 10,
11.
- 11/29/10: Review of MT2
(see MT2 results). Introduction to
Dynamic Programming: the "matrix chain multiplication" problem.
[ slides |
printable slides ]
- 12/1/10: The "matrix chain multiplication" problem and the
Floyd and Warshall algorithm. Binary Search Trees. Preparation to the
final exam.