Fall Quarter, 2011

Intermediate Data Structures and Algorithms

Lecture Schedule   Lab Session Topics   Grade mapping  Tutorials


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; laboratory, 3 hours. 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. Homework and programming assignments integrate knowledge of data structures, algorithms, and programming.

UCR course schedule, UCR course catalog.

Basic information

  • Download the PDF file.

  • Instructor:
  • Stefano Lonardi (stelo@cs.ucr.edu)
  • Office hours: Wednesday 10:30-11:30am.
  • Office: Engineering 2, room 325.

  • Teaching Assistant:
  • Olga Tanaseichuk (tanaseio@cs.ucr.edu)
  • Office hours: Tuesday 1-2pm
  • Office hours are held in Engineering 2, room 110.

  • Lectures:
  • MWF 2:10pm-3:00pm, Engineering 2, room 143

  • Labs:
  • (021) Monday 08:10am-11:00am, Engineering 2 room 135, Olga

  • 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
    3 hours/week in lab
    6 to 10 hours/week doing individual study (readings, homeworks, 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.

  • 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:

  • Course Overview [PDF]
  • Algorithm Analysis [PDF]
  • DivideConquer [PDF]
  • Greedy [PDF]
  • Dynamic Programming [PDF]
  • Graphs [PDF]
  • Weighted Graphs [PDF]

  • Content covered in lectures:
  • Sep 23: Overview of the course, Analysis [slides 1-5]
  • Sep 26: Analysis [slides 6-22]
  • Sep 28: Analysis [slides 23-35][HW1 posted]
  • Sep 30: Analysis [slides 36-48]
  • Oct  3: Analysis [slides 49-64]
  • Oct  5: Analysis [slides 64-74] [PRJ1 posted]
  • Oct  7: Analysis [slides 74-end]
  • Oct 10: Divide and Conquer [slides 1-9]
  • Oct 12: Divide and Conquer [slides 10-19][HW1 due]
  • Oct 14: Divide and Conquer [slides 20-34]
  • Oct 17: Divide and Conquer [slides 35-end]
  • Oct 19: Greedy [slides 1-8][HW2 posted] [PRJ1 due]
  • Oct 21: Greedy [slides 9-29]
  • Oct 24: Prep for Quiz 1
  • Oct 26: Quiz 1 (in class, closed book, closed notes) [PRJ2 posted]
  • Oct 28: Quiz 1 review, Greedy [slides 30-34]
  • Oct 31: Greedy [slides 35-end]
  • Nov  2: Dynamic Programming [slides 1-26][HW2 due]
  • Nov  4: Dynamic Programming [slides 27-36]
  • Nov  7: Dynamic Programming [slides 37-50]
  • Nov  9: Dynamic Programming [slides 51-end], Graphs [slides 1-29] [HW3 posted]
  • Nov 11: NO CLASS, Veterans' Day
  • Nov 12: [PRJ2 due]
  • Nov 14: Prep for Quiz 2
  • Nov 16: Quiz 2 (in class, closed book, closed notes) [PRJ3 posted]
  • Nov 18: Graphs [slides 30-70]
  • Nov 21: Graphs [slides 71-end], Weighted Graphs [1-14]
  • Nov 23: Weighted Graphs [15-][HW3 due]
  • Nov 28: Weighted Graphs []
  • Nov 30: Weighted Graphs [][PRJ3 due]
  • Dec  2: Prep for final
  • Dec  5: Final 3-6pm, EBU2 143
  • 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



    Quizzes and related material


    General course features and policies

    Lab guidelines

    Grade mapping

    The following mapping shows how your overall numerical scores will be translated into letter grades at the end of the quarter: