Instructor: John Martin, IACC 258 A13, Phone (231)-8197, email John.Martin@ndsu.edu
Class: MWF, 1-1:50, Van Es 101
Office Hours: 10:30-11:30 MWF and by appointment.
Course Description: The design, correctness, and analysis of algorithms and data structures.
Course Objectives: By the end of the course, the
student should be familiar with the "big-O" and "big-Theta" notation
for describing the asymptotic behavior of quantities such as algorithm
runtimes and space requirements. He/she should be able to analyze
simple algorithms and to compare quantitatively the efficiency of
alternative algorithms. He/she should be acquainted with some of
the most familiar abstract data types, such as trees, binary trees, and
graphs, and with the analysis of the corresponding algorithms; he/she
should understand the analysis of some standard algorithms involving
searching and sorting.
Specific objectives associated with the
current ABET program outcomes are:
The first of these three objectives will be measured by students
using material presented in the course to solve homework problems and
answer examination questions. For the second, at least one
homework assignment will have a portion in which students are given a
problem in which requirements are imposed on the runtime of a solution,
and asked to describe a solution algorithm that will will satisfy these
requirements. For the fourth, one or more assignments will also
have a portion in which students are given two algorithms for solving a
problem and asked to determine which is preferable, using algorithm
analysis. With regard to the third objective, in both these cases
a portion of the assignment grade will be based on how effectively the
student has communicated his or her answers.
Prerequisites: CSCI 161, MATH 166, and either CSCI 222 or MATH 270.
Homework: There will be regular homework assignments,
and homework will count 20% of the final grade.
For the most
part
the assignments will be problems from the text. In order to be
counted,
homework
must be turned in by the due date.
Evaluation Procedures and Criteria: The grade
will
be based on hour-exam scores, homework, and
final-exam
score. The overall exam grade is the larger of the two
following
numbers: i) the score obtained by weighting each of the three
hour-exams 24%
and the final exam 28%; ii) the score obtained by weighting each
of the two highest hour-exams 28% and
the final 44%. The final total will be obtained by
weighting
the exam grade 80% and the homework 20%.
At the end of the semester, an overall percentage of 85 or higher will be an A, 70 or higher will be at least a B, and 55 or higher will be at least a C. The cutoffs for these letter grades may, but will not necessarily, drop slightly below these numbers.
Makeup exams will normally not be given, and makeup exams after the class has taken the exam will almost never be given. If you miss an exam, then your exam grade will be computed the second way described above (weighting the two remaining exams and the final exam more), and the exam you miss will be the exam that is dropped.
Attendance: Although class attendance is not required, you are strongly encouraged to attend class; you are responsible for what goes on in class, including any topics that are not in the text but are discussed in class, and any changes in dates or policies described here.
Course Calendar: The three exams are scheduled
for Wednesday, February 18; Friday, March 27; and Friday, May 1. The final
exam is scheduled for Monday, May 11, at 1PM.
Here is a list of the chapters in the text that I would like to cover. We will probably not get to the end of the list. The plan is to go in order through the list until the semester comes to an end. This list is tentative, and may be revised. In a number of chapters, I may delete certain sections or portions of sections, and I may not present the results in exactly the same form that they are presented in the text.
Chapter 1. The Role of Algorithms in
Computing (I won't say much about this in class, but it's short
and you should
read it.)
Chapter 2. Getting Started
Chapter 3. Growth of Functions
(Note: this is an
important chapter. In discussing it we will also look at some of
the topics in Appendix A.)
Chapter 4. Recurrences
Chapter 5. Probabilistic Analysis and
Randomized Algorithms
Chapter 6. Heapsort
Chapter 7. Quicksort
Chapter 8. Sorting in Linear Time
Chapter 9. Medians and Order Statistics
Chapter 11. Hash Tables
Chapter 12. Binary Search Trees
Chapter 21. Data Structures for Disjoint
Sets
Chapter 22. Elementary Graph Algorithms
Chapter 23. Minimum Spanning Trees
Chapter 24. Single-Source Shortest Paths
Chapter 31. Number-Theoretic Algorithms
Chapter 34. NP-Completeness
Required Student Resources: The text is Cormen, Leiserson, Rivest, and Stein, Introduction to Algorithms (Second Edition), McGraw-Hill, 2001.
Special Needs: Any students with disabilities or other special needs who need special accommodations in this course are invited to share these concerns or requests with the instructor as soon as possible.
Academic Responsibility Policy: All work in this course must be completed in a manner consistent with NDSU University Senate Policy, Section 335: Code of Academic Responsibility and Conduct (http://www.ndsu.nodak.edu/policy/335.htm).