Fall Quarter, 2010

Intermediate Data Structures and Algorithms


Lecture Schedule   Lab Session Topics   Grade mapping  Previous offerings  Tutorials

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; 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

Syllabus:
  • Download the PDF file.

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

  • Teaching Assistant:
  • Anton Polishko (polishka@cs.ucr.edu)
  • Office hours: Wednesday 11-12noon
  • Office hours are held in Engineering 2, 110.

  • Lectures:
  • MWF 3:10pm-4:00pm, EBU2 143

  • Labs:
  • (022) Tuesdays 08:10am-11:00am EBU2 135, Anton

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

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

    Homework


    Projects


    Quizzes


    Labs


    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:

    Tutorials