Description

CS 320 provides an introduction to algorithms, their correctness proofs, their 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
  • Greedy algorithms and greedy proofs
  • Tree and graph algorithms
    • Depth-first, breadth-first search
    • Bipartite graphs
    • Topological sort
    • Connected components
    • Spanning trees and shortest paths, cycles
  • Divide-and-conquer strategy and techniques for bounding running times of such algorithms
  • Dynamic programming
  • Dynamic multi-threading
  • Reduction of one problem to another (polynomial time reduction)
  • Problem classes (P, NP, NPC)

Personnel and Office Hours

Sections 001, 801
Lecture: 4:30–5:45PM, MW, Clark A 201 (recording in Canvas under echo360)
Instructor: Sanjay Rajopadhye
Office Hours (CSB 340 and/or Teams) see below, plus additional hours Tuesdays 4:00-5:00 PM
GTAs: Wiliam Scarbro (WS), and Fazle Rasul
UTAs: Jason Cursio (JC), Rye Easton (RE) and Matt Sturgeon (MT)
Course email:
cs320@cs.colostate.edu. Please use a single email PoC (with reply-to-all in chains) so that everyone is on the same page.
Office hours:
Hours in bold-italics are in person (either in/off CSB 120, or in Sanjay's office CSB 340). Other hours are online on Teams.
In addition, we will monitor the Teams channel over the weekend as regularly as possible.
Hr Mon Tue Wed Thu Fri Sat Sun
8AM SRMS SRMS
9AM WSWSWSFR
10AM FR + SRFRWSFRFR
11AM WSWSFRWS
12N FRWSFRWSMSSR
1PM REWSFRWSMSSR
2PM REJCMSJC
3PM FRJCWSJC
4PM JC + SR
5PM REFR
6PM RE
7PM SRFRSRRE
8PM SRSR

Prerequisites

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 one required textbook for this course: Introduction to Algorithms, 3rd edition, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.

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

Grading

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

Activity Weight
Prerequisites (quizzes + CS220 final)    10%
Worksheets 10%
Quizzes 15%
Programs 15%
Exams 50%

Your final grade will be determined by the weights above.

Worksheets & Quizzes

Worksheets and Quizzes are individual assignments that are completed on Canvas.

Programs

Programming assignments must be done individually. We will use checkin for these assignments.

Exams

There will be 3 tests, two midterms (15 pts each) and a final (20 pts). You may bring one page (i.e., single sided) of notes to exams. It must have your name on it, and you must turn it in along with your exam.

Exams will be held in the CSB 110 between 8AM and 4PM for campus students. The will be on the Friday of the week noted in the course progress tab). Online students will take the exam online using the Respondus Lockdown browser. See Canvas for dates.

Grading Policies

Written assignments, programming assignments, and exams will all be done individually and grades assigned on an individual basis. Canvas quizzes must also be done individually, but we will often allow multiple attempts.

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

Late and Makeup Policy

Deadlines are deadlines. If you fail to take a quiz, or check in an assignment, or don't take an exam on time, you get no points for that element. Most assignments and practice quizzes will have a 7 day extension (the until date) after the due date to address SDC accommodations, excused absences, life events, illnesses, etc., but you should not make a habit of this or you will fall behind in the course. 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 communicate with the teaching team as soon as possible.

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). In particular:

Discussion Boards

A class discussion board within Microsoft Teams will be set up to support this course.

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

  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 sometimes, 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 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.