"The Algorithm Specialization" that Tim Roughgarden teaches on Coursera/EdX is based on his book series "Algorithms Illuminated" and the lectures, slides and projects are up on the website so you dont need to take it on coursera/edx(UX hell, constant promo emails, time constraint).
- Stanford algorithms specialization: https://coursera.org/specializations/algorithms
- University of Melbourne Discrete Optimization: https://coursera.org/learn/discrete-optimization
- Basic Modeling for Discrete Optimization: https://coursera.org/learn/basic-modeling
- Advanced Modeling for Discrete Optimization: https://coursera.org/learn/advanced-modeling
Crafting Interpreters book mentioned elsewhere also very good.