About This Course

This course presents some fundamental data structures, including lists, stacks, queues, hash tables, heaps, and binary trees. Students will master a number of algorithms, including Mergesort and Quicksort. We will study techniques for analyzing the running time and space requirements of these algorithms, and of other algorithms based on the data structures. The goals for the course are for the students to analyze running times of algorithms, and to design algorithms using appropriate data structures to solve non-trivial computing problems.

The material in this course should provide students tools to approach more sophisticated programming problems than previous courses have presented.

There will be approximately weekly assignments of pencil-and-paper exercises. The assignments will consist of basic exercises, not to be handed in, with solutions available, and a small number of exercises to be completed and handed in.

There will be several programming assignments in which students implement and test applications of techniques addressed in class. These assignments may be done in C, C++, or Java.


Course Meeting Times

The lecture for section 2 is held 10:00-11:50am TR in JGH 216.

The final for this section is on Tuesday, November 19, at 10:00-11:50am


Text

Introduction to Algorithms, ed. 3, Cormen, Leiserson, Rivest, and Stein ,

  0262033844 978-0262033848

 

You may use an electronic copy or a hard copy.

 

Slide series for selected material are available. Links to these will be posted in the corresponding week in the weekly Syllabus below.


Weekly Syllabus

We will cover sections 1, 2, and 3, in that order, at a depth dictated by time and interest. We will cover B-trees, chapter 18, and expression trees.

Week 1: Introduction and Chapter 2

Week 2:Chapter 2


Course Organization

·         Thursday, 10:00 am: complete the weekly quiz on Blackboard

·         Thursday, 11:55 am: turn in problem set

·         Except under extraordinary circumstances,  late work will not be accepted.


Technology

You will need a good internet connection and a laptop that meets DU specifications. (See http://www.du.edu/uts/laptops/specs.html .  Quizzes will be completed on Blackboard. For technical support in using Blackboard, please go to http://otl.du.edu/knowledgebase/blackboard/ .

The programming assignments may be completed in Java. They should run on Eclipse Juno, with a current  JRE. If you choose to use a different programming language, please discuss this with the instructor. 

Code for programming assignments will be turned in using Subversion.


Grading

Grades in this course will be calculated as follows:

·         quizzes                 10% total

·         Homework solutions      20% total

·         Programming Assignments          30%  total

·         Midterm              20%

·         Final       20%


Collaboration and Academic Honesty

When you turn in work in this course, you are implicitly agreeing that you have followed the rules for collaboration set forth for that assignment. In general,

·         The quizzes, midterm, and final must be your own work

·         For problem sets, you may consult with the instructor or the GTA. You may work individually or in a pair. You may consult with other students, but should credit them. Do not do web searches for solutions.

·         For the programming assignments, you may work individually or in pairs.

Students will abide by the honor code .


Guidelines for Presentation of Homework Assignments

You may certainly type your solutions, however, handwriting is acceptable as long as I find it to be readable, understandable and organized. Please turn in paper copies in class on the due date. Assignments will be posted here.

Note that solutions to some exercises and problems can be found on links from the online supplement to the text . You may consult these solutions.

Exercises appear in the text after most sections. They are labeled chapter.section-exercise. For example, the third exercise from the second section of chapter 5 is 5.2-3.

Problems are listed at the end of each chapter. They are labeled with the chapter and the problem number. For example, the sixth problem from chapter 3 is 3-6.

Assignments will typically include a few exercises for you to do as warmup, not to be turned in, and one or two problems to hand in.