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 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.
|
|
Professor Shang-Hua 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 anti-intellectual 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:
|
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 |