(rev. 01/30/2012)
Course Description
for Theory of Algorithms: CS 4440
TERM:
Spring 2012
CLASS INFO FROM SCHEDULE:
20477 #CS 4440 001 Theory of Algorithms Lec 3.0 MWF 12:00-12:50 P-113
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286,
Professional Schools Building (aka DBH), Cal State Stanislaus
OFFICE HOURS:
- Mondays 2:00-3:00
- Tuesdays 12:30-1:30
- Wednesdays 9:00-9:45 and 3:00-4:00
- Thursdays 9:30-10:45
- or ask me for an appointment at a time that works for you
(The first day of scheduled office hours is Monday, January 30, 2012 and
the last is Tuesday, May 15, 2012.)
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
PDF's OF TEXT SLIDES AVAILABLE HERE:
http://www.cs.princeton.edu/~wayne/kleinberg-tardos/
COURSE COVERAGE:
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);
Possibly we'll make some adjustments to the list above.
TESTS & GRADING:
Your course grade will be based on a class participation component (=PC) and a
test component (=TC).
Satisfactory class participation means satisfactory work on assigned problems,
a good attendance record, evidence that you are staying current with the
reading assignments, and satisfactory contributions to in-class discussions.
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." (similar
to 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 calculated this way:
TC = [ Max(Q1,F) + Max(Q2,F) + Max(Q3,F) + F ] / 4
Where Q1, Q2, and Q3 are your grades on the quizzes, and F is your grade on
the final exam.
Your course grade will be
TC + PC/10
This means, for example, if your test component works out to a D, but you get
100% on participation, your course grade will be a C.
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/