
CS 141, Spring 2002: [Intermediate] Data Structures and Algorithms
Algorithm analysis (asymptotic complexity, bigO
notation, bigomega notation, induction, recurrence
relations), algorithm design (divide and conquer,
greedy, dynamic programming), string matching
algorithms (KMP), graph algorithms (connectivity,
minimum cost spanning tree, singlesource shortest
path, allpairs shortest path), NP completeness
Course Format
Three 50minute lectures and threehour lab per week (labs starts Apr 8th)
Two howeworks (10%)
Two programming assignment (15%)
Quiz 1 (15%)
Quiz 2 (20%)
Final (40%)
Prerequisites
CS 14
MATH 009C or MATH 09HC
MATH 112
Ability to program in C++
Class Meetings
Mon 2:103:00 SPR 1340 (001), 3:104:00 SPR 1340 (002)
Wed 2:103:00 SPR 1340 (001), 3:104:00 SPR 1340 (002)
Fri 2:103:00 SPR 1340 (001), 3:104:00 SPR 1340 (002)
Lab Meetings
(021) Tue 11:102:00 SURGE 170 (Ram Sharma, rssharma@cs.ucr.edu)
(022) Wed 11:102:00 SURGE 170 (Yu Luo, yuluo@cs.ucr.edu)
(023) Mon 8:1011:00 SURGE 172 (Jing Ling Ling, ljin@cs.ucr.edu)
(024) Thu 8:1011:00 SURGE 170 (Jing Ling Ling, ljin@cs.ucr.edu)
(025) Thu 2:105:00 SURGE 170 (Ram Sharma, rssharma@cs.ucr.edu)
(026) Fri 8:1011:00 SURGE 170 (Yu Luo, yuluo@cs.ucr.edu)
Office hours
Office hours are held in SURGE 320 (please send class related email to cs141p@cs.ucr.edu)
Mon 4:305:30 SURGE 320
Wed 4:305:30 SURGE 320
TAs office hours
TA office hours are held in SURGE 282
Jing Ling Ling, Thu 11:0011:45
Yu Luo, Fri 11:0012:00
Ram Sharma, Tue 10:0011:00
Textbook
Algorithm Design (Foundations, Analysis, and Internet Examples) by Michael T. Goodrich and Roberto Tamassia, Wiley.
Other references
Introduction to Algorithms (2nd Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein, MIT Press.
Data Structures and Algorithms in JAVA (2nd edition) by Michael T. Goodrich and Roberto Tamassia, Wiley.
Tentative list of topics
Apr 1: Course overview, analysis of algorithms
Apr 8: Discrete math for algorithm analysis
Apr 15: String matching, KMP
Apr 22: Greedy approach for algorithm design
QUIZ 1 (Apr 26, in class, closed book, closed notes)
Apr 29: Divide and conquer, dynamic programming
May 6: Graphs, and their representation
May 13: Graph traversal, connectivity
May 20: Minimum cost spanning tree, singlesource shortest path
QUIZ 2 (May 22, in class, closed book, closed notes)
May 27: Allpais shortest path
Jun 3: NP completeness, review
FINALS
Jun 11: 3 to 6 pm (001 Sproul 1340)
Jun 14: 3 to 6 pm (002 Sproul 1340)
Actual list of topics
Apr 1: Course overview, worst case time complexity, pseudo code, bigOh, bigOmega, bigTheta, properties of bigOh, bigOmega, bigTheta, asymptotic analysis, discrete math (summations, proof techniques)
Apr 8: Examples of recursive programs and their complexity, recurrence relations (slicing pizza, Hanoi, Mergesort), deriving recurrence relations from recursive programs, complexity of a problem vs complexity of an algorithm, solving recurrence relations (substitution, guessandtest)
Apr 15: Solving recurrence relations with master method, (2,4)trees (insertion and deletion)
Apr 22: Greedy algorithms (Task scheduling, Fractional Knapsack)
Apr 29: Greedy algorithms (Huffman Coding), Divide and Conquer (Integer Multiplication, Matrix Multiplication), Dynamic Programming (Counting combinations)
May 6: Dynamic Programming (01 Knapsack, Matrix chain multiplication), String Matching (Brute Force)
May 13: String Matching (KMP), Tries, Compressed Tries, Suffix Tries, Graphs (intro), DFS
May 20: Connected components, Biconnected components
May 27: BFS, Biconnected components, Weighted Graphs
Jun 3: SingleSource shortest path (Dijkstra), Allpairs shortest path (DynProg), Minimum Spanning Tree (Kruskal, Prim)
Mailing list and Newsgroup
Register to CS141 mailing list with your CS account
or read the newsgroup
Slides (not available anymore) (Notes: if you use Internet Explorer rightclick on the slides, "Save Target As...", and open the files from the hard disk. If you use Netscape, rightclick and select "Save Link As ...", and open the files from the hard disk)
Slides [PDF Format 3 slides/page] (Course Overview)
Slides [PDF Format 2 slides/page] (Course Overview)
Slides [PDF Format 3 slides/page] (Intro and Recurrence Relation Analysis)
Slides [PDF Format 2 slides/page] (Intro and Recurrence Relation Analysis)
Slides [PDF Format 3 slides/page] ((2,4)trees)
Slides [PDF Format 2 slides/page] ((2,4)trees)
Slides [PDF Format 3 slides/page] (Divide and Conquer, Greedy, Dynamic programming)
Slides [PDF Format 2 slides/page] (Divide and Conquer, Greedy, Dynamic programming)
Slides [PDF Format 3 slides/page] (String Matching)
Slides [PDF Format 2 slides/page] (String Matching)
Slides [PDF Format 3 slides/page] (Graphs)
Slides [PDF Format 2 slides/page] (Graphs)
Slides [PDF Format 3 slides/page] (Weighted Graphs)
Slides [PDF Format 2 slides/page] (Weighted Graphs)
Slides [PDF Format 2 slides/page] (About the final)
Assignment policies
The rules of the game
Homeworks (not available anymore)
Homework 1 (posted April 5, 2002  due April 22, 2002)
Homework 2 (posted May 3, 2002  revised May 13, 2002  due May 20, 2002)
Homework solutions (not available anymore)
Solution Homework 1 (posted April 23, 2002  revised April 24, 2002)
Solution Homework 2 (posted May 20, 2002)
Programming assignments (not available anymore)
Project 1 (posted April 15, 2002  due May 6th, 2002)
Project 2 (posted May 19, 2002  due June 3th, 2002)
Programming assignment solutions (not available anymore)
Project 1 source code (posted May 7th, 2002)
Project 2 source code (posted Jun 5th, 2002  updated Jun 6th, 2002)
Practise Questions (not available anymore)
Practise Questions 1 (posted April 22, 2002  revised April 23, 2002)
Practise Questions 2 (posted May 13, 2002)
Practise Questions 3 (posted June 4, 2002)
Quizzes (not available anymore)
Quiz 1/A (Section 1) (posted April 26, 2002)
Quiz 1/B (Section 1) (posted April 26, 2002)
Quiz 1/C (Section 2) (posted April 26, 2002)
Quiz 1/D (Section 2) (posted April 26, 2002)
Quiz 2/A (Section 1) (posted May 22, 2002)
Quiz 2/B (Section 1) (posted May 22, 2002)
Quiz 2/C (Section 2) (posted May 22, 2002)
Quiz 2/D (Section 2) (posted May 22, 2002)
Tutorials
Kelsey's tutorial on Linux and C++
Tao's tutorial on Recurrence Relations
David's tutorial on Longest Common Subsequence
David's tutorial on Graphs, graph representation, and traversal
David's tutorial on Minimum Spanning Trees
David's tutorial on Shortest Path
Theoretical Computer Science Cheat Sheet [PDF format]
Algorithm Animations
Data Structure Animation
Splay trees animation
Graph Algorithms Animation (Dijkstra, Prim, Kruskal, FordFulkerson)
Animated Algorithms (sorting, priority queues, Huffman, Matrix chain multiplication, MST, Dijkstra)
Dijkstra's Shortest Path Animation
Algorithm Animations
JAWAA (DFS,BFS)
String matching algorithm animation
Another string matching algorithm animation
Brute Force string matching animation
KMP string matching animation
Suffix tree applet
