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.