16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Course textbooks and materials<br />

Algorithm Design by Kleinberg and Tardos, supplemented liberally with my own lecture notes. There are two<br />

programming assignments, one in Python and one in Java.<br />

Why do you teach the course this way<br />

The goal of Algorithms is for students to learn and practice a variety of problem solving strategies and analysis<br />

techniques. Students develop algorithmic maturity. They learn how to think about problems, their solutions, and<br />

the quality of those solutions.<br />

I have taught Algorithms since 2007 except for 2010 when I was on sabbatical. My sense is that my course is nontrivial<br />

revision of the offering pre-2007. Students consider the course challenging in a rewarding way.<br />

Body of Knowledge coverage<br />

KA<br />

Knowledge<br />

Unit<br />

Topics Covered<br />

Hours<br />

AL Basic Analysis Asymptotic analysis including definitions of asymptotic upper, lower, and<br />

tight bounds. Discussion of worst, best, and expected running time (Monte<br />

Carlo and Las Vegas for randomized algorithms and a brief discussion about<br />

making assumptions about the distribution of the input). Natural complexity<br />

classes in P (log n, linear quadratic, etc.), recurrence relations and their<br />

solutions (mostly via the recursion tree and master method although we<br />

mention generating functions as a more general solution).<br />

5<br />

AL<br />

Algorithmic<br />

Strategies<br />

Brute-force algorithms (i.e., try-‘em-all), divide and conquer, greedy<br />

algorithms, dynamic programming, and transformations. We do not cover<br />

recursive backtracking, branch and bound, or heuristic programming although<br />

these topics are given some attention in Artificial Intelligence.<br />

6<br />

AL<br />

Fundamental<br />

Data Structures<br />

and Algorithms<br />

Order statistics including deterministic median, We do not cover heaps<br />

directly in this course although we mention various heap implementations and<br />

their trade-offs (e.g., Fibonacci heaps, soft heaps, etc.) when discussing<br />

shortest path and spanning tree algorithms. Undirected and directed graphs,<br />

bipartite graphs, graph representations and trade-offs, fundamental graph<br />

algorithms including BFS and DFS, shortest-path algorithms, and spanning<br />

tree algorithms. Many of the topic areas included in this knowledge unit are<br />

covered in Data Structures so we review them quickly and use them as a<br />

launching point for more advanced material.<br />

4<br />

AL<br />

Basic<br />

Automata,<br />

Computability<br />

and Complexity<br />

Algorithm Design and Analysis contains very little complexity theory–these<br />

topics are all covered in detail in our Theory of Computation course.<br />

However, we do spend 1 lecture on the complexity classes P and NP, and<br />

approaches to dealing with intractability including approximation algorithms<br />

(mentioned below).<br />

1<br />

AL<br />

Advanced Data<br />

Structures,<br />

Algorithms and<br />

Analysis<br />

A quick review of ordered dynamic dictionaries (including balanced BSTs<br />

like Red-Black Trees and AVL-Trees) as a way of motivating Skip Lists.<br />

Graph algorithms to find a maximum matching and connected components.<br />

Some advanced data structures like union-find (including the log*n amortized<br />

analysis). Suffix trees, suffix arrays (we follow the approach of Karkkainen<br />

and Sanders that recursively builds a suffix array and then transforms it into a<br />

suffix tree). Network flow including max-flow, min-cut, bipartite matching<br />

12<br />

- 241 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!