Linear and Integer Programming (CSCI 5654), Spring 2020

Course Staff

  • Instructor: Sriram Sankaranarayanan (srirams@….)

  • Office Hours: To be announced.

  • Teaching Assistant: Steven Kordonowy (steven.kordonowy@…)

  • Office Hours: To be announced.

Course Information

  • Class Timings: Tuesday, Thursday 12:30 - 1:45 PM

  • Class Location: HUMN 1B80.

  • Pre-Requisites: Calculus I,II + Algorithms + Linear Algebra.


Topics Covered

Roughly, we will cover the following topics (some of them may be skipped depending on the time available).

  • Linear Programming: Basics, Simplex Algorithm, and Duality.

  • Applications of Linear Programming: regression, classification and other engineering applications.

  • Integer Linear Programming: Basics, Branch-and-Bound, Cutting Plane Methods.

  • Combinatorial Optimization: Basics of approximation algorithms.

  • Network flow problems.

  • Interior point methods.


We will use the following main textbook for linear programming.

This book is available online through CU libraries.

Other books that we will use material from (instructor will provide notes to help studednts).

  • Vasek Chvatal, Linear Programming. This is a classic textbook that inspired many (including your instructor).

  • Alexander Schrijver, Theory of Linear and Integer Programming. A more mathematically dense presentation but very important text in this topic: highly recommended for students interested in CS theory.


ID Date Topics Covered Book Sections
1 Tu, 1/14 Introduction to Linear Optimization Ch. 1
2 Th, 1/16 Modeling Optimization Problems with Examples.
3 Tu, 1/21 The Simplex Method Ch. 2
4 Th, 1/23 Initialization and Degeneracy Ch. 3
5 Tu, 1/28 Dualilty theory Ch. 5
6 Th, 1/30 String Duality and Comp. Slackness Ch. 5
7 Tu, 2/4 Sensitivity and Parameteric Problems Ch. 7
8 Th, 2/6 Norm optimization problems and connections to learning Ch. 12
9 Tu, 2/11 Revised Simplex, matrix factorization of the basis Ch. 6
10 Th, 2/13 Implementing Simplex Efficiently Ch. 8 and 9
11 Tu, 2/18 Network flow problems Ch. 13


Note All assignments posted on moodle. Signup code will be given out in class and sent out by email.

Written Assignment Submission and Late Policy

Written paper and pencil assignments have to be submitted on paper during class on the due date. Assignments can be turned in by the subsequent lecture for a 20% penalty.

To be flexible, we will omit one assignment with the lowest scores from consideration while computing the overall grade.


We will set programming assignments in Python3. These assignments will require basic knowledge of writing programs in Python3.

  • Python3 functions, and control loops.

  • Data structures: lists, dictionaries and sets.

  • Classes and Inheritence.

  • Ability to write small projecs in Python3, test and debug.

Course Work/Grades

The course work will consist of (a) weekly problem sets that will involve solving algorithmic problems and some coding; (b) spot exams; and (c) final project.

Problem Sets (45% of the grade)

Each week, we will have a problem set provided to you as a Jupyter (IPython) notebook. This will include questions that involve writing small python3 programs and answering more descriptive questions that may involve algorithm design, mathematical analysis or proofs.

To do this: you should first download and install Jupyter on your machine. See Jupyter Notebook Install Guide

You must also download and test out some notebooks we will provide.

Spot Exams (25% of the grade)

We will have 2 spot exams spread out through the semester. They will test material that you have learned and go on for one hour each.

Spot exam dates and locations will be announced within the first three weeks of the semester

Logisitics for Exams

1. The exam will be held from 6:30 - 7:30 PM, on campus.

2. Students who live too far away will need to email the instructor and agree on a setup by week two. For such students, this may involve signing up for a proctoring service.

