|  | CS 141, Spring 2002: [Intermediate] Data Structures and Algorithms 
 
		Algorithm analysis (asymptotic complexity, big-O
		notation, big-omega notation, induction, recurrence
		relations), algorithm design (divide and conquer,
		greedy, dynamic programming), string matching
		algorithms (KMP), graph algorithms (connectivity,
		minimum cost spanning tree, single-source shortest
		path, all-pairs shortest path), NP completeness
		 Course Format 
	      Three 50-minute lectures and three-hour 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:10-3:00 SPR 1340 (001), 3:10-4:00 SPR 1340 (002)
            Wed 2:10-3:00 SPR 1340 (001), 3:10-4:00 SPR 1340 (002)
            Fri 2:10-3:00 SPR 1340 (001), 3:10-4:00 SPR 1340 (002)
	     Lab Meetings 
	    (021) Tue 11:10-2:00 SURGE 170 (Ram Sharma, rssharma@cs.ucr.edu)
	    (022) Wed 11:10-2:00 SURGE 170 (Yu Luo, yuluo@cs.ucr.edu)
            (023) Mon 8:10-11:00 SURGE 172 (Jing Ling Ling, ljin@cs.ucr.edu)(024) Thu 8:10-11:00 SURGE 170 (Jing Ling Ling, ljin@cs.ucr.edu)
	    (025) Thu 2:10-5:00 SURGE 170 (Ram Sharma, rssharma@cs.ucr.edu)
	    (026) Fri 8:10-11:00 SURGE 170 (Yu Luo, yuluo@cs.ucr.edu) Office hours 
	    Office hours are held in SURGE 320 (please send class related email to cs141-p@cs.ucr.edu)
	     
	    Mon 4:30-5:30 SURGE 320
	    Wed 4:30-5:30 SURGE 320
             TAs office hours 
	    TA office hours are held in SURGE 282
	     
		Jing Ling Ling, Thu 11:00-11:45
		Yu Luo, Fri 11:00-12:00
		Ram Sharma, Tue 10:00-11: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, single-source shortest path
	    QUIZ 2 (May 22, in class, closed book, closed notes)
	    May 27: All-pais 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, big-Oh, big-Omega, big-Theta, properties of big-Oh, big-Omega, big-Theta, 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, guess-and-test)
	    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 (0-1 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: Single-Source shortest path (Dijkstra), All-pairs 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 right-click on the slides, "Save Target As...", and open the files from the hard disk. If you use Netscape, right-click 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, Ford-Fulkerson)
	    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
             |