Efficient Algorithms and Intractable Problems
Fall 2011
Announcements
People and contact information
Lecturer:
Professor James Demmel
- email to demmel@cs
Office: 564 Soda, 643-5386; also 831 Evans
Lectures: TTh 11:00-12:30 (100 Lewis)
Office hours: M 2-3 (changed starting 10/31), T 2-3 and F 2-3
in 564 Soda (or in a nearby meeting room), or by appointment
GSIs:
Please send questions about homework to all 5 instructors (professor and GSIs)
by using
Piazza.
The webpage has instructions for creating an account if you do not
already have one; please send questions about creating a Pizza account to
Tobias.
For questions about enrollment and other personal questions, please
send email to
cs170@inst.eecs.berkeley.edu.
Discussion Sections
Enrollment: Please send all queries to
Michael-David Sasson
or Head GSI
Tobias Welp
Homeworks
Please send questions about homework to all instructors
by using
Piazza.
(For enrollment or other personal questions please email
cs170@inst.eecs.berkeley.edu.)
The (roughly weekly) homework sets (and solutions)
will be posted here as the term progresses.
In general, problem sets will be assigned on Wednesday and will be
due Friday the following week at 4pm in the boxes
in 283 Soda Hall. Make sure to put your name, SID, course name (CS170),
homework number, TA's name, and section number on the first page, and staple
all the pages together.
For homework questions that involve designing and analyzing algorithms,
we require a specific format for the answers (to both help you organize
your thoughts and help the readers grade your answers), that you can find
here.
You are encouraged to work on homework problems in study groups
of 2 to 4 people. But you must write up your own solutions, and
not read or copy the solutions of other students. You may use
books or on-line resources to help solve homework problems, but
you must credit all such sources in your writeup and you must
not copy material verbatim. See also the discussion of grading
and academic honesty below.
We believe that most students can distinguish between helping other
students and cheating. Explaining the meaning of a question, discussing a
way of approaching a solution, or collaboratively exploring how to solve
a problem within your group is an interaction that we encourage. On the
other hand, you should never read another student's solution or partial
solution, nor have it in your possession, either electronically or on
paper. You must never share your written solutions, or a partial solutions,
with another student, even with the explicit understanding that it will
not be copied.
You should write your homework solution strictly by yourself. You
must explicitly acknowledge everyone who you have worked with or who
has given you any significant ideas about the homework. Not only is this
good scholarly conduct, it also protects you from accusations of theft
of your colleagues' ideas.
Warning: Your attention is drawn to the Department's
Policy on Academic Dishonesty.
In particular, you should be aware that
copying or sharing solutions, in whole or in part, from other
students in the class or any other source without acknowledgment
constitutes cheating. Any student found to be cheating risks automatically
failing the class and being referred to the Office of Student Conduct.
No late homework will be accepted, since the answers will
be posted on the web immediately afterwards. Instead, the lowest
3 homework scores will be dropped.
Note that the homework in the printed version of the book is not
completely consistent with the on-line version of the book, so please
refer to the printed version of the book.
Exams and Quizzes
Notes and Text
The required textbook for the course is
Algorithms, by Dasgupta, Papadimitriou and Vazirani.
It was developed from a set of notes especially for
this course, and we will follow it fairly closely.
The previous text book was Introduction to Algorithms
by Cormen, Leiserson and Rivest, which is still a good
reference.
Prerequisites:
The prerequisites for this course are CS 61B, and either CS 70
or Math 55. In particular you should be comfortable with
mathematical induction, big-O notation, and
basic data structures. If you need to refresh any of
this material, refer to the relevant sections of the textbook.
We assume that you are familiar with a standard
imperative programming language like C, C++ or Java, so that
you can read and write the algorithms presented in the course.
Before this textbook became available, I posted very
detailed lecture notes for each lecture on this web page.
The availability of this textbook means the notes will
mostly point to the sections of the book covered, but
I will continue to post more detailed notes of material
not in the book.
Tentative schedule and Lecture Notes
- (8/25) Lecture 1: Course Overview (Chap 0 in text)
- (8/30) Lecture 2: Solving Recurrences, begin Divide & Conquer
(Chap 2 in text)
- (9/1) Lecture 3: Continue with Divide & Conquer, introduce parallelism
- (9/6) Lecture 4: Continue with Divide & Conquer, parallelism, matrix multiplication
- (9/8) Lecture 5: Continue Divide & Conquer: FFT
- (9/13) Lecture 6: Complete FFT, start Graph Algorithms (Chap 3 in text)
- (9/15) Lecture 7: Continue Graph Algorithms (Chap 3)
- (9/20) Lecture 8: Continue Graph Algorithms (Chap 3)
- (9/22) Lecture 9: Continue Graph Algorithms: BFS and shorted paths (Chap 4)
- (9/27) Lecture 10: Complete Chapter 4, introduce Greedy Algorithms (Chap 5)
- (9/29) Review session for Midterm 1
- (10/4) Midterm 1
- (10/6) Lecture 11: Start Greedy Algorithms (Chap 5). We will cover
Huffman encoding first, and then Minimum Spanning Trees
- (10/11) Lecture 12: Complete Minimum Spanning Trees
- (10/13) Lecture 13: Complete Minimum Spanning Trees (again), Horn clauses
- (10/18) Lecture 14: Complete Chap 5 (set cover),
start Dynamic Programming (Chap 6)
- (10/20) Lecture 15: Continue Dynamic Programming
- (10/25) Lecture 16: Complete Dynamic Programming, Start Linear Programming (Chap 7)
- (10/25) Lecture 16: Complete Dynamic Programming, Start Linear Programming (Chap 7)
- (10/27) Review session for Midterm 2
- (11/1) Midterm 2
- (11/3) Continue Linear Programming
- (11/8) Continue Linear Programming (flows in networks)
- (11/10) Complete Linear Programming (bipartite matching, duality,
sketch of simplex algorithm)
Pointers to on-line notes on Big-Oh, for those wishing review:
Grades
Grades will be based on homework, quizzes, 2 midterms and a final:
- Homeworks - 25%
- Quizzes - 5%
- 2 Midterms - 20% each
- Final - 30%
The final exam is scheduled for Dec 14, 8-11am.
A makeup final will only be given for
- unexpected circumstances beyond your control,
documented by a signed note from a physician or equivalent,
- a religious holiday, or
- conflict with another scheduled exam (ask the other professor
first, and try to avoid this!!).
There will be no makeup midterms.
Instead, each midterm score will be replaced by the maximum of your
midterm score and your score on the final (whether you take the
midterm or not).
You are required to a bring a student photo ID to the exams.
There will be a short quiz at the beginning of (most) sections.
The quiz will consist of a few simple questions related to the
material from the previous class. There will be no make-up
quizzes but the two lowest quiz scores will be dropped.
The motivation is to encourage you to keep up with lectures.
Regrading of homework, quizzes or exams will be done when there
has been a mistake, in order to make sure all students are
graded consistently. To ask for a regrade, you must return the
work to your TA within one week of getting it back, along
with a written note (on another piece of paper) explaining
the problem. The entire assignment may be regraded in this case.