CSCI 303, Spring 2010


This course is designed to provide students with an understanding of the principles and techniques used in the design and analysis of computer algorithms. The course is primarily theoretical, but it does require understanding of the notion of a mathematical proof and some knowledge of elementary discrete mathematics. We will discuss and analyze a variety of algorithms chosen for their importance and their illustration of fundamental concepts. We shall emphasize analyzing the worstcase running time of an algorithm as a function of input size. Although we will focus on the themes of efficientalgorithm design and the correctness of an algorithm, we will also discuss the NP and beyound NP  the set of problems that may not have efficient algorithms. The course objective is to provide a solid background in algorithms for computer science students, in preparation either for a job in industry or for more advanced courses at the graduate level. I strongly encourage mathematicians and people from other concentrations to take the course as well. Because this may be the first course for many of you to study the modern theory of algorithms, and we will be covering a great deal, I expect the course to be challenging, both in terms of the workload and the difficulty of the material. You should be prepared to do a lot of work outside of class. The payoff will be that you will learn a lot of both useful and interesting things. Here are some concrete class objectives.


Professor ShangHua Teng 
Jacob Everist Email: everist[at]usc[dot]edu 

Textbook 
Introduction to Algorithms (3rd Edition) 
Lectures 

Grades 
The final grade will be primarily based on class participation (10%), six homeworks (6*5%), two midterm exams(2*15%), and a final exam (30%). Exams questions may come from topics covered in class lectures (except when the professor explicitly indicates otherwise) and from sections in the textbook indicated in the course outline. 
Exams 
The midterms and final will be open book. However, electronic devices such as cellphones and laptops, PDAs, calculators, are not allowed. Precision will matter; sloppy answers, even if correct, will receive fewer points than clean crisp ones. 
Homework 
Homeworks will be due at the begining of the class. No homework will be accepted 5 minutes into that class. If you could not come to that particular class, you should make your arrangement so that your homework will submitted on time. If you have medical emergency, you should send emails to the professor and the TA. 
Integrity 
Plagiarism and other antiintellectual behavior will be dealt with severely. This includes the possibility of failing the course or being expelled from the University. 
Homework solutions will be posted throughout the semester.
Lec# 
Date

Topic and/or Event  Reading  Notes 
1

1/12

Class organization:
Introduction of Professor/TA Class Web Page Grading Algorithms in Real World Internet (content Delivery) Intel Design (circuit testing), Web Search (Google) 
Search on the Web  HW0 assigned, due 1/26 
2

1/14

Algorithms can be fun: Stable marriage problem Asymptotic notion 


3

1/19

Greedy can be good: Huffman codes and error correction
Asymptotic notion 
(3rd edition) Chapter 16.3 and class slide  Slides for Lecture 2 
4

1/21

Guest lecture: Jacob Everist (algorithms in robotics)


5

1/26

Getting things in order : sorting Divide & Conquer (Part I): Merge Sort 
Chapters 4.1, 4.3, 4.4  Lecture notes (taken by Rachael Cummings) 
6

1/28

The magic of rolling dice ( Part I): randomized algorithms  Quick selection approximate median 

Lecture notes (taken by Kate Yortsos) 
7

2/02

The magic of rolling dice (Part II): Quick sort

Chapters 5, and 7  HW0 due HW1 assigned, due 2/16 Lecture notes (taken by John Baldo) HW0 Solutions 
8

2/04

More on Randomized Quick Sort
Sme analysis by recurrences: Solving recurrences: Master Theorem 
Chapters 4.5 and 7  Lecture notes (taken by David Valdez) 
9

2/09

Divide & Conquer (Part II): Nearest neighbor computation
Divide & Conquer (Part III): Multiplication and Strassen's Algorithm 
Chapter 33.4, 4.2  Lecture notes (taken by John Popovich) 
10

2/11

Graph theory and greedy algorithms II (Minimum Spanning Trees) .

Chapters 22.1, 23  Lecture notes (taken by Clark Kromenaker) 
11

2/16

Greedy Algorithm III:

MerkelHellman Scheme
Chapters 16.1, 16.2 
Lecture notes (taken by Ryan Romanowski) 
12

2/18

Greedy Algorithm IV: sometime may not always work Scheduling  still work Knapsack  may not work 
HW1 due HW2 assigned, due 3/4 

13

2/23

Review for midterm Type of Computational Problems Decisions Search Optimization Local Optimization Multiobjective optimization Multiplayer games 
HW1 Solutions, Part A posted. Remainder is forthcoming.  
14

2/25

Midterm 1


15

3/02

Midterm I solution discussion Dynamic Programming (Part I) limitaiton of greedy strings and similarity among strings 
Chapter 15  
16

3/04

Dynamic Programming (Part II): LCS

Chapter 15.4  HW3 assigned, due 3/25 
17

3/09

Dynamic Programming (Part III): Optimal Binary Search Trees

Chapter 15  Lecture notes (taken by Robert Ward) 
18

3/11

Dynamic Programming (Part IV): Matrix Chain and Knapsack

Lecture notes (taken by Jordan Brown) Lecture notes (taken by Lihui Shen) 

19

3/16

No class  Spring Break


20

3/18

No class  Spring Break


21

3/23

Graphs, social networks, and web graphs  Chapter 22  
22

3/25

How to search a graph I: BreadthFirst Search, 
Chapter 22.2 
Lecture notes (taken by Mary Ermitanio) HW2 Solutions, Part A posted. HW2 Solutions, Part B posted. 
23

3/30

How to search a graph II: DepthFirst Search and Random Walks 
Chapter 223 
HW4 assigned, due 4/13 Lecture notes (taken by Jin Yoo) 
24

4/01

DAGs, Topological Sort and strongly connected components

Chapters 224 and 225 
HW3 Solutions, Part A posted. HW3 Solutions, Part B posted. Lecture notes (taken by Adam Barrowclough) 
25

4/06

Review of Midterm II. ShortestPath in a graph 
Chapter 24  
26

4/08

Midterm 2


27

4/13

Shortest Path in a graph (cont)

Chapter 25  HW5 assigned, due April 27 Project 1 assigned, due April 29 Lecture notes (taken by Jong Hyeop Kim) 
28

4/15

Not all problems can be solved efficiently Cryptographic algorithms: hardness leads to security 
Lecture notes (taken by Justin Lei)  
29

4/20

More on Cryptography How to define hard problem: P vs NP: Part I  polynomialtime reduction 
Lecture notes (taken by Erin Wong)  
30

4/22

P vs NP: Part II  Lecture notes (taken by Shivani Srivastava)  
31

4/27

Beyond NP(Part I) polynomial hierarchy counting problems PSPACE, EXPTIME Other than NP: PLS and PPAD 

32

4/29

Beyond NP (Part II) Decidability Halting Problem; Randomness  Kolmogorov complexity Beyond Theory 
Lecture notes (taken by Steven Spinn) Lecture notes (taken by Joshua Lee) Lecture notes (taken by Chris Minnich) Lecture notes (taken by Brian Lee) 

33

5/11

Final Exam, Tuesday, May 11, 810am, GFS 118 