CS 320 provides an introduction to algorithms, their correctness proofs and complexity, algorithm classes, problems and problem classes.

The course is about learning and practicing principles for organizing your thinking when solving programming problems.

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. We will study a variety of subjects:

  • orders of magnitude
  • graph algorithms
    • heaps
    • depth-first, breadth-first search
    • bipartite graphs
    • topological sort
    • connected components
    • spanning trees and shortest paths, cycles
  • algorithmic Strategies
    • greedy
    • divide-and-conquer
    • dynamic programming
    • dynamic multi-threading
    • reduction
  • problem classes (P,NP,NPC)

Important information for students on COVID-19

All students are required to follow public health guidelines in any university space, and are encouraged to continue these practices when off-campus(es). Students also are required to report any COVID-19 symptoms to the university immediately, as well as if they have potentially been exposed or have tested positive at a non-CSU testing location. If you suspect you have symptoms, please fill out the COVID Reporter ( If you have COVID symptoms or know or believe you have been exposed, it is important for the health of yourself and others that you complete the online COVID Reporter. Do not ask your instructor to report for you; if you report to your instructor that you will not attend class due to symptoms or a potential exposure, you are required to also submit those concerns through the COVID Reporter. If you do not have access to the internet to fill out the online COVID-19 Reporter, please call (970)491-4600. If you report symptoms or a positive test, your report is submitted to CSU’s Public Health Office. You will receive immediate, initial instructions on what to do and then you will also be contacted by phone by a public health official. Based on your specific circumstances, the public health official may:
  • choose to recommend that you be tested and help arrange for a test
  • conduct contact tracing
  • initiate any necessary public health requirements or recommendations and notify you if you need to take any steps
If you report a potential exposure, the public health official will help you determine if you are at risk of contracting COVID. For the latest information about the University’s COVID resources and information, please visit the CSU COVID-19 site (


Sections 001, 801 and 002
Instructor: Wim Bohm
Lectures: On Line via Canvas Echo
Office Hours: Fridays 10-11 am on Teams

Graduate Teaching Assistants
Anju Gopinath
Help desk Thursdays and Fridays 2-4 pm on Teams

Chaitanya Roygaga
Help desk Mondays 2-4 pm and Tuesdays 9-11 am on Teams

Instructor email:

Help Desk

There will be a help desk on cs320 Spring21 Teams, general channel:

  • Monday 2-4 pm: Chaitanya
  • Tuesday 9-11 am: Chaitanya
  • Thursday 2-4 pm: Anju
  • Friday Office Hours 10-11 am: Wim
  • Friday 2-4 pm: Anju


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

Textbook & Materials

There is the 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.

The Matching Problem in the introductory lecture is described in more detail in Algorithm Design by Jon Kleinberg and Eva Tardos.


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

Activity Weight
Quizzes 20%
Written Assignments 15%
Programming Assignments 15%
Exams 50 %

Your final grade will be determined by the weights above.


Written assignments are done in Canvas. We will use the cs checkin system for programming assignments.


There will be 3 tests in the form of Canvas Quizzes, two midterms (15 pts each) and a final (20 pts).

Grading Policies

Written assignments, programming assignments, quizzes and exams will all be done individually.

Please see Professional Conduct below for more information and links to resources.

Late and Makeup Policy

Programming assignments will have a 20% penalty up to 48 hours late.

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.

For unforeseeable emergencies such as severe illness, the death of a family member or close friend, please talk to the instructor.

We will drop your lowest score in the quizzes when calculating your final score for the class.

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

Discussion Boards

A class discussion board is being used to support this course. We will use Canvas Discussions for this.

Here are some explicit guidelines to assist in establishing the tone and expectations regarding the use of the discussion board.

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