Stefano Lonardi

Assistant Professor, Computer Science & Engineering

University of California, Riverside, CA 92521

Last updated:
Apr 14, 2003

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