(Latest Revision -- 02/15/2004)
Course Description
for Theory of Algorithms: CS 4440
TERM:
Spring 2004
CLASS INFO FROM SCHEDULE:
22410 #CS 4440 001 Theory of Algorithms Lec 3.0 MWF 1115-1213 P-113
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286,
Professional Schools Building (aka DBH), Cal State Stanislaus
OFFICE HOURS: MWF 10:10-11:10, 12:15-13:15, or by appointment
(Office hours commence on Monday, Feb 16, 2004 and end on Friday May 21, 2004.
There will be no classes or office hours during Spring Break: April 12-16.)
E-MAIL:
john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/jsHomepage.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:
Brassard/Bratley:
Fundamentals of Algorithmics
; written by Gilles Brassard and Paul Bratley
; published by Prentice Hall
; ISBN 0-13-335068-1
COURSE COVERAGE:
Chapters 1-5 of our text are mostly background and review. We will cover most
of 1-5, plus topics from 6-13. We'll do this by reading forward from the
start of chapter 6, while filling in gaps with readings of material in
chapters 1-5. Read the introduction and table of contents of the text to get
some more details.
TESTS & GRADING:
Your course grade will be based on your performance on homework and quizzes.
There will be approxmiately five homework assignments and five quizzes.
Homework will consist of problems from the ends of the chapters, augmented as
needed. I may ask you to do a small amount of programming as part of your
homework assignments. There will not be any assignments to write long
programs.
The problems in the quizzes will be similar to homework problems or portions
thereof.
There will be no final exam.
To pass the course you must:
- receive a passing average score on the five quizzes, and
- receive a passing average score on the homework problems.
If you meet the conditions above I will compute your course grade by giving a
weight of 60% to your quiz average and a weight of 40% to your homework
average.
MISSED QUIZZES AND LATE ASSIGNMENTS:
I will give no make-up quizzes, late quizzes, or early quizzes.
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.
I cannot and will not accept late homework assignments.
To "survive" in a class like this, you may need to put aside "foolish pride,"
stubbornness, and/or shyness. If you find yourself unable to make progress on
some aspect of an assignment, 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 of the instructor too. I want you to get as
much as possible out of this course. I hope to be accessible and helpful to
you.
I expect all class members to participate in the class and to be well-informed
about what is going on in class. I will keep track of attendance.
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 homework 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,
- 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.
Quizzes: You must write your quizzes 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/