(rev. 02/12/2010)
Course Description
for Theory of Algorithms: CS 4440
CAMPUS EMPLOYEE FURLOUGHS
For the past ten years the CSU system has suffered chronic under-funding.
This year, because of the state economic crisis, the budget cuts are draconian
- $584 million - the worst ever in decades. The CSU administration is
attempting to manage these cuts by dramatically increasing student fees and by
furloughing almost all university employees, including faculty, staff and
administrators. A furlough means mandatory unpaid days off for employees. For
faculty there were eight furlough days in the Fall 2009 Term and two in Winter 2010 Term.
There will be eight more in the Spring 2010 Term
On staff and administration furlough days, many campus offices will be closed.
On faculty furlough days, faculty will not be available to perform work,
including teaching.
All campus staff and administrators will take their furloughs on the same days
(shown
here.)
However each faculty member will choose his or her own furlough
days. My eight furlough days for the Spring 2010 Term are shown at the
bottom of
this page. None of them is a class day.
If you want to do something about the drastic CSU budget situation, I strongly
suggest that you write to your legislators and to the President and Provost of
our university.
TERM:
Spring 2010
CLASS INFO FROM SCHEDULE: 20381 #CS 4440 001 Theory of Algorithms Lec 3.0 MWF 10:10-11:08 N-221
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286,
Professional Schools Building (aka DBH), Cal State Stanislaus
OFFICE HOURS:
- Mon, Wed & Fri 12:30-2:30, or
- by appointment
(Regular office hours commence on Wednesday, Feb 17, 2010 and end on Monday May 24, 2010.
There will be no regular office hours on Tuesdays, Thursdays,
holidays, or Spring Break.)
E-MAIL:
john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/js.html
PREREQUISITES:
It is important that you be adequately prepared for taking this
course, CS 4440.
Check with me if you have not passed both:
- CS 3100 (Data Structures + Algorithms), or the equivalent, and
- MATH 2300 (Discrete Structures), or the equivalent.
COURSE OBJECTIVES:
The highest aims of this course are:
- to learn how to make the best possible algorithms,
- to know when it is impossible to make an algorithm any better, and
- to learn to choose an appropriate algorithm for a given problem.
One way to work toward those aims is to study algorithms and approaches to
algorithm design that are widely believed to be good for common programming
problems. At the same time, one should seek to understand how "good" should
be defined. Such studies are another goal of this course.
It is necessary that we know how to analyze the potential efficiency of an
algorithm using such tools as discrete mathematics, probability, and
statistics. We also need to study such abstractions as computational
complexity, reduction, non-determinism, and NP-completeness, in order to
better appreciate the limitations of computing machines.
It will be important that you read and write algorithms, and
practice doing the steps involved in their analysis.
REQUIRED TEXT:
Kleinberg/Tardos
Algorithm Design
; written by Jon Kleinberg and Eva Tardos
; published by Addison Wesley
; ISBN 0-321-29535-8
COURSE COVERAGE:
We'll try to cover what is recommended in the preface of the text.
As background and review:
- Chapter 2 (Basics of Algorithm Analysis), and
- Chapter 3 (Graphs)
As the main course content:
- Chapter 1 (Representative Problems);
- Chapter 4 (Greedy Algorithms), excluding sections 4.3, 4.7-4.9;
- Chapter 5 (Divide and Conquer), excluding sections 5.5-5.6;
- Chapter 6 (Dynamic Programming), excluding sections 6.5 & 6.10;
- Chapter 7 (Network Flow), excluding sections 7.4, 7.6, 7.11, and 7.13;
- Chapter 8 (NP and Computational Complexity);
- Chapter 9 (PSPACE);
- Chapter 10 (Extending the Limits of Tractability), sections 10.1 & 10.2 only
- Chapter 11 (Approximation Algorithms), sections 11.1-11.2, 11.6 & 11.8 only;
- Chapter 12 (Local Search), sections 12.1-12.3 only; and
- Chapter 13 (Randomized Algorithms), sections 13.1-13.5 only
If need be we'll make adjustments to the list above.
TESTS & GRADING:
Your course grade will be based on a class participation component and a test
component.
Satisfactory class participation means a good attendance record, evidence that
you are staying current with the reading assignments, and satisfactory
contributions to in-class discussion of readings and chapter exercises.
There will be class discussions of problems. I will sometimes require you to
work on problems in advance and turn in notes that "show your work." (This is
similar to having homework assignments, but they will not be graded in the
traditional sense.) Some problems I assign may involve programming, but not
long programs.
There will be three quizzes and a comprehensive final exam. The problems on
tests will be similar to the problems discussed in class, or portions thereof.
The test component of your grade will be a weighted average of your quiz
scores and final exam score. It will be calculated this way:
MAXIMUM = max (Quiz Average, Final Exam Score)
MINIMUM = min (Quiz Average, Final Exam Score)
Test Component Score = (0.70)(MAXIMUM) + (0.30)(MINIMUM)
To pass the course you must:
- receive a passing score on your test component, and
- receive a passing composite score on participation.
If you meet the conditions above I will compute your course grade by giving a
weight of 70% to your test component score and a weight of 30% to your
participation composite score.
MISSED QUIZZES AND LATE ASSIGNMENTS:
I will give no make-up, late or early quizzes or exams.
Get started early on assignments. That way, if you run into difficulty, you
can seek help in class and/or office hours in a timely fashion.
You mustn't be late turning in work on assigned problems. That will
count heavily against your participation score. However please remember: I am
only asking you to turn in evidence that you worked on these
problems!
To "survive" in a class like this, you may need to put aside "foolish pride,"
stubbornness, and/or shyness. If you find you are not making good progress in
the course, please seek help from me promptly. You may speak to me after
class or during my office hours. You may send me a message by e-mail. You
are entitled to get help this way. Please don't subvert your chances of
success by continuing to "spin your wheels" until it is too late.
We can have class discussions about quiz dates and due dates. I may be
willing to change some of these dates. If you want a change in the schedule,
please bring this up (in class, preferably) as soon as possible, and not at
the last minute. (It's usually a good idea for class members to try to work
out some consensus before bringing the subject up with me.)
If you cannot finish an assignment on time please turn in whatever you
have done. Then it will be possible to get some credit instead of
no credit.
PARTICIPATION:
College is not for everybody. College demands that the student learn actively
and independently.
Naturally college makes demands on instructors too. I want you to get as much
as possible out of the course. I hope to be accessible and helpful to you.
Read and study everything I assign as soon as possible. Read difficult
material more than once! Attend all classes. Pay close attention. Take
notes to help you think about things and remember things. Review your notes
before each class. Get started on assignments early. Do a little work each
day so that work never piles up. Bring your questions and problems concerning
assignments to class each day.
Finish assignments and reading on time. Do what you can to keep class
discussion lively and to the point. Reply to questions. Ask questions and
make remarks if you feel you have something to add or if you want me to
explain something better.
RESPONSIBILITY FOR YOUR OWN WORK:
Sometimes it can be difficult for the student to figure out the difference
between 'cheating' and 'working smart.' Here is some guidance:
Assignments: When your purpose is to clarify the meaning of the
directions I have given for an assignment you may discuss those directions
with other people, including your classmates, as much as you like. You may
also freely discuss the relative merits of various general approaches to
designing and engineering solutions to an assignment.
You may use ideas, algorithms, or segments of program code from
- any printed material available for student check-out in our library,
- our course text, or
- any programming textbooks to which you have access.
You are permitted to share such material, as described in 1-3 above, with
other members of this class.
You may ask me for help and hints on assignments. I prefer that you ask
questions in class, so that everyone has a chance to benefit from the
discussion.
On the other hand, until the time comes for us to discuss problems in class
together,
- You must not give or accept any other kind of help.
- You may not allow any part of a solution you compose (make up) for
a homework assignment to be communicated to another member of the class
or allow such material to be communicated to you.
- A corollary to the point above is that one member of the class may
not look at the homework of another member of the class, whether
on paper or on a computer screen.
Tests: You must write your tests with no discussion or help from
anyone. The one exception is that you are allowed to come forward and ask me
to clarify the meaning of a quiz question, if you wish. It will be up to me
to decide how to answer, or whether to answer at all. I will tell the class
any new information that arises from such an exchange.
Penalties: If there is compelling evidence that an assignment or quiz
was not done according to the above criteria, I will withhold credit.
NETWORK AVAILABILITY OF COURSE MATERIALS:
I make course documents, assignments, supplements, and so on available via the
world wide web. To access the on-line CS 4440 materials, just open this URL:
http://www.cs.csustan.edu/~john/Classes/CS4440/
Also, there is a miscellaneous collection of information that you
may want to use from time to time. It is located here:
http://www.cs.csustan.edu/~john/Classes/General_Info/