CSCI 467: Algorithm Analysis   Spring 2009

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:

     1.  The student will be able to apply knowledge (will have an ability to apply knowledge of computing and mathematics appropriate to the discipline).
     2.  The student will be able to analyze problems (will have an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution).
     3.  The student will be able to communicate effectively (will have an ability to communicate effectively with a variety of audiences).
     4.  The student will be able to understand tradeoffs (will have an ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices).

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).