Fall Quarter, 2004

Intermediate Data Structures and Algorithms


  • Final syllabus posted
  • Warm-up questions (with some solutions)
  • Homework 3 solution posted
  • Project 3 deadline extended to December 1st.
  • Project 3 posted
  • Quiz 2 syllabus posted
  • Warm-up questions (with some solutions) and a sample quiz2 (with solution) posted
  • Homework 3 posted
  • Homework 2 solution posted
  • Quiz 2 is Wednesday November 17, in class (covers all the material up to the lecture on Friday November 12th)
  • Project 2 posted
  • Quiz 1 syllabus posted
  • Warm-up questions (with some solutions) and a sample quiz1 (with solution) posted
  • Homework 2 posted
  • Quiz 1 is Wednesday October 27, in class (covers all the material up to the lecture on Friday October 22nd)
  • Homework 1 solution posted
  • Project 1 posted
  • Homework 1 posted
  • Chapter 5 of Algorithm Design is available at the UCR Printing and Reprographics (by the Bookstore)
  • The first lab is Friday, Sept 24th
  • 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, three hours; laboratory, three hours. Prerequisite(s): CS 014 with a grade of "C-" or better; MATH 009C or MATH 09HC; CS/MATH 111 or MATH 112; 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: Monday 5-6pm and Thursday 5-6pm. Office: Surge Bldg. 320.

    Teaching Assistants and office hours:
  • Sam Meshkin (smeshkin@cs.ucr.edu), Office hours: Tue 10-11am
  • Serdar Bozdag (sbozdag@cs.ucr.edu), Office hours: Wed 2-3pm
  • Luke Keppler (lkeppler@cs.ucr.edu), Office hours: TBA
  • Kin Fai Kan (kkan@cs.ucr.edu), Office hours: Wed 3-4pm

  • Lectures: Attendance is strongly recommended.
  • (1) MWF 10:10-11:00, GEOL 1408
  • (2) MWF 11:10-12:00, GEOL 1408

  • Labs: Attendance is mandatory.
  • Sec 21, Fri, 8:10am-11am, SURGE 283, Serdar
  • Sec 22, Fri, 11:10am-2pm, SURGE 283, Kin
  • Sec 23, Fri, 2:10pm-5pm, SURGE 283, Luke
  • Sec 24, Fri, 6:10pm-9pm, SURGE 170, Sam

  • Text Book:
  • Data Structures and Algorithms in C++ by Michael T. Goodrich, Roberto Tamassia, and David M. Mount, Wiley.
  • Chapter 5 of Algorithm Design (Foundations, Analysis, and Internet Examples): available at the end of the first week at the UCR Printing and Reprographics (by the Bookstore)

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

  • 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 format 2 slides/page]
  • Algorithm Analysis [PDF format 2 slides/page]
  • Greedy, Divide&Conquer, Dynamic Programming [PDF format 2 slides/page]
  • Graphs [PDF format 2 slides/page]
  • Weighted Graphs [PDF format 2 slides/page]

  • 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

    Course mailing list (send mail now or access the archive): Be sure to sign up to receive important announcements, which will be madeonlythrough the course email list. You must use your CS or EE account, or else some other UCR account, so be sure to learn how to read those accounts or at least automatically forward messages to your personal email address (just create in your home directory a file named ".forward" containing your personal email address).

    Previous course offerings' web pages

    Additional Resources


    Algorithm Animations