Spring Quarter, 2007

Intermediate Data Structures and Algorithms


  • Jun 4: warm-up problems for Final posted.
  • May 31: hw3 solution posted.
  • May 31: syllabus final posted.
  • May 23: prj3 posted.
  • May 18: warm-up problems for Quiz 2 posted.
  • May 16: hw3 posted.
  • May 8: "graph" slides posted.
  • May 2: project 2 posted.
  • Apr 27: mock exam posted (for Quiz 1).
  • Apr 27: warm-up problems for Quiz 1 posted.
  • Apr 25: syllabus for Quiz 1 posted.
  • Apr 25: Homework 2 posted.
  • Apr 19: Homework 1 solution posted.
  • Apr 18: "dynamic programming" slides posted.
  • Apr 18: "greedy" slides posted.
  • Apr 16: "divide and conquer" slides posted.
  • Apr 12: office hours cancelled.
  • Apr 11: Project 1 posted.
  • Apr 6: Lab 2 posted.
  • Apr 4: Homework 1 posted.
  • Apr 2: Both lab sessions will be offered.
  • Mar 30: "Intro" and "Algorithm Analysis" slides posted.

  • Lecture Schedule   Lab Session Topics  Email list   Turnin   Grade mapping  Previous offerings  Resources   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: Mon and Thu 4-5pm. Office: Engineering 2, 317.

    Teaching Assistants and office hours:
  • Elena Harris (elenah@cs.ucr.edu), Office hours: Monday 12-1pm and Thursday 1pm-2pm
  • Office hours are held in Engineering 2, 110.

  • MWF 1:10-2:00, SPR 2339

  • Labs:
  • (021) T 8:10 a.m.-11:00 a.m., EBU2 135, Elena
  • (022) T 2:10 p.m.-5:00 p.m., EBU2 135, Elena

  • Academic Excellence Workshops:
  • T and R, 1-2 pm, EBU2 103, Ben

  • Text Book:
  • Introduction to the Design and Analysis of Algorithms, 2nd edition, by A. Levitin.

  • References:
  • 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]
  • String Matching

  • 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

    Electronic assignment turn-in

    Anonymously report suspected cheating

    Grade mapping

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

    Course email list

    Be sure to enroll to CS 141 with Moodle to receive important announcements, which will be madeonlythrough the course email list.

    Previous course offerings' web pages


    Algorithm Animations