Fall Quarter 2011
Tuesday and Thursday 16:4018:30
Neuberger 350
CRN 14753
Instructors
 |
Professor Andrew Black
black (at) cs.pdx.edu
503 725 2411
Office: FAB 11510
Office hours: Monday 16:0017:00 and Thursday 10:3011:30 (but not Thursday 29th Sept), or by appointment.
|
 |
Teaching Assistant
Sarah Cathey
Office hours: None
Recitation sections: None. Unfortunately, we don't have enopugh TA hours available to provide this.
|
Course Overview
This course follows on from CS 311 which looks at what can and cannot be computed by looking closely at the complexity of computing the computable stuff. That means how much time, and sometimes how much space, an algorithm takes. Why does this matter, when computers are so fast? Because we often want to solve large instances of certain problems, and the time taken by some algorithms is exponential in the size of the problem instance. What that means is: if we choose an naive algorithm, solving the problem might take more time than the expected lifetime of the sun!
The approach of the course is mathematical: much of it is about derriving formulae for the expected running time of algorithms. However, there will also be some programming assignments, including a programming project.
Course Objectives
Upon the successful completion of this class, students will be able to:
1. Analyze the running time and space complexity of algorithms.
2. Use the big Oh notation. (e.g., O(n lg n).)
3. Describe how to prove the correctness of an algorithm.
4. Use the mathematical techniques required to prove the time complexity of a program/algorithm. (e.g., limits and sums of series.)
5. Perform inductive proofs.
6. Prove and apply the Master Theorem.
7. Describe the notions of P, NP, NPC, and NP-hard.
8. Compare the rates of growth of functions.
9. Apply algorithmic complexity principles in the design of programs.
10. Design divide and conquer and dynamic programming algorithms.
Official Course Description
Required Textbook
 |
The required book is Introduction to the Design and Analysis of Algorithms (2nd Edition) by Anany Levitin. Addison Wesley; ISBN-10: 0321358287; ISBN-13: 978-0321358288.
Note that a third edition of this book has been announced, but is not yet available. We will use the second edition.
|
Reference Book
 |
