Computer Science 272
Data Structures & Algorithm Analysis II

No Title
Computer Science 272
Data Structures and Algorithm Analysis II
Spring, 2006
Professor: Jessen Havill Phone: 587-6582
Office: Olin 208 E-mail:
Web site:      Mailbox: Olin 201
Office hours: Please see the schedule outside my office.


An algorithm is informally defined to be any well-defined sequence of computational steps that transforms an input into some output. In this one year sequence, we will study in depth the design, analysis, and implementation of efficient algorithms to solve a variety of fundamental problems.
The study of algorithms is fundamental to Computer Science. Indeed, "the design, analysis, and implementation of algorithms" is a good definition for Computer Science. This two course sequence acts as the foundation for every later course in the major.

Required Text

T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, Second Edition, MIT Press and McGraw-Hill, 2001.

Attendance and Other Responsibilities

In order to do well in this class, it is imperative that you take an active role in the learning process. I cannot (and will not) simply transfer knowledge to you. Rather, learning must be an active process in which the instructor is but an important resource.
Your attendance is expected at each class meeting. It is in your own best interest to attend class, as your grade will almost certainly suffer indirectly if you choose not to attend. In addition, I reserve the right to consider attendance in instances of borderline grade assignments. Of course, excused absences (sickness, family emergencies, varsity athletic participation) will not be held against you. Such absences should be communicated to me in advance.
You are responsible for the content of reading assignments, lectures and handouts, as well as announcements and schedule changes made in class whether or not you are present. If you must miss a class, be sure to check with me or another student to get what you missed. Exams will be given in class on the day scheduled and may not be made up.
It is very important that you keep up with the assigned reading. Read your book on a daily basis. Be especially sure to read the material in the appropriate chapter before coming to class so you will be ready to ask questions. The material in the course is, by necessity, cumulative. Be warned that if you fall behind, you will not be able to catch up easily.

Homework Policies

There will be a number of written and programming assignments given during the semester which will be due in class on the date specified. No late homework assignments will be accepted, unless arrangements have been made with me well in advance. Since it will most likely not be obvious how long an assignment might take, you are well advised to start early. Like other classes at Denison, it is expected that you devote at least 3 hours to these assignments for each hour of class time. Homework assignments must be typed.
You may discuss homework problems with other students in the class, but written (and typed) work must be your own. In other words, you may talk about homework problems with your peers, but when it comes time to write your solutions, you are on your own. You may have general conversations about problem strategies, but you must leave these conversations without having written anything down. Keep in mind that it is quite easy for me to tell when two students have been working too closely. In such cases, I am obliged to report the instance to the Associate Provost.
You may not get help from students outside the class. If you have questions, ask the lab assistants, or come see me and I will be happy to help. You are also quite welcome to send me e-mail or call if you would like to discuss an assignment.

Research Project

Each student will perform a research project during the semester culminating in a paper and a presentation to the class. We will discuss this project in more detail during the first week of class.

WWW Resources

I will maintain a class web page containing reading assignments, homework assignments, answer keys, sample programs, and other useful resources. Refer to this page often for updated information. The class home page can be found at:

Grade Determination

The following relative weights will be used to determine your final grade:
Homework Assignments 30%
Project 20%
2 Mid Term Exams 30%
Final Exam 20% (Monday, May 8, 2-4 pm)


Here is a list of the topics that we will cover during CS 271 and 272:
  1. Mathematics for algorithm analysis

  2. Sorting and selection algorithms

  3. Lists, stacks, and queues

  4. Priority queues and heaps

  5. Binary search trees and forests

  6. Hash tables

  7. Balanced trees

  8. Coalescable equivalence relations

  9. Graphs and graph algorithms

  10. Algorithm Design Techniques

    1. Greedy algorithms

    2. Dynamic programming

    3. Randomized algorithms

    4. Backtracking algorithms

    5. Divide and conquer algorithms

  11. Object oriented programming using template classes

  12. Functional programming using Lisp

  13. Introduction to complexity theory

  14. Introduction to approximation and online algorithms (as time permits)

  15. Introduction to amortized analysis (as time permits)

  16. Introduction to parallel algorithms (as time permits)

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately as soon as possible to discuss his or her specific needs. I rely on the Office of Academic Support in 104 Doane to verify the need for reasonable accommodations based on documentation on file in their office.

Have a great semester! If you need anything, please let me know.

File translated from TEX by TTH, version 3.38.
On 24 Aug 2005, 15:56.