CS498: Algorithmic Engineering: Solving Real-World Problems with Theoretical Tools

Elfarouk Harb

Spring 2026

E-mail: eyfmharb@gmail.com

Instructors Homepage: Elfarouk Harb (aka Farouk) will lead the course, with Professor Chandra Chekuri participating in an advisory and helping role throughout the course.

Office Hours: TBD

Class Hours: TR 2 p.m - 3:15 p.m at 2200 Sidney Lu Mech Engr Bldg.

This is a preliminary list of topics planned for the course. I might add, remove, or substantially revise topics up until the semester begins. This course is actively being developed, so expect significant changes to content and schedule over the next several weeks.


Course Description

This course explores the powerful intersection of theory and practice in algorithmic problem-solving, teaching students to apply advanced computational tools like LP solvers, SAT/SMT solvers, metaheuristics, and other theoretical tools to real-world engineering, optimization, and decision-making challenges.

We explain the theory behind these tools to build intuition, but the emphasis is on application: modeling, using solvers effectively, and engineering robust, efficient solutions. Students will gain hands-on experience working on problems in logistics, verification, scheduling, fair division, auctions, online algorithms, and LLM driven program-synthesis.

Topics include:

  1. Linear, Integer, and Mixed-Integer Programming: Modeling and solving real-world problems using Gurobi, Pyomo, and SCIP. Topics include LP duality, sensitivity analysis, integer formulations, branch-and-bound, cutting planes, disjunctive constraints, and mixed-integer nonlinear programming (MINLP). Applications span logistics, scheduling, verification, and network design.
  2. Global Optimization & Differentiable Algorithms: Extending classical optimization to non-convex and differentiable settings. Implementing gradient descent, stochastic methods, and Newton’s method; exploring metaheuristics such as simulated annealing and genetic algorithms; and introducing automatic differentiation and neural network optimization with PyTorch.
  3. SAT and SMT Solving: Automating reasoning and verification with Z3 and PySAT, including encodings of combinatorial, scheduling, and verification problems. Topics include DPLL, CDCL, theory combination, and symbolic execution.
  4. Learning-Augmented Algorithms & Data-Driven Optimization: Integrating predictive models into algorithmic decision-making. Online regression, incremental learning, and hybrid optimization pipelines that use predictions to improve classical algorithms and solver performance under uncertainty.
  5. Large-Scale Differentiable and Symbolic Systems: Exploring applications in LLM-driven optimization and program synthesis. Using large language models, constraint solvers, and synthesis techniques together for algorithmic reasoning, automated code generation, and human-AI collaborative problem solving.

By the end of the course, students will not only understand the basic underlying theoretical principles, but more importantly, be equipped to integrate these powerful tools into complex, real-world systems.


Grading

Overview

Your final grade in CS498: Algorithmic Engineering is composed of three components:

ComponentWeightDescription
Weekly Homeworks60 %Weekly, collaborative, high-volume assignments done in groups of 2–4. Working alone is a competitive disadvantage. Collaboration is encouraged.
Pulse Checks10 %Three short, in-class individual quizzes given after Parts I, II, III of the course. Their goal is simply to check if you’re “alive”, understanding the bare minimum earns 100 %.
Final Project30 %An individual Algorithmic Engineering project, build a system, implement a paper, or optimize a complex pipeline, comparing performance (speed/quality).

Schedule and Lectures Table (Preliminary)

#DateLecture Slides (Pauses)Lecture Handouts (For printing)Topics CoveredTodos BeforeTodos AfterNotes
101/20/2026Lecture 1 Slides (Pauses)Lecture 1 HandoutCourse overview, comparison to CS374/473, tooling stack, history of LP, Engineer’s Diet problem, Gurobi output interpretation.Read syllabus; install Gurobi + Python env.Review LP basics; try “Engineer’s Diet” Problem in HW1Homework 1 Released. Due Feb 01/2026 midnight 11:59 p.m.
201/22/2026Lecture 2 Slides (Pauses)Lecture 2 HandoutSimplex algorithm, geometric intuition, basic feasible solutions, pivoting, LP duality, accessing duals in Gurobi.Refresh your memory with Matplotlib/pandas.Finish HW 1. 
301/27/2026Lecture 3 Slides (Pauses)Lecture 3 HandoutSensitivity analysis, shadow prices, complementary slackness, discussed duals as “what-if” tools for constraints, network flow models, interpreting Gurobi duals, and shadow price limitations.   
401/29/2026Lecture 4 Slides (Pauses)Lecture 4 HandoutLP relaxations, vertex cover modeling, LP rounding (0.5-threshold), assignment problem (total unimodularity), independent set and integrality gaps.Review graph basics and Gurobi modeling syntax. Homework 2 Released. Due TBD midnight 11:59 p.m.

