Spring Quarter, 2014

Intermediate Data Structures and Algorithms

News

  • (Jun 4) Homework 9 solution posted
  • (May 28) Homework 9 posted
  • (May 28) Homework 7 solution posted
  • (May 20) Homework 8 posted
  • (May 20) Homework 6 solution posted
  • (May 16) Homework 7 posted
  • (May 15) Slides "Weighted Graphs" posted
  • (May 13) Slides "Graphs" posted
  • (May 7) Homework 5 solution posted
  • (May 6) Homework 6 posted
  • (May 6) Dynamic programming slides posted
  • (May 2) Quiz 1 posted (w solutions)
  • (May 1) Homework 4 solution posted
  • (May 1) Warm-up problems posted
  • (Apr 28) Homework 3 solution posted
  • (Apr 28) "Divide and Conquer" slides updated
  • (Apr 18) "Greedy" slides posted
  • (Apr 17) Homework 2 solution posted
  • (Apr 15) Homework 3 posted
  • (Apr 11) "Divide and Conquer" slides posted
  • (Apr 9) Homework 1 solution posted
  • (Apr 9) Homework 2 posted
  • (Apr 2) Homework 1 posted
  • (Apr 2) New office hours for Stefano: 11am-12noon on Tuesdays
  • (Apr 2) Office hours for Nick: 11am-12noon on Mondays

  • Overview

    CS 141 introduces what many say is the core of Computer Science: data structures like graphs, and problem solving techniques. This material is essential in almost all of our upper-division courses.

    Catalog description: CS 141 Intermediate Data Structures and Algorithms 4 Lecture, 3 hours; discussion, 1 hour. Prerequisite(s): CS 014 with a grade of "C-" or better; CS 111/MATH 111; MATH 009C or MATH 09HC; proficiency in C++. Explores basic algorithm analysis using asymptotic notations, summation and recurrence relations, and algorithms and data structures for discrete structures including trees, strings, and graphs. Also covers general algorithm design techniques including "divide-and-conquer," the greedy method, and dynamic programming. Integrate knowledge of data structures, algorithms, and programming.


    Basic information

    Syllabus:
  • Read the syllabus.

  • Instructor:
  • Stefano Lonardi (stelo@cs.ucr.edu)
  • Office hours: Tuesdays 11am-12noon.
  • Office: CHUNG room 325.

  • Teaching Assistant:
  • Nicholas Rhodes (nrhod001@ucr.edu)
  • Office hours: Mondays 11am-12noon
  • TA Office hours are held in CHUNG room 110.

  • Lectures:
  • MWF 10:10am-11:00am, CHUNG, room 138

  • Text Book:
  • Algorithms, by Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani. McGrawHill 2007.

  • References:
  • Introduction to the Design and Analysis of Algorithms, 2nd edition, by A. Levitin.
  • Introduction to Algorithms (3rd Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein, MIT Press.
  • Algorithm Design (Foundations, Analysis, and Internet Examples) by Michael T. Goodrich and Roberto Tamassia, Wiley.

  • Approximate Time Requirements:
  • This is a four-unit CS course. As such, you should expect to spend the following approximate amount of time: 3 hours/week in lecture
    1 hour/week discussion
    6 to 10 hours/week doing individual study (readings, homework, programming assignments, preparation for lectures, etc).
  • Please don't underestimate the time you will need to spend on this course. These are real time amounts spent by average successful past students. Computer Science and Engineering are challenging disciplines requiring extensive time to master.

  • Discussion Board

  • Discussion board is on Piazza
  • Lectures

    Read the book and the slides before lecture! Reading ahead is one of the most effective ways of doing better in class -- you'll be amazed how much more comprehensible and useful the lectures will be. The schedule is subject to change as the quarter progresses.

    Lecture Notes and other Material:

  • Course Overview [PDF]
  • Algorithm Analysis [PDF]
  • Divide & Conquer [PDF] (updated Apr 28)
  • Greedy [PDF]
  • Dynamic Programming [PDF]
  • Graphs [PDF]
  • Weighted Graphs [PDF]

  • Content covered in lectures:
  • Mar 31: Overview of the course, Analysis (slides 1-16)
  • Apr  2: Analysis (slides 17-35)
  • Apr  4: Analysis (slides 36-57)
  • Apr  7: Analysis (slides 58-70)
  • Apr  9: Analysis (slides 71-80)
  • Apr 11: Analysis (slides 81-end), Divide and Conquer (slides 1-5)
  • Apr 14: Divide and Conquer (slides 6-28)
  • Apr 16: Divide and Conquer (slides 29-32, 45-56)
  • Apr 18: Divide and Conquer (slides 57-end)
  • Apr 21: Divide and Conquer (slides 33-45)
  • Apr 23: Greedy (slides 1-25)
  • Apr 25: Greedy (slides 26-34)
  • Apr 28: Greedy (slides 35-43)
  • Apr 30: Prep for Quiz 1
  • May  2: Quiz 1
  • May  5: Quiz 1 review, Greedy (44-end)
  • May  7: Dynamic programming (1-26)
  • May  9: Dynamic programming (26-39)
  • May 12: Dynamic programming (40-end)
  • May 14: Graphs (1-35)
  • May 16: Graphs (36-75)
  • May 19: Graphs (76-end), Weighted Graphs (1-18)
  • May 21: Prep for Quiz 2
  • May 23: Quiz 2
  • May 26: Holiday
  • May 28: Weighted Graphs (19-)
  • May 30: Weighted Graphs ()
  • Jun  2: Weighted Graphs ()
  • Jun  4: Weighted Graphs (-end)
  • Jun  6: Review for Final
  • Jun 13: Final 8am-11am, WCH 138
  • Do not put off reading the assignments or you will risk falling behind. Reading ahead is one of the most effective ways of doing better in class -- you'll be amazed how much more comprehensible and useful the lectures will be.

    Python Code


    Homework and Solutions


    Quizzes and related material


    General course features and policies


    Tutorials