Go straight to the course syllabus.

An algorithm can be loosely defined as a finite sequence of steps which produces the solution to a problem. Algorithms are the heart of computer science. In fact, computer science is properly defined as the study of algorithms.

A computer program is an implementation of an algorithm on a computer using a particular programming language. It is for this reason that computer scientists are interested in computers because computers are machines that can be programmed to carry out algorithms quickly and accurately. Perhaps a better name for our discipline is "computing science" because our focus is not so much on computers as it is on computing and algorithms.

Our goal in this course is to learn the principles and techniques for developing good algorithms and data structures. We will do this by ignoring programming details and concentrating on the essence of the algorithms themselves. Nevertheless, an ability to program is necessary in order to implement the results on an actual computer.

CLASS INFORMATION:

- Meeting time: MWF 1:10-2:00
- Meeting room: Glatfelter 107

OFFICE AND OFFICE HOURS:

- Office: Glatfelter 211
- Office hours: MWF 8:00-9:50, MWF 11:00-11:50, and by appointment

TELEPHONE NUMBER AND E-MAIL:

- Telephone: 337-6630
- E-mail: jfink@gettysburg.edu
- WWW page: http://cs.gettysburg.edu/~jfink/courses/cs311.html

EXAM DATES:

- Exam 1: Friday, September 28
- Exam 2: Friday, November 2
- Final Exam: Sunday, December 9, 1:30-4:30 PM

PREREQUISITES:

- CS 216 - Data Structures (C grade or better)
- Math 208 - Discrete Structures (C grade or better)

TEXTBOOK:

*Computer Algorithms, Introduction to Design and Analysis*, third edition, by Sara Baase and Allen Van Gelder

GRADING POLICY:

- Your grade will be determined by your scores on the following:
- homework (25%);
- programming assignments (15%);
- two exams (12.5% each);
- final exam (25%);
- class attendance and participation; attendance at three or more department colloquia and other designated special events (10%).

- ***There will be no make-up exams, and late work will not be accepted.***

- Assigned readings should be done before class, and you should also attempt a problem or two from the textbook.
- Working problems is essential for an understanding of the material, and there are plenty of problems in the textbook.

- Homework will be assigned, collected, and graded.
- Assignments may include material that will not be discussed in class. You are expected to learn this material on your own and to make use of the resources available to you to complete the assignments.
- Grading will be based on both the content and the quality of your write-up. NEATNESS COUNTS! Show all work necessary to justify your solutions. Answers alone are not sufficient.
- You may work with other students on the homework; in fact, I encourage that. However, your write-up should be your own.

- In addition to the written homework, there will be several programming assignments.
- Grading of programs will be based on design, documentation, and style as well as on correctness.
- The programming assignments are designed for individual or small group work. If you need help, you may discuss the assignments with your instructor or other groups to a limited extent. Interpret this to mean that discussions with other groups may involve only pencil and paper work of a general nature. You may not look at other groups' program files or the specifics of other groups' solutions.

ADDITIONAL REFERENCES:

*Introduction to Algorithms*, second edition, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein*Introduction to Algorithms, A Creative Approach*by Udi Manber