CS 218: Design and Analysis of Algorithms

Fall Quarter, 2018

News

  • (Dec 6) Problems discussed in class posted
  • (Dec 5) Updated slides on Flow
  • (Dec 2) Midterm 2 posted
  • (Nov 28) Problems discussed in class posted
  • (Nov 20) The final is Monday, December 10, 3-6PM in MSE 103
  • (Nov 14) Mock midterm 2 posted
  • (Nov 14) Midterm syllabus posted
  • (Nov 14) Homework 6 posted
  • (Nov 13) Slides posted
  • (Nov 8) Homework 5 posted
  • (Nov 6) Slides posted
  • (Oct 31) Homework 4 posted
  • (Oct 31) Midterm I posted
  • (Oct 25) Mock midterm 1 posted
  • (Oct 25) Midterm syllabus posted
  • (Oct 24) Slides posted
  • (Oct 17) Homework 3 posted
  • (Oct 9) Entrance exam posted
  • (Oct 9) Slides posted
  • (Oct 9) Homework 2 posted
  • (Oct 2) Homework 1 posted
  • (Sep 28) Slides posted
  • (Sep 7) First lecture is Friday September 28th, 10:10am
  • Overview

    Catalog description: Design and Analysis of Algorithms (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141. Study of efficient data structures and algorithms for solving problems from a variety of areas such as sorting, searching, selection, linear algebra, graph theory, and computational geometry. Worst-case and average-case analysis using recurrence relations, generating functions, upper and lower bounds, and other methods.

    Basic information

    Instructor: Stefano Lonardi (stelo AT cs.ucr.edu)
    Office hours: Monday 3:10-4:00pm. Office: Chung Hall 325.

    Teaching Assistant:
  • Tin Vu (tvu032@ucr.edu)
    TBA's office hours: Tuesday 4-5pm. Location: Chung Hall 110.

  • Lectures:
  • MWF, 10:10am-11:00am, MSE 103

  • Text Book:
  • Introduction to Algorithms (3rd Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein, MIT Press.

  • Prerequisites:
  • Graduate standing, undergraduate courses in algorithms and data structures. Students without an undergraduate courses in algorithms (CS 141 equivalent) and basic data structures (CS 14 equivalent) will not allowed to enroll.

  • Prerequisites by topic:
  • Discrete Math: asymptotic notation, basic summation formulas, sets (operations on sets, relations, functions), counting (permutations, sets, combinations, binomial coefficients), probability (independence, random variable, expected value)
  • Basic Data Structures: array, list, queue, stack, binary search trees, balanced binary search trees, heap
  • Sorting and Searching: quicksort, mergesort, heapsort, radix-sort, binary search
  • Graph algorithms: DFS, BFS, connected components, biconnected components, transitive closure
  • Digraph algorithms: DFS, BFS, strongly connected components, topological sorting
  • Lectures

    Tentative list of topics

  • Intro to Analysis: recurrence relations, master theorem, amortized analysis
  • Divide and conquer: linear-time selection, Strassen, FFT, Integer multiplication
  • Randomized: selection in expected linear time, polynomial verification
  • Greedy: task scheduling, factional knapsack, Huffman codes, Dijkstra, Prim, Kruskal
  • Union-Find: list and tree implementation, union by rank and path compression, analysis
  • Dynamic programming: Subset sum, LCS, matrix chain multiplication, Floyd-Warshall
  • Graph algorithms: Network Flow and Bipartite Matching
  • Actual list of topics

  • F, Sep 28: Course overview, Analysis (1-12)
  • WEEK 1
  • M, Oct  1: Analysis (13-28)
  • W, Oct  3: Analysis (29-42) [HW1 posted]
  • F, Oct  5: Analysis (43-56)
  • WEEK 2
  • M, Oct  8: Analysis (57-60) [Entrance quiz (30mins, in class, closed book, closed notes)]
  • W, Oct 10: Analysis (61-end) [HW1 due, HW2 posted]
  • F, Oct 12: Divide and Conquer (1-11)
  • WEEK 3
  • M, Oct 15: Divide and Conquer (12-26)
  • W, Oct 17: Divide and Conquer (27-41) [HW2 due, HW3 posted]
  • F, Oct 19: Divide and Conquer (42-65)
  • WEEK 4
  • M, Oct 22: Divide and Conquer (66-73)
  • W, Oct 24: Divide and Conquer (74-end) [HW3 due]
  • F, Oct 26: Greedy (1-22)
  • WEEK 5
  • M, Oct 29: Midterm 1 review
  • W, Oct 31: [Midterm I (50mins, in class, closed book, closed notes)][HW4 posted]
  • F, Nov  2: Midterm 1 post-review, Greedy (23-35)
  • WEEK 6
  • M, Nov  5: Greedy (50-58)
  • W, Nov  7: Greedy (35-46)[HW4 due, HW5 posted]
  • F, Nov  9: Greedy (47-49, 59-76)
  • WEEK 7
  • M, Nov 12: HOLIDAY - Veterans' day
  • W, Nov 14: Greedy (77-87, 100-end, skipped 88-99), Dynamic programming (1-7) [HW5 due, HW6 posted]
  • F, Nov 16: Dynamic programming (7-27)
  • WEEK 8
  • M, Nov 19: Dynamic programming (28-43)
  • W, Nov 21: Dynamic programming (44-66)[HW6 due]
  • F, Nov 23: HOLIDAY - Thanksgiving
  • WEEK 9
  • M, Nov 26: Dynamic programming (67-end), Network Flow (1-)
  • W, Nov 28: Midterm 2 review[HW7 posted]
  • F, Nov 30: [Midterm II (50mins, in class, closed book, closed notes)]
  • WEEK 10
  • M, Dec  3: Network Flow (-)
  • W, Dec  5: Network Flow (-end), Midterm 2 post-review[HW7 due]
  • F, Dec  7: Final review
  • FINALS' WEEK
  • M, Dec 10, 3-6PM: Final [Final (180 mins, in class, closed book, closed notes)]
  • Slides

  • Intro [PDF 2pages/slide]
  • Algorithm Analysis [PDF 2pages/slide]
  • Divide and Conquer (and randomized) algorithms [PDF 2pages/slide]
  • Greedy algorithms [PDF 2pages/slide]
  • Dynamic Programming algorithms (updated) [PDF 2pages/slide]
  • Network flow algorithms [PDF 2pages/slide]
  • Homework

    Homework papers should be prepared in LaTeX (figures can be hand-drawn), then converted/scanned to pdf format and turned in via Gradescope. Each student's work should be fully authored by his or her self, in his or her own words - that is, each student should turn in only text authored by his or her self. Each student is responsible for understanding all text that they submit. Finally, in each turned-in work, each student should appropriately cite any help or ideas that came from any other source. Violation of this policy is plagiarism and will be referred to the UCR student conduct office.

    Exams

    Policies