3. Accomodations such as alternative exam timings will only be provided for students with a letter from the campus disability services or valid documented medical reasons (a doctor's note is needed). Students receiving the accomodation will need to be mindful of the instructor's limited time and the overall resource limitations.

Final Project (30% of the grade)

A final project will account for 30% of the grade. It will involve working in teams of up to two students who will understand and implement an algorithm beyond what has been covered in class. The project may be presented in class over a 15-20 minute slot, or submitted as a 20 minute video produced by the students, that can be posted on youtube. If the student is unable to post a video, they can produce a PDF writeup of upto 4 pages.

Logistics for Final Project

1. Teams of two and topics will be finalized by April 1, 2020.

2. All projects will be due on May 3, 2020 (tentative date, will be finalized soon). No extensions are possible.

3. Presentations will be held in class for 15 minutes starting the week after the thanksgiving break. In class presentations are voluntary but highly appreciated. We expect about 16 projects to be presented.

4. All projects not presented in class, will be posted as a video so that the instructor and course staff may grade them.

More details will be available as the deadline nears.

Final Grades

Final grades will be calculated using the cumulative scores with the appropriate weightage.

Collaboration Policy

You are welcome and encouraged to work together in learning the material. However, please read the following statement clearly. Violating the course policy will result in a failing grade in the entire class and a trip to a honor code hearing. It may also debar you from being a TA or RA in the department for at least a semester.

1. Resources Available To You: You are allowed to consult the instructor, course staff and classmates. If you worked with your classmates, your assignment must clearly acknowledge who you worked with. When you work with others, you are expected to understand the solution and write it up on your own, in your own words. Same goes for programming assignments.

2. Resources Forbidden To You: Googling for a solution, asking students not in the class, posting on stack exchange, or hiring outside help.

3. Plagiarism is forbidden: the assignments and code that you turn in should be writtencomposed entirely on your own. You should not need to consult sources beyond your textbook, class notes, posted lecture slides and notebooks, programming language documentation, and online sources for basic techniques. Copyingsoliciting a solution to a problem from the internet or another classmate constitutes a violation of the course's collaboration policy.

4. Do not search for a solution online: You may not actively search for a solution to the problem from the internet. This includes posting to sources like StackExchange, Reddit, Chegg, etc.

5. StackExchange Clarification: Searching for basic techniques in PythonPandasNumpy is totally fine. If you want to post and ask “How do I group by two columns, then do something, then group by a third column” that's fine. What you cannot do is post “Here's the DataFrame my prof gave me. I need to convert Age in Earth years to Martian years and then predict the person's favorite color. Give me code!”. That's cheating.

6. When in doubt, ask: We have tried to lay down some rules and the spirit of the collaboration policy above. However, we cannot be comprehensive. If you have doubts about this policy or would like to discuss specific cases, please ask the instructor. If it has not been described above, you should discuss it with us first

Standard Course Policies

Honor Code

All students enrolled in a University of Colorado Boulder course are responsible for knowing and adhering to the academic integrity policy of the institution. Violations of the policy may include: plagiarism, cheating, fabrication, lying, bribery, threat, unauthorized access, clicker fraud, resubmission, and aiding academic dishonesty. All incidents of academic misconduct will be reported to the Honor Code Council (; 303-735-2273). Students who are found responsible for violating the academic integrity policy will be subject to nonacademic sanctions from the Honor Code Council as well as academic sanctions from the faculty member. Additional information regarding the academic integrity policy can be found at

Disability Accommodations

If you qualify for accommodations because of a disability, please submit your accommodation letter from Disability Services to your faculty member in a timely manner (for exam accommodations provide your letter at least two weeks prior to the exam) so that your needs can be addressed. Disability Services determines accommodations based on documented disabilities in the academic environment. Information on requesting accommodations is located on the Disability Services website. Contact Disability Services at 303-492-8671 or for further assistance. If you have a temporary medical condition or injury, see Temporary Medical Conditions under the Students tab on the Disability Services website and discuss your needs with your professor.

Religious Observances

Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments, or required attendance. If you have an exam or assignment conflict due to a religious observance please notify your instructor in a timely manner. See the campus policy regarding religious observances for full details.

Classroom Behavior

Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Class rosters are provided to the instructor with the student's legal name. We will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. For more information, see the policies on classroom behavior and the Student Code of Conduct.

Sexual Misconduct, Discrimination, Harassment and/or Related Retaliation

The University of Colorado Boulder (CU Boulder) is committed to maintaining a positive learning, working, and living environment. CU Boulder will not tolerate acts of sexual misconduct, discrimination, harassment or related retaliation against or by any employee or student. CU's Sexual Misconduct Policy prohibits sexual assault, sexual exploitation, sexual harassment, intimate partner abuse (dating or domestic violence), stalking or related retaliation. CU Boulder's Discrimination and Harassment Policy prohibits discrimination, harassment or related retaliation based on race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Individuals who believe they have been subject to misconduct under either policy should contact the Office of Institutional Equity and Compliance (OIEC) at 303-492-2127. Information about the OIEC, the above referenced policies, and the campus resources available to assist individuals regarding sexual misconduct, discrimination, harassment or related retaliation can be found at the OIEC Website