(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: 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: 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.