Late Homework Policy

Intuition and Motivation

To balance flexibility and fairness, each student is allocated 168 total late hours (7 days) across all homework assignments. This policy encourages consistent progress while allowing for unforeseen circumstances (illness, travel, project deadlines, etc.).

\[\sum_{i=1}^{n} \text{late\_hours}_i \le 168\]

then there is no penalty whatsoever.

If your total lateness exceeds the 168-hour allowance, we will automatically determine the set of homework submissions to count toward your grade using an optimization procedure (yes, a real algorithmic selection process!) designed to maximize your total homework score under the late-hour constraint.


Formal Definition (Optimization Model)

Let:

We solve the following 0–1 Knapsack Integer Linear Program (ILP):

\[\begin{aligned} \text{maximize}\quad & \sum_{i=1}^{n} s_i x_i \\ \text{subject to}\quad & \sum_{i=1}^{n} l_i x_i \le 168, \\ & x_i \in \{0, 1\}, \quad i = 1, \dots, n. \end{aligned}\]

This ensures we select the subset of assignments (within your late-hour budget) that maximizes your total homework score.


Examples

Example 1 — Within Limit

HWScore ($s_i$)Late (hours $l_i$)
19512
210036
38548
49060
Total156 ≤ 168

You’re fine! No penalty. All homeworks count toward your grade.


Example 2 — Over Limit (Knapsack Activated)

HWScore ($s_i$)Late (hours $l_i$)
110072
29584
39072
47036
Total264 > 168

Here we solve the ILP:

\[\max 100x_1 + 95x_2 + 90x_3 + 70x_4\] \[\text{s.t. } 72x_1 + 84x_2 + 72x_3 + 36x_4 \le 168,\quad x_i \in \{0, 1\}.\]

The optimal solution (e.g., found by any ILP solver) might be:

The ILP chooses HW1 and HW2 (scores 100 and 95, total 195 points) with 156 late hours, and drops HW3 and HW4.


Notes

Schedule and Weekly Learning Goals

The course is organized into bi-weekly, or tri-weekly modules, each focused on a core topic in algorithmic engineering. Below is a high-level schedule outlining the topics covered each week. This structure is designed to balance theoretical foundations with practical modeling and implementation skills.


Part I: Mathematical Programming

Week 01 – Linear Programming

Week 02 – Linear Programming (cont’d)

Week 03 – Integer Programming

Week 04 – MILP and MINLP


Part II: Global Optimization & Differentiable Algorithms

Week 05 – Convex Programming and Gradient-Based Optimization

Week 06 – Metaheuristics and Global Optimization

Week 07 – Neural Networks and Automatic Differentiation


Part III: Satisfiability & Formal Methods

Week 08 – Introduction to SAT and SMT

Week 09 – Internals of SAT and SMT Solvers

Week 10 – Practical SMT Applications and Encoding


Part IV: Learning-Augmented Algorithms and Data-Driven Optimization

Week 11 – Data-Driven Online Algorithms

Week 12 – Learning-Augmented Optimization and Modeling


Part V: Large-Scale Differentiable and Symbolic Systems

Week 13 – LLMs as Differentiable Reasoning Engines

Week 14 – Program Synthesis + Verification + Human-in-the-Loop Optimization

Week 15–16 – Spillover, MLK day, and Spring break.


Required Materials and References

No required materials, and references will be used when needed. Course notes and slides will be provided as needed, and book references will be made.


Prerequisites

The equivalent of CS374, and proficiency in programming in Python (All assignments can be solved in Python only). Experience with a compiled language like C++ or rust is also beneficial.

In terms of Python experience, if you have some experience with numpy, Python programming, etc, you should be good for the course.


Course Objectives

By the end of this course, successful students will be able to:

  1. Model real-world problems using tools from linear programming, integer programming, satisfiability solving, and game theory.
  2. Select and apply appropriate algorithmic tools (e.g., LP solvers, SAT/SMT solvers, global optimization methods) to solve complex engineering and decision-making problems.
  3. Understand the core theoretical foundations of the tools used (e.g., duality in LP, CDCL in SAT solvers, basic auction theory) to better guide their practical application.
  4. Use modern optimization software (e.g., Gurobi, Pyomo, SCIP, Z3, PySAT) to formulate and solve problems efficiently.
  5. Compare and integrate multiple solving strategies, including exact, heuristic, and hybrid approaches, depending on the structure and scale of the problem.
  6. Translate abstract problems into formal models, including constraints, objectives, and variables suitable for solver-based techniques.
  7. Develop practical implementations of algorithms for scheduling, verification, planning, and fair resource allocation.
  8. Explore emerging applications, such as LLM-assisted program synthesis and solver-driven automation in AI pipelines.