CIS3223 - Data Structures and Algorithms

CIS5011 - Programming and Data Structures

Spring 2015

Section 001

Schedule and Homework Assignments

Instructor

TA

Class

Text

Exams, Project and Grading

Resources

Honor Code

Disabilities

I encourage students with disabilities, including "invisible" disabilities such as chronic diseases and learning disabilities, to discuss with us any appropriate accommodations that we might make on their behalf. Student must provide me with a note from the office of Disability Resources and Services at in 100 Ritter Annex, 215-204-1280, regarding their disability.

 

Syllabus

Course Goals

This course provides students with an introduction to the development and application of algorithms in computer science.

Topics Covered

Comparative analysis of algorithms and data structures. Data structures include heaps, priority queues, binary and general trees, binary search trees, and graphs.

Algorithms include heapsort, topological sort, breadth-first search, depth-first search, shortest path algorithms, and Greedy algorithms.

The following is a detailed listing of the topics covered in the course. The section numbers refer to the current text.

0. Prologue

0.1 Books and algorithms

0.2 Enter Fibonacci

0.3 Big-O notation

1. Algorithms with numbers

1.1 Basic arithmetic

1.2 Modular Arithmetic

1.3 Primality testing

1.4 Cryptography

1.5 Universal hashing

2. Divide-and-conquer algorithms

2.1 Multiplication

2.2 Recurrence relations

2.3 Merge sort

2.4 Medians

2.5 Matrix multiplication (optional)

2.6 The fast Fourier transform (optional)

3. Decompositions of graphs

3.1 Why graphs?

3.2 Depth first search in undirected graphs

3.3 Depth first search in directed graphs

3.4 Strongly connected components

4. Paths in graphs

4.1 Distances

4.2 Breadth-first search

4.3 Lengths on edges

4.4 Dijkstra's algorithm

4.5 Priority queue implementation

4.6 Shortest paths in the presence of negative edges

4.7 Shortest paths in dags

5. Greedy algorithms

5.1 Minimum spanning trees

5.2 Huffman encoding (optional)

5.3 Horn formulas (optional)

5.4 Set cover (optional)

6. Dynamic programming

6.1 Shortest paths in dags, revisited

6.2 Longest increasing subsequences

6.3 Edit distance

6.4 Knapsack

6.5 Chain matrix multiplication

6.6 Shortest paths

6.7 Independent sets in trees

7. Linear programming and reductions

7.1 An introduction to linear programming

7.2 Flows in networks

7.3 Bipartite matching

7.4 Duality

7.5 Zero-sum games (optional)

7.6 The simplex algorithm (optional)

7.7 Postscript: circuit evaluation (optional)

8. NP-complete problems (optional)

 


latecki@temple.edu