Geri Georg
Office: 464 CS Building
Office Hours: 9am - 11am, 3pm - 4pm Mon & Wed, & arranged
Cole Frederick, Ali Ebrahimpour Boroojeny
Office: CSB 120
Office Hours: Mon 11pm - 12pm (Ali), Tues 12pm - 2pm (Cole)
Office Hours: Wed 12pm - 2pm (Ali), Thurs 8am - 10am (Cole)
Office Hours: Fri 1pm - 2pm (Ali)

Shannon McPherson, Jim Xu
Office: CSB 120
Office Hours: Tues 1pm - 3pm (Shannon), Wed 10am - 12pm (Jim)
Office Hours: Fri 3pm-5pm (Jim)

Teaching Team Contact Email:
Lecture Time and Place:
2:00 - 2:50, Mon, Wed, Fri, Clark A102

CS 320 provides an introduction to Algorithms. The course is about learning and practicing principles for organizing your thinking when solving programming problems. It is not about memorizing details and facts. You will practice ways of establishing that an algorithm is correct and analyzing its time bound.

Mastering these skills will allow you to discover and invent efficient algorithms of your own, by figuring out what steps are needed for correctness and to reduce running time. You will also learn to recognize what kinds of optimizations are a waste of your time, since they will have little or no impact on the running time of a program as a whole.

We will study big-O analysis at a more advanced level than in CS 200 on a variety of subjects:

  • divide-and-conquer strategy and techniques for bounding running times of such algorithms
    • dynamic programming
  • greedy algorithms and greedy proofs
  • algorithms of unlabeled graphs
    • depth-first search
    • recognizing bipartite graphs
    • topological sort
    • finding strongly-connected components


You must have passed CS220, MATH161, and MATH229 or MATH369, all with a C or better to enroll in this course.

Textbook & Materials

An iClicker is required for every student in CS320. Be sure to bring it to the first day of class.

There is one required textbook for this course. The required text is Introduction to Algorithms, 3rd edition, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.

Additionally, the first 2 chapters of Algorithm Design by Jon Kleinberg and Eva Tardos are on library reserve. These 2 chapters are the main source of introductory materials covered the first weeks of the semester.


Here are the formally graded elements of the course and associated weighting:

Activity Weight
Quizzes (11) 10%
Worksheets (8) 20%
Assignments/Programs (13)   30%
Exams (2) 40 %

Your final grade will be determined by the weights above.


Quizzes will usually be iClicker quizzes. Quizzes are unnanounced, so be sure to bring your iClicker to every class. Quizzes will cover material previously discussed or material that is in the readings that may not be explicitly covered in class. Not all reading material will be covered in class, but you are still responsible for knowing it.


Worksheets are to be completed in class. You will work in groups to complete them. Worksheets may not take the entire class period to finish, so other material may be covered in class after the worksheets have been turned in.


Homework and programming assignments are to be done individually. We have established a GitHub site for all of your programming work. You are expected to create a PRIVATE remote repository at the CS320-Fall2017 site and push to the site as you work.

Written assignments are due at the beginning of class on the due date. Programming assignments are due at 11:59 pm on the due date (usually a Saturday).


There will be 2 exams during the semester, and no final exam for this class. Students may bring one 8.5" x 11" paper containing any notes they desire to exams. Your sheet must have your name on it you must turn it in along with your exam.

Grading Policies

Written assignments, programming assignments, and exams will all be done individually and grades assigned on an individual basis. Quizzes may have the option of working in groups in class to arrive at an answer to a question, but individual grades will be assigned based on your final iClicker choice.

You may not submit any work done by other people under any circumstances. That you understand this requirement and follow it is essential and indeed the consequences for what is generally called "cheating" can take many forms including being dismissed from the University. Please see Professional Conduct below for more information and links to resources.

Semester grades are determined by the weighted sum of points earned in each of the areas summarized in the table above.

Late and Makeup Policy

Deadlines are deadlines. If you fail to take a quiz, hand in a worksheet from an in-class activity at the end of class, or take a exam on time, you get no points for that element. Assignments, including program assignments will have a 25% penalty up to 24 hours late. After 24 hours you will not receive any credit for the assignment. You may be excused from class and make up missed work if you are part of a CSU-sponsored event and you make arrangements with the instructor at least 1 week prior to the event.

There is one important class of exceptions to the rule above: unforeseeable emergencies. Examples might include severe illness, the death of a family member or close friend, a house fire, etc. In the case of an unforeseeable emergency, please talk to the instructor.

We will drop your lowest score in the quiz, worksheet, and assignments categories when calculating your final score for the class.

Important Dates

First day of class:   Monday, Aug 21
First Exam: Friday, Oct 6
Drop Date: Monday, Oct 16
Second Exam:   Wednesday, Nov 15

Exams will be held in the same classroom as the regular lectures. While no change to the exam dates is anticipated, the instructor reserves the right to change these dates with a 1-week notice.

Professional Conduct

All students are expected to conduct themselves professionally. We, specifically the instructors, GTAs, and UTAs assume you are familiar with the policies in the student information sheet for the department. This course will adhere to CSU's policies as explained in the General Catalog. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.

Additionally, you are computing professionals. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.

We work to maintain an environment supportive of learning in the classroom and lab. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs, and UTAs). In particular:

  • Please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of laptops and tablets is permitted as a courtesy so that you may better participate and learn. The use of cell phones is not permitted in class. If at any time the instructor judges that your use of an electronic device is becoming a distraction to others, you may be asked to move to the back of the room or to turn it off and put it away.
  • Quizzes are to be done without the aid of notes of any kind. Laptops and all other electronic devices must be shut and put away during exams and quizzes.
  • University labs (including but not limited to CSB 120) are professional, not personal, spaces. We expect professional behavior in these labs at all times.

Discussion Boards

A class discussion board is being used to support this course. In particular, the discussion board is hosted at Piazza. All normal expectations regarding professional conduct apply to the discussion board. In addition, here are some explicit guidelines to assist in establishing the tone and expectations regarding the use of Piazza.

  1. No posting of any code for assignments.
  2. No inappropriate postings: e.g. profanity, sexism, racism, bullying, inflammatory remarks, bad taste.
  3. No grade inquiries: make those directly to the instructors.
  4. All students are expected to follow the discussions.
  5. Instructor posts, like in-class announcments, may clarify and even alter assignment specifications.
  6. Use the existing topics. Please don't start new threads.
  7. Only answer questions by other students when you are confident you are both correct and able to craft a helpful explanation.
  8. Questions may of course relate to how best to use tools.
  9. Do not expect instant answers. While answers may often come faster, a 24 hour response cycle is reasonable.
  10. Posts are anonymous one student to another through the Piazza interface.
  11. Posts are archival and individualized for the instructors.

This last item deserves additional comment. Please, keep in mind every word you type may be retained and shared by the instructor with others when the instructor determines there is good reason to do so. This should not concern you. It is the nature of a public discussion board that what you type is archival and public. However, understanding the public and personally identifiable nature of the discussion board should help reinforce the comments above about the importance of Professionalism.