Meeting times: MTWF 1:30-2:20 (section 01) or 11:30-12:20 (section 02)

Instructor:Jessen Havill

Office:Olin 208


Office Hours:I’m usually in my office all day whenever I’m not teaching, so feel free to drop by any time. (Here’s my schedule.) Or just email me to make an appointment.


The design, analysis, and implementation of efficient algorithms are central to the discipline of computer science. When algorithms work on large data sets, their efficiency usually depends on the way in which the data is organized. In this course, we will study the relationship between data organization and algorithmic efficiency, and implement several useful data structures that enable efficient algorithms. This course acts as the foundation for every later course in the major.

Required Text

Introduction to AlgorithmsbyCormen, Leiserson, Rivest and Stein, Third Edition, MIT Press, 2009.

Web Resources

This course web site will include reading assignments,homework assignments, sample programs, and other useful resources. Refer to this page daily for updated information:

We also have a class page set up onPiazzafor Q&A and discussion. When you have a question, please post it to Piazza so that everyone can benefit from the answer.

Attendance and Other Responsibilities

In order to do well in this class (in any class, really), it is important to take on an active role in the learning process. Learning must be an active process in which the instructor is but an important resource.

Yourattendance is expectedat 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. Scheduled absences must be communicated to me well in advance.

You areresponsiblefor 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 maynotbe made up.

It is very important that you keep up with the assigned reading, and that you practiceactive reading; take notes, work out problems, and identify questions you would like to ask in class. Read your book on a daily basis. Be especially sure to read assigned materialbeforecoming to class so you will be ready to ask questions. All reading assignments are listed on the class web page. 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 homework assignments given during the semester which will be duein classon 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, youare well advised tostart early.Like other classes at Denison, it is expected that you devote at least 2—3 hours to these assignments for each hour of class time.

All submitted work must be typeset usingLATEX.

Academic Integrity

Proposed and developed by Denison students, passed unanimously by DCGA and Denison’s faculty, the Code of Academic Integrity requires that instructors notify the Associate Provost of cases of academic dishonesty, and it requires that cases be heard by the Academic Integrity Board. Further, the code makes students responsible for promoting a culture of integrity on campus and acting in instances in which integrity is violated. Academic honesty, the cornerstone of teaching and learning, lays the foundation for lifelong integrity. Academic dishonesty is intellectual theft. It includes, but is not limited to, providing or receiving assistance in a manner not authorized by the instructor in the creation of work to be submitted for evaluation. This standard applies to all work ranging from daily homework assignments to major exams. Students must clearly cite any sources consulted – not only for quoted phrases but also for ideas and information that are not common knowledge. Neither ignorance nor carelessness is an acceptable defense in cases of plagiarism. It is the student’s responsibility to follow the appropriate format for citations. Students should ask their instructors for assistance in determining what sorts of materials and assistance are appropriate for assignments and for guidance in citing such materials clearly.

You can find further information about Denison’s Code of Academic Integrity on Denison’s web site at

In this class, you may discuss problems with other students in the class, butwritten (and typed) work must be your own. In other words, you may talk about problems with your peers, but when it comes time to write your solutions, you (and your partner) 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 students have been working too closely. You may not get help from students outside the class, except for departmental tutors. If you have questions, come see me and I will be happy to help. You are also quite welcome to send me email or call if you would like to discuss an assignment.

Students found responsible for breaches of academic integrity may earn a failing grade for the course.

Grade Determination

The following relative weights will be used to determine your finalgrade:

  • Homework Assignments 40%
  • 3 Exams 30%
  • Portfolio 15%
  • Final Exam 15%
General Course Topics
  1. Efficiency analysis (and relatedproof techniques and recurrences)
  2. Analysis of program correctness (loop invariants)
  3. Sorting algorithms
  4. Priority queue ADT
    • Linked list data structure
    • Heap data structure
  5. Dictionary ADT
    • Sorted listdata structure
    • Binary search tree and forestdata structures
    • Hash tabledata structure
    • Balanced search treedata structure
    • B-tree and other external data structures
  6. Introduction to dynamic programming
  7. Multithreaded algorithms
  8. More advanced object oriented programming in C++ (template classes, inheritance, polymorphism, exceptions)

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 to verify the need for reasonable accommodations based on documentation on file in their office.

Course Evaluations

At the end of the semester, you will be asked to evaluate this course and the instructor. These evaluations are an important tool for helping Denison faculty achieve and maintain excellence in the classroom; it will also help you reflect on your learning, participation, and effort in the course. A key purpose of course evaluations, then, is to constantly improve the level of teaching and learning at Denison by instructors and students. Your ratings and comments will also be included as one element of an instructor's overall teaching portfolio. Together with peer observations and other means of assessing teaching effectiveness, this portfolio will be considered by the instructor's colleagues and college administrators in making recommendations for contract renewal, tenure, promotion, and salary decisions.

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

Jessen Havill 2016