This book, Introduction to Algorithms, by Thomas Cormen, Charles Leiserson, Ronald Rivest, and Clifford Stein, has been used at PSU in the past. It's a great reference, but is harder to read than Levitin. It's also organized by problem class, rather than by algorithm class.
The book is intended for a graduate course. It takes a mathematical approach, focussing much more than Levitin on proof of correctness of the algorithms. I'm listing it here as resource that you may like to own, particularly if you can find a used copy.
|
Course Policies
Attendance
I recommend that you come to class, that you participate actively, and that you take notes. The act of taking notes (even if you never look at them again) is a powerful learning aid. I will generally make any visual aids, code samples, etc. that I used in class available on the web, but these are not a substitute for being in class and taking notes. If you do have to miss a class, say because of illness or work-related travel, you are responsible for getting notes and finding out what went on in class from another student.
Reading Assignments
Reading listed in the syllabus for each week should be completed before coming to class. I will check on the completion of reading assignments by various means: oral or written quizzes in class, written summaries, discussion (web-based or in class), etc. Anything in a reading assignment is fair game for an exam question.
Other Resources
Prof. Mark Jones taught this class in Winter 2011. He's a great lecturer, and his lectures were recorded. The first lectures are at the bottom of the page; you will need your ODIN account to access them.
Assignments
Handwritten or printed assignments are due at the start of class.
Regrading
We do sometimes make mistakes. If you believe that we have not graded your assignment according to the published grading scheme, please let the instructor know in writing or by email within 1 week of the assignment being returned to you. Be specific as to why you think that the grading is inconsistent. We will then re-grade the whole assignment; the second grading will stand, whether it is higher or lower than the original grading.
Disabilities
If you are a student with a disability in need of academic accommodations, you should first register with the Disability Resource Center, and then notify the instructor to arrange for support services.
Makeup Exams
If you have a medical or a family emergency and must miss an exam, let me know, if at all possible before the exam, and I will work with you to find an alternative. Other reasons for absence such as scheduled travel are not emergencies and are not cause for a make-up.
Passing the Course
Every assignment in the course is connected to a learning objective. It is therefore important that you make an honest attempt to complete them all. A score of less than 20% on any assignment indicates that you have not met this condition, and is sufficient cause for failing the course. That means an F, at the discretion of the instructor.
Academic Integrity
Students are at university for two reasons: to learn stuff, and to gain a credential. Because the credential is important to many of our students, part of my role as a professor is to make sure that it has value. This means ensuring that the degree is awarded only to those students who have mastered the material in my course.
I have every sympathy for those who have difficulty with the material and seek the assistance of the instructor, the TA or their fellow students. I have no sympathy at all for those who decide that the fastest way to a degree is to cheat. I have been responsible for having cheating students dismissed from the university in the past, and I will not hesitate to seek to have cheaters dismissed in the future.
The most common form of academic dishonesty is representing the work of others as your own. In all written material, you are expected to cite others' work, but to do so in a way that makes it clear what part of the work is your own, and what part is credited to others. If you reproduce someone else's work in a way that makes it appear to be yours, you are guilty of plagiarism, in other words, of cheating.
Cheating on an assignment or exam will result in an automatic zero grade for that piece of work, and the initiation of disciplinary action at the University level.
Cheating and collaboration
I encourage collaboration on certain assignments; I will not tolerate cheating. Where is the line between these activities?
First, if an assignment is explicitly set up as a team assignment, you are of course allowed indeed, required to collaborate with the members of your team. In this case I will generally require only one completed piece of work to be turned in from the team as a whole.
For individual assignments, I encourage you to talk about the problem with your fellow students. During such discussion, you may even write something, perhaps the code of a critical method, or a key step in a proof, as a group. If you do this, there is a danger that you might reproduce that group work as if it were your own. To guard against this danger, do the following: after the group session, destroy any notes or code that you may have brought away with you. Then go and do something else for an hour or two: go for a walk or a bike ride, play your favorite sport, go to the gym: do something to flush your short-term memory. Then sit down with a blank sheet of paper or a blank computer workspace and start work on your own solution. If you have a photographic memory or otherwise won't be able to forget what you have seen someone else write, then don't participate in collaborative problem-solving sessions.
If I see the same code or writing assignment from two or more students I will take this as evidence that these guidelines have been ignored, and will assign a grade of zero to all of the students involved.
Please refer to http://www.pdx.edu/dos/codeofconduct for details of the general PSU Student Code of Conduct.
Method of assessment
The following represents my present intention; I reserve the right to vary the grade distribution if it seems necessary or desirable.
| Item |
Details |
Weighting |
| Homework |
Five graded assignments, weighted at each 5%. One of these is a project proposal.
|
25% |
| Midterm |
On 27th October.
|
20% |
| Final |
On 6th December.
|
30% |
| Term Paper/Project |
Further details will be made available.
|
20% |
| Participation |
For contributions in class and to the class mailing list.
|
5% |
Detailed Outline of the course
This will be changed. Lecture notes will be updated and readings will be added. The schedule will also change as we see how much time we need for particular topics.
|
|
|
Date
|
Lecture
|
|
|
|
|
|
Section 1:
|
|
|
w
e
e
k
1
|
|
Tuesday
27 September
Slides
|
|
1 |
Introduction
- course overview and organization
- what's an algorithm?
|
|
|
|
|
Thursday
29 September
Slides
|
|
2 |
Analysing an algorithm's run-time
- asymptotic ("Big Oh") notation
|
Ch 1, Ch 22.2
|
HW1: Asymptotic notation
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
2 |
|
Tuesday
4 October
Slides
|
|
3 |
Analysis of Iterative Algorithms
|
§2.3, Appendix A, |
|
|
|
Thursday
6 October
Slides
|
|
4 |
Analysis of Recursive Algorithms |
§2.4, §2.5, Appendix B |
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
3 |
|
Tuesday
11 October
Slides
|
|
5 |
Brute Force Algorithms |
§33.2 |
HW2:
Analysis of simple Algorithms |
|
|
Thursday 13 October
Slides
|
|
6 |
Brute Force Algorithms (continued); Exhaustive search |
§3.3, §3.4 |
|
|
|
w
e
e
k
4
|
|
Tuesday
18 October
Slides
|
|
7 |
Master Theorem.
Divide & Conquer Algorithms mergesort, quicksort, binary search
|
§ 4.04.3 |
HW3: Divide-and-Conquer
|
|
|
Thursday
20 October
Slides
|
|
8 |
Divide & Conquer Algorithms binary tree problems |
§ 4.4 |
|
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
5
|
|
Tuesday
25 October
|
|
9 |
Midterm revision |
|
|
|
|
Thursday
27 October
|
|
|
Mid-term exam
|
|
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
6 |
|
Tuesday 1 November
Slides
|
|
10 |
Decrease & Conquer |
§ 5 |
|
|
|
Thursday
3 November
|
|
11 |
Decrease & Conquer (continued) |
§ 5 |
HW4 |
|
|
w
e
e
k
7
|
|
Tuesday 8 November
Slides
|
|
12 |
Space & Time tradeoffs |
§7§7.2 |
Project |
|
|
Thursday
10 November
Slides (1up, 4up) |
|
13 |
Space & Time tradeoffs |
§7.3, §7.4 |
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
8 |
|
Tuesday
15 November
Slides (1up, 4up) |
|
14 |
Dynamic Programming |
§8.1, 8.4 |
|
|
|
Thursday 17 November
Slides (1up, 4up)
|
|
15 |
Greedy Techniques |
§9.19.4 |
HW5 |
|
|
|
|
|
|
|
|
|
|
|
w
e
e
k
9
|
|
Tuesday
22 November
Slides
|
|
16 |
Introduction to Complexity Theory: the limitations of algorithmic power |
§11.111.3 |
|
|
|
Thursday
24 November
No class
|
|
|
Thanksgiving Day: PSU is closed.
|
|
|
|
|
w
e
e
k
10
|
|
Tuesday
29 November
Slides
|
|
17 |
Proving Correctness of Programs |
Readings |
|
|
|
Thursday
1 December
|
|
18 |
Review Class |
|
|
|
|
|
Tuesday
6 December
15:3017:20
|
|
|
Final Exam
The exam will cover the whole of the course. The use of books is not allowed,
but you may use a single 8.5" × 11" “crib sheet” (double-sided),
as a personal reference for definitions and formulae.
|
|
|
|
Most recently modified on Tuesday 29 November 2011 at 16.28
Andrew P. Black