Fall Quarter, 2009

Intermediate Data Structures and Algorithms

Lecture Schedule   Lab Session Topics   Grade mapping  Previous offerings  Tutorials   Animations


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. Note: Students receiving less than a C- in the CS 14 prerequisite will be dropped automatically a few weeks into the quarter, as the course relies heavily on basic knowledge of and skills in data structures, discrete mathematics, and programming.

Basic information

Syllabus: Download the PDF file.

Instructor: Stefano Lonardi (stelo@cs.ucr.edu)
Office hours: Tuesday 2-3pm. Office: Engineering 2, 317.

Teaching Assistant:
  • Neeti Pokhriyal (neeti@cs.ucr.edu), Office hours: Tuesdays 1-2pm
  • Office hours are held in Engineering 2, 110.

  • If you are a CS 141 F09 student, please join the CS 141 Facebook. We will use the facebook page to get in touch with students.

  • Lectures:
  • MWF 3:10-4:00, SPTH 1222

  • Labs:
  • (021) Mondays 08:10am-11:00 am ENGR2 135, Neeti

  • 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 (2nd 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.


    See the syllabus. Read the book 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]

  • Tentative list of topics
  • week 1: Course overview, analysis of algorithms
  • week 2: Discrete math for algorithm analysis
  • week 3: Greedy approach for algorithm design
  • week 4: Divide and conquer, dynamic programming
  • week 5: Graphs, and their representation
  • week 6: Graph traversal, connectivity
  • week 7: Minimum cost spanning tree, single-source shortest path
  • week 8: All-pais shortest path
  • week 9: String matching, KMP
  • week 10: NP completeness, review
  • Actual list of topics

    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.





    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:


    Algorithm Animations