|
CSCI 321 - Analysis of Algorithms Fall 2007 |
||||||||||||||||
|
||||||||||||||||
Instructor Dr. Bonnie McVey
| Office: Cofrin 310 | Phone: 920.403.3471 |
| Office Hours: M 3-4, T 11-12, WTh 2-3,
and by appointment |
Email: bonnie.mcvey@snc.edu |
| Lecture: | MWF, 11 – 12:10 pm, Cofrin 203 |
| Lab: | W, 3 - 5 pm, Cofrin 112 |
Course Description
This course studies effectiveness, efficiency and clarity considerations; divide and conquer, greedy methods, dynamic programming, backtrack, basic search and traversal techniques. It investigates general techniques for designing algorithms and emphasizes the mathematics needed by computer scientists. Tactics for measuring algorithms are studied: O-notation for comparing running times; evaluating summations and solving recurrence relations to get these run times. The course also considers computational complexity, which is the classification of the difficulties inherent in problems no matter how powerful computers will ever be.
Required Text
Introduction to Algorithms, 2nd Edition, Cormen, Leiserson, Rivest and Stein, McGraw-Hill, 2001.Required Background
CSCI 220 (Data Structures) and MATH 250 (Advanced Foundations of Mathematics).Course Documents
Check website http://home.snc.edu/bonnie.mcvey/csci321/ often for news, assignments, hints, corrections, solutions, etc.
Topics to be covered (approximate)
Basic Algorithm Analysistime and space tradeoffs, big-O analysis (and other asymptotic behaviors), recurrence relations, proof of correctness, recursion and induction
Algorithmic Strategiesbrute force, backtracking, pattern matching, greedy algorithms, divide and conquer algorithms, branch and bound techniques, approximations, randomized, parallel, dynamic programming, distributed algorithms
Classes P and NPGradingNP-complete problems, P vs. NP, applications
| Midterm Exams (3) | 40% of course grade |
| Comprehensive Final Exam | 15% of course grade |
| Labs and Homework | 35% of course grade |
| Paper and Presentation | 10% of course grade |
| Cutoffs: 93 - A, 90 - AB, 83 - B, 80 - BC, 70 - C, 68 - CD, 60 - D
Anyone not taking the final exam will receive a grade of F for the course. In addition, you must earn 60% of exam points to receive a grade of C or better for the course. |
|
Policies
Important Dates
| August 30 | Drop/Add Deadline (Thursday) |
| September 3 | Labor Day (No Classes) |
| September 24 | Last day to apply for May graduation |
| September 24 | Exam 1 (approx. date) |
| October 4 - 7 | Long Weekend (No Classes) |
| October 9 | Mid-Term Reports |
| October 29 | Exam 2 (approx. date) |
| November 5 | Last Day for Course Withdrawal |
| November 6 & 14 | Advisement Days (No Classes) |
| November 7 - 30 | Registration |
| Nov. 21-25 | Thanksgiving Vacation |
| November 26 | Exam 3 (approx. date) |
| December 7 | Last day of class |
| Monday, Dec. 10 | Final Exam, 2:15 - 4:15 |
In keeping with the St. Norbert College mission to help students develop their full potential, and in compliance with the Americans with Disabilities Act, the College provides supportive services to students with disabilities. For enquiries and further details, please visit the Academic Support Services Office located on the lower level of the John Minahan Science Building (JMS) or contact Karen Goode-Bartholomew, Coordinator of Services to Students with Disabilities (Phone: 403-1326), or visit the website www.snc.edu/academicsupport/disabilities.html.A Note from Me
Another opportunity to teach an algorithms course is finally here! I can't tell you how much I have been looking forward to this (probably even more than you!). Algorithms and data structures have long been interests of mine; in fact, I took every course in algorithms available while a graduate student at Purdue. Although somewhat a result of my endeavors in mathematics, my interest in algorithms truly stems from my life-long interest in puzzle solving.This course takes puzzle solving one step further, for we are not only interested in how to solve a problem, but also how best to solve the problem. And our definition of "best" may change as we consider all instances, only typical instances, or instances of a large size of the very same problem. And we will learn that sometimes, the "best" solution is really lousy.
Visit the SNC CS catalog web page where an algorithm is defined as "a sequence of unambiguous steps that performs a task." Devising such a sequence is fun. Determining its correctness for any instance of the problem can be challenging. Analyzing its use of time and space and comparing the result with other algorithms helps to determine what is the "best" algorithm.
Read your textbook, ask questions in class and in office hours, work hard. By the completion of this course, you will be armed with strategies for solving lots of problems in computer science as well as in other areas of study. You will be able to defend your algorithm's efficiency and correctness. And you will have some experience identifying intractable problems, those whose only known algorithms are horribly inefficient. I am prepared and excited to help you succeed in this course but the choice to succeed is made by you. Enjoy!