(Latest Revision -- 02/11/2002)
Course Description
for Theory of Algorithms: CS 4440
TERM: Spring 2002
CLASS CODES:
21077 CS 4440 001 Theory of Algorithms Lec 3.0 MWF 11:15-12:13 P-101
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE: P-286, Professional Schools Building, Cal State Stanislaus
OFFICE HOURS: MWF 10-11, TTh 11:15-12:15; or by appointment
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.
REQUIRED TEXT:
Fundamentals of Algorithmics by Gilles Brassard and Paul Bratley,
published by Prentice Hall, ISBN 0-13-335068-1.
http://vig.prenhall.com/catalog/academic/product/1,4096,0133350681,00.html
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/
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.
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:
The course has two main components, homework and tests.
There will be approximately six homework assignments. 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 large programming assignments.
The test component consists of three in-term quizzes. There
will be no final exam. The problems in the quizzes will be
similar to homework problems.
I will compute your course grade by giving equal weight to your
homework average and your quiz average.
LATE ASSIGNMENTS:
Get started early on your assignments. That way, if you run
into difficulty, you can seek help in class and/or office hours
in a timely fashion.
I may present solutions to homework problems in class at any
time after the problems are due. If a student turns in a
solution to a problem after I have presented a solution to the
class, then regardless of exactly how late the student turned
in the problem, I will give the student zero points on that
problem.
In addition to the penalty described above, I will reduce the
scores on late assignments by 10% per calendar day late, up to
a limit of 50%. I won't accept late assignments overdue by
more than 10 calendar days, or assignments that are turned in
too close to the date on which I am required to turn the grades
in to the Office of Admissions and Records (typically about 3
days after the date reserved in the schedule for a final exam).
PARTICIPATION:
I expect everyone to attend all the classes, to participate, and to
be well informed as to what is going on.
I will keep track of your attendance.
I hope to be accessible and helpful to you during this course.
I want you to get as much as possible out of it. But remember,
we are a team and you are a key player.
Read and study everything I assign as soon as possible. Read
difficult material more than once! Attend all classes. Pay
close attention. Take notes. Review your notes before each
class. Get started on homework assignments early. Do a little
each day, and bring your questions and problems concerning these
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 feel something needs to be explained
better.