CIS 1921: Solving Hard Problems in Practice

Spring 2025

๐ŸŽ Course Overview

What does Sudoku have in common with debugging, scheduling exams, and routing shipments? All of these problems are provably hard โ€” no one has a fast algorithm to solve them. But in reality, people are quickly solving these problems on a huge scale with clever systems and heuristics!


In this minicourse, weโ€™ll explore how researchers and organizations like Microsoft, Google, and NASA are solving these hard problems, and weโ€™ll get to use some of the tools theyโ€™ve built!


Topics covered include: routing, scheduling, and packing problems; constraint programming in Python; SAT solving; optimization; operations research.

๐Ÿงญ Logistics

Instructor: Ishaan Lal

Location: Walnut 401B

Time: Thurs 7:00-8:30 PM

Course Sites: Please sign up for Ed and Gradescope through Canvas!

๐ŸŽ“ Enrollment

Please request permission through Path! Permits to register will be granted periodically. Even if you aren't officially enrolled yet, feel free to show up to the first class!

CIS 1210 is a prerequisite for CIS 1921. You are expected to be fairly comfortable with programming and familiar with graphs. Experience with Python is helpful but not necessary. Knowledge of NP-completeness is not necessary but useful to motivate the course.

๐Ÿ“ Grading

Homeworks will consist of 4.5 medium-size programming projects, assigned roughly biweekly.


You will work in pairs on a final project of your choosing — you might choose to solve a practical problem using the tools weโ€™ll learn, implement a solver with modern techniques, or even explore new methods of your own!


Homework: 44%

Final Project: 38%

Quizzes: 10%

Attendance: 8%

๐Ÿ‘‹ Teaching Staff

Ishaan Lal

Instructor

ilal @ seas

Office hours:

Wednesday 9:30-10:30pm

Cindy Yang

Teaching Assistant

cindyy @ seas

Office hours:

Tuesday 8-9pm

Thomas Ngulube

Teaching Assistant

tngulube @ seas

Office hours:

Sunday 3-4pm

๐Ÿ“… Schedule

Week Date Lecture Additional Material Homework
Syllabus
1 1/16 Intro to Hard Problems: Lecture Slides and Lecture Notes Setup and HW0: Finger Exercises (due Monday, 1/27 by 11:59pm)
2 1/23 Solvers & Encoding: Lecture Slides and Lecture Notes Graph coloring Code HW1: Sudoku (due Monday, 2/10 by 11:59pm)
3 1/30 Algorithms for SAT: Lecture Slides and Lecture Notes
4 2/6 Modern SAT Techniques: Lecture Slides HW2: PennSAT (due Monday, 2/24 by 11:59pm)