(Latest Revision -- 02/10/00)
Course Description
for Theory of Algorithms: CS 4440
TERM: Spring 2000
CLASS CODES:
20060 CS 4440 001 Theory of Algorithms Lec 3.0 TR 09:40-11:07 P-101
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE: P-286, Professional Schools Building, Cal State Stanislaus
OFFICE HOURS: MWF 1-2; Tu-Th 11:30-12:30, or by appt.
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:
- CS 3100 (Data Structures + Algorithms), or the equivalent
- AND
- EITHER MATH 2530 (Linear Algebra), or the equivalent,
- OR 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/acadbook/0,2581,0133350681,00.html
NETWORK AVAILABILITY OF COURSE MATERIALS:
Course documents, assignments, supplements, and so on will be
made available via the world wide web. To access the on-line CS 4440
materials, you can open the URL
http://shalim.csustan.edu/~john/Classes/CS4440_TheoryOfAlgorithms/
from any web browser on any computer connected to the campus
network or the Internet.
Also, there is a miscellaneous collection of information that
you may want to use from time to time. It is located here:
http://shalim.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 everything I
assign ASAP, and read with care. 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.