Office: University Crossings 109

Office Hours: MWF 11:00 am - 11:50 am

e-mail: kn33@drexel.edu

Section 002: **Monday 6:00 pm - 8:50 pm, UC 153
**The course covers the basics of data structures and algorithms put in the
broader context of solving problems using computers. We discuss fundamental
data structures: arrays, lists, stacks, queues, mappings, trees, hash tables,
tries, sets, graphs and standard algorithms operating on them. We cover
theoretical concepts and methods, which are necessary in the process of the
design and the evaluation of efficiency. Abstract data types are used
informally in the description and implementation of algorithms. Our
presentation follows the steps: abstract understanding of data types, design
and implementation, analysis of correctness, flexibility and efficiency. The
course puts a strong stress on the analytic aspects of computational
complexity. Basic mathematics and programming courses are the prerequisites for
it.

Required Text

Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman,

**Reference Texts**

Alfred V. Aho, Jeffrey D. Ullman, *Foundations of Computer Science, C
Edition,* Computer Science Press, New York, 1995, available as downloadable
pdf files:

http://infolab.stanford.edu/~ullman/focs.html

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, *Introduction
to Algorithms*, The MIT Press, Cambridge, 2001 (second edition).

Robert Sedgewick, *Algorithms in C++*, Addison-Wesley, Reading,
Massachusetts, 1998 (third edition).

Herbert S. Wilf, *Algorithms and Complexity*, A K Peters, Ltd., Natick,
Massachusetts, 2002 (second edition), downloadable first edition:

http://www.math.upenn.edu/%7Ewilf/AlgoComp.pdf

**
Syllabus
Week 1: **Design and analysis of algorithms

Week 2:

Week 3:

Week 6:

Week 7:

Week 8:

Week 9:

**Course Objectives**

To learn how to analyze the computational complexity of algorithms and to
understand recurrence relations and basic asymptotic analysis.

To understand principal abstract data types and algorithms they support. In
particular, understand lists, stacks, queues, mappings, trees, hash tables,
tries, sets, and graphs.

To understand the principles behind basic sorting algorithms.

To learn the basics of algorithm design.

Course Grade and Exams

We will have seven group quizzes with individual submission (on Mondays during
weeks 2-8), three individual tests (test 1 Monday week 5, test 2 Monday week 9,
test 3, take-home, due with the final exam), an individual final exam (Monday
week 10 or with the daytime section), two group homework assignments with
individual submission (due on Monday week 4 and on Monday week 8), and two
group programming assignments with group submission (due on Monday week 7 and
on Monday week 11). The final grade will be computed as follows: quizzes count
for 15%, tests for 20%, final exam for 20%, homework assignments for 15%,
programming assignments for 25%, and class attendance for 5%.