# Course Overview

Welcome to CS 211: Algorithm Analysis!

Now, everything comes down to expert knowledge of algorithms and data structures. If you don't speak fluent O-notation, you may have trouble getting your next job at the technology companies in the forefront.

-- Larry Freeman

**Algorithms:** You know them, you love them, you
can't live without them.

You've been writing algorithms since your first programming
course. Do you know that the algorithm you wrote for a given
problem is the most effective algorithm? Can you *prove* you
have the best algorithm? Could you speed up your algorithm by using
more memory? Could you make the algorithm use very little memory?
Could you improve your algorithm by using a different data
structure? How does your algorithm perform in the worst case? In
the average case?

In this course, we will focus on developing an understanding of the algorithmic design process: how to identify the algorithmic needs of an application and apply algorithmic design techniques to solve those problems. We will also learn how to identify problems for which no exact, efficient algorithm is known.

**Catalog Description:** Computer representations of data
structures as derived from mathematical models: stacks, queues, and
linked lists. Access methods into data structures, such as hashing and
tree searching. Storage allocation and deallocation procedures.
Algorithms for manipulating such structures are introduced, analyzed,
and implemented by the student.

Topics covered include

- Algorithm analysis
- Graphs
- Greedy Algorithms
- Divide and Conquer
- Dynamic Programming
- Network Flow
- NP-completeness
- Computational Intractability

**Structure**

Classroom work will consist of
lecture and discussion. You will be evaluated primarily on written
homework assignments, a few programming assignments, and exams.

**Objectives**

After taking this course, you
should be able to

- formulate precise problem descriptions
- apply algorithmic design techniques, such as divide and conquer, greedy, and dynamic programming
- describe, implement, and apply algorithms associated with advanced data structures
- analyze the best-case, worst-case, and average-case complexity of algorithms using asymptotic notation
- recognize when no exact, efficient solution is possible

## Instructional Staff

Sara Sprenkle

Office: Parmly Hall 410

Office Hours: Wednesday 2:30-5 p.m., Thursday 1:30 p.m. - 4:30 p.m., or by appointment

E-mail Address:

Phone Number: (540) 458-8309 (it is better to email me than to call)

## Course Information

CS 211, Section 01

**Lecture:** MWF 9:45 - 10:45 a.m.

### Textbook

*Algorithm
Design* by Jon Kleinberg and Éva Tardos

### Course Policies

**Student Responsibilities**

- It is very important that you attend lectures (see Grading below). There will be considerable information given in class that is not available elsewhere. Family and medical emergencies and conflicts with University-recognized extra-curricular activities are the only reasons to request that work be rescheduled.
- You are expected to arrive to lectures promptly.
- Please turn off cellphones.
- Actively participate in the class by asking and answering questions.
- Check your W & L email frequently and check this web page and the schedule for new information.

**Instructor Responsibilities**

I will try to
make this course and its material as exciting for you as it is
for me. I will be respectful of student questions and
misunderstandings. I will give prompt, constructive feedback
from assignments. I will be available during office hours and
by appointment. I will do my best to respond to questions via
email within 24 hours.

**Honor System**

I expect you will discuss the problems with members of the class,
but you will not discuss the [exact] solutions nor will you
write up solutions together. (Discussion gets the ideas going; the
write up is you codifying those ideas.) Deviation is considered an honor
code violation. Insightful discussion with others must be cited in your
homework solution. You will not lose points for citations, nor
will you fall from my good graces; quite the contrary, citation
gives credit where credit is due. Your understanding of the
problems should be sufficient enough to recount the key arguments
of the solution by yourself. *If you have any uncertainty
about what this means, consult with me before you
collaborate.*

**Participation and attendance**

To receive
full credit for class participation and attendance, you
must be actively engaged in the classroom by answering and
asking questions each class when appropriate and by being
respectful of other students. The average grade for
participation is a B-.

The schedule, including important dates, is posted at the beginning of the semester. You should plan accordingly. If there are acceptable conflicts, tell me at the beginning of the semester and then remind me about a week in advance.

You are permitted three sick/personal days for minor illnesses or any other reason (e.g., family occasion). No documentation is needed or requested for these absences. Unexcused absences beyond these will result in deduction in your participation grade. Excused university absences (e.g., for intercollegiate athletics, documented by a note from a faculty or staff member) do not count towards your sick days or personal days.

**General grading policies**

Proofs must be neatly written. You can submit typed submissions. Include an analysis of your problem solutions when appropriate.

Programs turned
in with syntax errors will receive no credit.

**Late policy**

All assigned work is due on the
date specified. Any assignment turned in after the due
date/time but on the same day will be penalized 10%. Any
assignment turned in after the day on which it is due will be
penalized an additional 10% for each late day. No assignment
will be accepted that is more than three school days late because of the quick turn around required to grade and return assignments. If
you turn an assignment in late, you must indicate this somehow
(in comments, on paper, etc.).

**Academic Accommodations**

Washington and Lee University makes reasonable academic accommodations
for qualified students with disabilities. All undergraduate
accommodations must be approved through the Office of the Dean of the
College. Students requesting accommodations for this course should
present an official accommodation letter within the first two weeks of
the (fall or winter) term and schedule a meeting outside of class time
to discuss accommodations. It is the student's responsibility to present
this paperwork in a timely fashion and to follow up about accommodation
arrangements. Accommodations for test-taking should be arranged with the
professor at least a week before the date of the test or exam.

### How to Succeed in This Course

- come to every class prepared (bring questions!)
- actively participate in class by asking and answering questions
- actively read the textbook, making notes about the problems and solutions in your wiki.
- do all the assignments--start them when they are assigned--and turn them in on time. Refer to your wiki, the lecture slides, and your notes when working on your assignments.
- if you start to get behind, see me in office hours right away

### Grading

Grades for the course will be computed as follows:

- (38%) Individual written and programming homework assignments
- (30%) 2 Midterm exams
- (20%) Final exam
- (7%) Summaries of test book readings on wiki, weekly
- (5%) Participation and attendance