Department of
Computer Science

CS 350 Algorithms & Complexity


Class Piazza Site


Course Description

Weekly Schedule

Course Overview

Required Textbooks

Grading Policy

Getting a Computer Account

Academic Integrity Policy

CS350, Section 1 — Winter Quarter 2019
Tuesday and Thursday 10:00–11:50
UTS 203 (In the Chase Bank Building on 4th Ave at Lincoln)
CRN 40851


Professor Andrew Black

503 725 2411

Office: FAB 115–10

Office hours: Tuesday noon–12:30 and Thursday 16:00–17:00. To set up an appointment at an alternative time, please use the telephone

Teaching Assistant
Aark Koduru

Office hours: Thursday 08:00–10:00

Location:  CS Fishbowl (may change)

Course Overview

This course looks closely at the complexity of computing 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 deriving formulae for the expected running time of algorithms. However, there will also be some programming assignments, including a programming and measurement 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
Cover image from Levitin 3rd Ed.

The required book is Introduction to the Design and Analysis of Algorithms (3rd Edition) by Anany Levitin. Addison Wesley;  ISBN-10: 0132316811
 ISBN-13: 978-0132316811.  There is also a Kindle Edition, which is a bit cheaper, but I think that it contains page images and works only on larger-screen devices. 

I will be assigning reading from this book, and I will not be repeating the material that you have read as lectures.  Instead, we will be using the time in class to solve problems and deal with issues that you raise as a result of your reading. This puts the onus on you to speak up if you don't understand the readings.

NB: In addition to the textbook, I'm requiring you to purchase a Student Response System account.

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 significantly 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, focusing 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.  I will not be assigning reading from this book, but reading it can be helpful in providing an alternative view from Levitin’s

Course Policies


I recommend that you come to class, that you participate actively —which means asking and answering questions — 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.

Student Response System ("Clickers")

To encourage participation, I'm going to be using a student response system in class, and part of the grade will depend on your responding to the in-class questions.  (Whether or not you answer correctly won't affect your grade.)

This quarter we will be using a SmartPhone App from a company called TopHat.  The is good because you don't have to buy a piece of hardware; it's bad because you do have to pay a license fee.

To buy a license to TopHat, go to and sign up as a student.  The Course Code for this course is 791471.  TopHat is a cloud-based system that you can access from a web browser on your laptop, or from your smartphone.    A one-semester license costs around $26; a whole-year license is around $32.  If you have trouble with the technical aspects of using TopHat, contact them directly by telephone at 888-663-5491, or by email at

I regret asking you to spend yet more money,  but the educational research results are in: interactive classes using these devices really do improve learning. I also regret that you may have already bought a different brand of device for another class.

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 or on Piazza, written summaries, discussion (web-based or in class), etc. Anything in a reading assignment is fair game for an exam question.

Online Questions & Discussions

There will not be a class mailing list; instead, we will be using Piazza for class discussion. This system is designed to get you help fast and efficiently: from classmates, the TA, and the instructor. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers of Piazza, email

Sign up at:

Class link:


Handwritten or printed assignments are due at the start of class.  I will accept assignments up to three days (i.e., 72 hours) late, for a 10% penalty in points.  So homeworks due on Thursday at 10:00 can be turned in late on Friday, Saturday or Sunday up until 10:00;  homeworks due on Tuesday can be turned in late on Tuesday, Wednesday,  Thursday, or Friday up until 10:00.  (In cases of authenticated sickness, I'll accept homework late, without penalty, beyond this limit.)

All late homeworks must be turned in on D2L.  On-time homeworks should normally be turned in on paper in class, but if you are unable to get to class for some reason, they can also can be turned in on D2L.   If you don't follow these rules your homework is likely to get lost.


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.


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.

Access and Inclusion for Students with Disabilities

PSU values diversity and inclusion; we are committed to fostering mutual respect and full participation for all students. My goal is to create a learning environment that is equitable, useable, inclusive, and welcoming. If any aspects of instruction or course design result in barriers to your inclusion or learning, please notify me. The Disability  Resource Center (DRC) provides reasonable accommodations for students who encounter barriers in the learning environment.

If you have, or think you may have, a disability that may affect your work in this class and feel you need accommodations, contact the Disability Resource Center to schedule an appointment and initiate a conversation about reasonable accommodations. The DRC is located in 116 Smith Memorial Student Union, 503-725-4150,,

If you already have accommodations, please contact me to make sure that I have received a faculty notification letter, and can discuss your accommodations with you.

Students who need accommodations for tests and quizzes that require them to take tests at location outside the normal classroom are expected to schedule their tests to overlap with the time at which the class is taking the test.

Please be aware that the accessible tables or chairs in the room should remain available for students for whom standard classroom seating is unsuitable.


For information about emergency preparedness, please go to the Fire and Life Safety webpage (

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 allowed, indeed expected, to build on others’ work, but must do so in a way that makes it absolutely clear what part of the work is your own, and what part is due to others.  You do this by citing the prior work.  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 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 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

Five graded assignments, each worth 5%.  The assignment with the lowest score for each student will be dropped from the final grade computation.


Week of 11th February in class

Final Tuesday 19th March, 10:15–12:05 30%
Term Paper/Project

Further details will be made available.  Some of these points will be awarded for the project proposal.


For participation in class and electronically.


Most recently modified sometime in the past

Andrew P. Black