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?
We'll be doing some different things than have been done in CS211 in the past. For example, we will read Computer Science research papers and discuss them. We'll also take a very applied approach to algorithms and analysis.
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
- Computer Science Research
- Algorithm analysis
- Graphs
- Greedy Algorithms
- Dynamic Programming
- Divide and Conquer
- Randomization
- Hashing
- Advanced data structures
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
- apply algorithmic 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
- critically analyze a computer science research paper and identify and summarize in writing the problem it's trying to solve, its approach to the problem, how it evaluates the approach, and its major contributions.
Instructional Staff
Sara Sprenkle
Office: Parmly Hall 410
Office Hours: Wednesday 2:30-4:30 p.m., Thursday 1:30-3:30 p.m., or by appointment and 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 11:15-12:10 a.m.
Textbook
Algorithm Design by Jon Kleinberg and Éva Tardos
Optional: Introduction
to Algorithms (second edition) by Thomas H. Cormen, Charles
E. Leiserson, Ronald L. Rivest, and Cliff Stein
This book is
often used in graduate school and affectionately known as "CLRS".
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 I expect you will not discuss the solutions nor will you write
up solutions together. 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 have less than
three unexcused absences from class and 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.
General grading policies
Programs
turned in with syntax errors will receive no credit. "Roll
back" your program (later in the semester, using version
control management software) into a state where it does not
have syntax errors.
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. If
you turn an assignment in late, you must indicate this somehow
(in comments, on paper, etc.).
Grading
Grades for the course will be computed as follows:
- (40%) Individual written and programming homework assignments
- (20%) Midterm
- (20%) Final
- (9%) Reading, analysis, & discussion of Computer Science research papers
- (8%) Participation and attendance
- (3%) Attending at least two seminars and writing a summary for each