A1-Beveled.gif

CSCI 303, Spring 2010
Analysis of Algorithms

=================================================

What's new?

04/13/10: HW5 and Project 1 are posted.

04/03/10: HW3 solutions part A and part B are posted.

03/30/10: HW4 is posted. HW2 solutions posted.

03/4/10: HW3 is posted.

02/24/10: HW1 solutions, part A are posted. The remainder is forthcoming.

02/18/10: HW2 is posted.

02/16/10: HW0 solutions are posted.

02/02/10: HW1 is posted.

01/13/10: HW0 is posted.

 =================================================

 Course Info:

 


Course descriptions and objectives

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 worst-case running time of an algorithm as a function of input size. Although we will focus on the themes of efficient-algorithm 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.

  1. an understanding of basic frameworks for designing efficient algorithms
  2. an understanding of mathematical techniques for analyzing the running time complexity of algorithms
  3. an understanding of the power of randomness in algorithm design
  4. an understanding of basic graph-theoretic and geometric algorithms
  5. an understanding of polynomial time, NP completeness, and problems beyond the NP class
  6. an understanding of modeling and solving real-world problems using algorithmic techniques


Instructor

Professor Shang-Hua Teng
Office hours: Monday 3:30 -- 5:00pm;
Email : shanghua@usc.edu

TA

Jacob Everist 
Office hours: 11:00-1:00 T, SAL 112

Email: everist[at]usc[dot]edu

Textbook

Introduction to Algorithms (3rd Edition)
Thomas H Cormen, Charles E. Leiserson, Ronald L. Rivest and Cliff Stein.

Lectures

9:30 am -- 10:50 TTh in GFS 118 

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 anti-intellectual behavior will be dealt with severely. This includes the possibility of failing the course or being expelled from the University. 

 

=================================================

Course Outline (Tentative)

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
  1. Handout
  2. google/bing "Stable Marriage Problem"
  3. google/bing "Asymptotic notation"
  4. Chapters 1-3
 
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

  1. Google "merge sort"
  2. Chapter 4
  3. Chapter 9
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:
  1. Knapsack for superincreasing sequence
  2. Public Key encription Scheme
  3. Merkle-Hellman Cryptosystem based on Knapsack Scheme
  4. Minimum Spanning Trees
Merkel-Hellman 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:
   Breadth-First 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:
   Depth-First Search and
   Random Walks

Chapter 22-3 HW4 assigned, due 4/13
Lecture notes (taken by Jin Yoo)
24
4/01
DAGs, Topological Sort and strongly connected components
Chapters 22-4 and 22-5 HW3 Solutions, Part A posted.
HW3 Solutions, Part B posted.
Lecture notes (taken by Adam Barrowclough)
25
4/06
Review of Midterm II.
Shortest-Path 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 -- polynomial-time 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, 8-10am, GFS 118