CS 218: Design and Analysis of Algorithms
Winter Quarter, 2005
(Mar 10th) Homework 5 solution posted.
(Mar 7th) Homework 5 updated.
(Mar 4th) Final syllabus posted.
(Mar 2nd) Homework 5 deadline postponed.
(Feb 25th) Midterm II solution posted.
(Feb 24th) Midterm II posted.
(Feb 24th) Homework 5 posted.
(Feb 22nd) Homework 4 solution posted.
(Feb 15th) Midterm II syllabus posted.
(Feb 11th) Homework 3 solution posted.
(Feb 10th) Homework 4 posted.
(Feb 4th) Midterm I solution posted.
(Feb 3rd) Midterm I posted.
(Jan 28th) Homework 3 and Homework 2 solution posted.
(Jan 25th) Midterm I syllabus posted.
(Jan 20th) Homework 1 solution posted.
(Jan 18th) Homework 2 posted.
(Jan 13th) Entrance quiz posted.
(Jan 6th) Homework 1 posted.
Lecture Schedule Email list Resources Tutorials Animations
Catalog description: CS 218. Design and
Analysis of Algorithms (4) Lecture, 3 hours; outside research, 3
hours. Prerequisite(s): CS 141. Study of efficient data structures and
algorithms for solving problems from a variety of areas such as
sorting, searching, selection, linear algebra, graph theory, and
computational geometry. Worstcase and averagecase analysis using
recurrence relations, generating functions, upper and lower bounds,
and other methods. UCR course schedule,
UCR course
catalog.
Instructor:
Stefano Lonardi (stelo AT cs.ucr.edu)
Office hours: Wednesday 45:30pm. Office: Surge Bldg. 320.
Teaching Assistant:
Nitin Kumar (nkumar AT cs.ucr.edu), Office hours: Tuesdays 34PM, Surge 352.
Lectures:
TR, 5:10pm6:30pm OLMH 421
Text Book:
Introduction to Algorithms (2nd Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein, MIT Press.
Prerequisites:
Graduate standing, undergraduate courses in algorithms
and data structures.
Prerequisites by topic:
Discrete Math: asymptotic notation, basic summation formulas,
recurrence equations, sets (operations on sets, relations, functions),
counting (permutations, sets, combinations, binomial coefficients),
probability (independence, random variable, expected value),
recurrence relations
Basic Data Structures: array, list, queue, stack, binary search
trees, balanced binary search trees, heap
Sorting and Searching: quicksort, mergesort, heapsort, radixsort,
binary search
Graph algorithms: DFS, BFS, connected components, biconnected components,
transitive closure
Digraph algorithms: DFS, BFS, strongly connected components, topological sorting
Tentative list of topics
Intro to Analysis: recurrence relations, master theorem, amortized analysis
Pattern matching: brute force, KMP, tries and suffix trees
Greedy: task scheduling, factional knapsack, Huffman codes, Dijkstra, Prim, Kruskal
UnionFind (list and tree implementation, union by rank and path compression, analysis)
Divide and conquer: lineattime selection, Strassen, FFT, Integer multiplication
Dynamic programming: Subset sum, LCS, matrix chain multiplication, FloydWarshall
Graph algorithms: Flow and matching
Numerical algorithms: primality testing, RSA
Data structures: binomial heaps and Fibonacci heaps, splay trees
Actual list of topics
Jan 4th: Course overview, Analysis of Algorithms (slides 135)
Jan 6th: Analysis of Algorithms (slides 3652) [HW1 posted]
Jan 11th: Analysis of Algorithms (slides 53end), [Entrance quiz (40mins)]
Jan 13th: String Matching (slides 1end)
Jan 18th: Greedy+UnionFind (slides 141) [HW1 due, HW2 posted]
Jan 20th: Greedy+UnionFind (slides 4283)
Jan 25th: Greedy+UnionFind (slides 84125)
Jan 27th: Greedy+UnionFind (slides 126end), DivideConquer (slides 118) [HW2 due, HW3 posted]
Feb 1st: DivideConquer (slides 1951)
Feb 3rd: [Midterm I (80mins, in class, closed book, closed notes)]
Feb 8th: Midterm I review, DivideConquer (slides 5264)
Feb 10th: DivideConquer (slides 65end), DynProgramming (slides 120) [HW3 due, HW4 posted]
Feb 15th: DynProgramming (slides 2050)
Feb 17th: DynProgramming (slides 5163 76end)
Feb 22nd: DynProgramming (slides 6475), Flow (slides 113) [HW4 due]
Feb 24th: [Midterm II (80mins, in class, closed book, closed notes)][HW5 posted]
Mar 1st: Midterm II review, Flow (slides 1317)
Mar 3rd: Flow (slides 1836)
Mar 8th: Flow (slides 37end (skipped slides 71 and 72 for lack of time))
Mar 10th: Review [HW5 due]
Mar 15th: [Final 710PM (in class, closed book, closed notes)]
Slides
Intro [PDF 2pages/slide]
Intro to the Analysis of Algorithms [PDF 2pages/slide]
String Matching [PDF 2pages/slide]
Greedy+UnionFind [PDF 2pages/slide]
Divide and conquer [PDF 2pages/slide]
Dynamic Programming [PDF 2pages/slide]
Flow and Matching [PDF 2pages/slide]

Academic dishonesty: Cheating
will be strongly punished (typically
with an F in the course). You can
report cheating anonymously at:
https://www.cs.ucr.edu/cheating/. Assignment
submissions must represent your
original work. Copying from any
sources (web, other books, past or
current students, etc.) is strictly
prohibited. While discussing
assignments together is
encouraged, pooling common answers
is not allowed. Be aware that a
subset of exams may be photocopied,
for comparison with exams submitted
for regrades. Also, be aware that
lying to an instructor in order to be
able to makeup a missed exam or in
other ways to obtain a better grade
can be treated as academic dishonesty.

Regrade policy: Regrade
requests must be submitted in
writing and within two weeks of
the distribution of the graded
material. The entire
homework/test/assignment may be
regraded, not just the problem in
question, so the grade may go up or
down. Thus, think your regrade
requests through carefully. Recording errors should also be pointed out to
the instructor before the last class.

Final grades: Per university
policy, changes to your final grade
will be made only in the event
of a clerical error. Asking your
instructor how far you were from a
cutoff and what extra work you can do
to improve the grade is not
appropriate.

Communicating with the instructors
: When sending electronic
mail to the instructors or
graders, please include your full
name, student ID
number, and UCR email
address, so that we may properly
identify you (remember, many students
have similar names). Also, please try
to be polite and use reasonable
grammar and formatting.

Cell phones: During lectures
please turn off your
cell phone. During exams, cell phones
must not be visible (e.g., store them
inside a backpack).

Written Assignments: All
assignments and solutions will be
posted on the class homepage. Write
your full name with uppercase LAST
name, assignment number, student ID,
login. Write legibly: what cannot be
read will not be graded. Consider
typing the assignment if you
handwriting is hard to read. Written
assignments have to be submitted
before the beginning of the
class on the due date on the
instructor's desk. No
late assignment will be accepted. Any
problem with grading of a written
assignment should be addressed at the
latest two weeks after the
assignment is returned to you.
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).