Fall Quarter, 2014

Intermediate Data Structures and Algorithms

News

  • (Dec 11) Homework 9 solution
  • (Dec 11) warm-up problems
  • (Dec 4) Homework 8 solution
  • (Dec 1) Homework 9 (deadline postponed to Dec 11th)
  • (Dec 1) Quiz 2 (w solution)
  • (Nov 25) Homework 7 solution
  • (Nov 25) Homework 8
  • (Nov 21) Problems discussed in class
  • (Nov 19) Homework 6 solution
  • (Nov 17) Homework 7
  • (Nov 14) Homework 5 solution
  • (Nov 8) Homework 6
  • (Nov 4) Quiz 1 (w solution)
  • (Nov 4) Homework 5
  • (Nov 4) Homework 4 solution
  • (Oct 30) Review problems slides posted
  • (Oct 30) Zach's writeup on Homework 3 (problem 1) posted
  • (Oct 30) Problems to practice the Master Thm
  • (Oct 28) Homework 3 solution, and Homework 4
  • (Oct 27) Mock exam posted
  • (Oct 21) Greedy slides
  • (Oct 21) Homework 2 solution
  • (Oct 19) Homework 3
  • (Oct 17) Homework 1 solution
  • (Oct 13) Homework 2 posted
  • (Oct 9) Divide and Conquer slided posted
  • (Oct 7) Lecture moved to CHUNG 138
  • (Oct 6) Homework 1 posted
  • (Sep 29) Slides posted (intro and analysis)
  • (Sep 26) Zack Benavides is our TA

  • Overview

    CS 141 introduces 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; discussion, 1 hour. 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. Integrate knowledge of data structures, algorithms, and programming.


    Basic information

    Syllabus:
  • Read the syllabus.

  • Instructor:
  • Stefano Lonardi (stelo@cs.ucr.edu)
  • Office hours: Thursday 11:10am-12:10pm.
  • Office: CHUNG HALL, room 325.

  • Teaching Assistant:
  • Zachary Benavides (benavidz@cs.ucr.edu)
  • Office hours: Thursday 12-1pm
  • TA Office hours are held in CHUNG HALL, room 110.

  • Lectures:
  • TR 9:40am-11:00am, CHUNG HALL, room 138.

  • 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
    1 hour/week discussion
    6 to 10 hours/week doing individual study (readings, homework, 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.

  • Discussion Board

    We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com. Find our class page at: https://piazza.com/ucr/fall2014/cs141/home

    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 and other Material:

  • Course Overview [PDF]
  • Algorithm Analysis [PDF]
  • Divide & Conquer [PDF]
  • Greedy [PDF]
  • Dynamic Programming [PDF]
  • Weighted Graphs [PDF]

  • Content covered in lectures:
  • Oct  2: Overview of the course, Analysis (slides 1-26)
  • Oct  7: Analysis (slides 27-50)
  • Oct  9: Analysis (slides 51-74)
  • Oct 14: Analysis (75-end), Divide and Conquer (slides 1-9)
  • Oct 16: Divide and Conquer (slides 10-36)
  • Oct 21: Divide and Conquer (slides 37-55)
  • Oct 23: Divide and Conquer (slides 56-end), Greedy (1-8)
  • Oct 28: Greedy (9-35)
  • Oct 30: Greedy (36-37), Review for Quiz 1
  • Nov  4: Quiz 1
  • Nov  6: Greedy (38-38, skipped Huffman), Dynamic Programming (1-29)
  • Nov 11: Holiday: Veterans' day
  • Nov 13: Quiz 1 review, Dynamic Programming (30-39)
  • Nov 18: Dynamic Programming (40-end)
  • Nov 20: Review for Quiz 2
  • Nov 25: Quiz 2
  • Nov 27: Holiday: Thanksgiving
  • Dec  2: Weighted Graphs
  • Dec  4: Weighted Graphs
  • Dec  9: Weighted Graphs
  • Dec 11: Weighted Graphs, Review for Final
  • Dec 16: Final 8am-11am, WCH 138
  • 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


    Homework and Solutions


    Quizzes and related material


    General course features and policies


    Tutorials