Maintained by Justin Li.

*Think Python*, by Allen Downey*Java for Python Programmers**Introduction to Programming Using Java*, by David Eck*Think Java: How to Think Like a Computer Scientist*, by Allen Downey*Python Tutor**Practical Python*, by David Beazley

*Problem Solving with Algorithms and Data Structures using Python*, by Brad Miller and David Ranum*Data Structures 1*, by the OpenDSA Project*Data Structures 2*, by the OpenDSA Project*Java Structures*, by Duane Bailey*Open Data Structures*, by Pat Morin*Data Structures and Algorithms with Object-Oriented Design Patterns in Java*, by Bruno Preiss- Data Structure Visualizations

*An Active Introduction to Discrete Mathematics and Algorithms*, by Chuck Cusack*Connecting Discrete Mathematics and Computer Science*, by David Liben-Nowell

*Deep Learning*, by Ian Goodfellow, Yoshua Bengio, and Aaron Courville*Dive into Deep Learning*, Aston Zhang and Zack C. Lipton and Mu Li and Alex J. Smola

*Programming Languages*, by Scott F. Smith*Crafting Interpreters*, by Bob Nystrom*Programming Languages: Application and Interpretation*, by Shriram Krishnamurthi- Advance Compilers

*Computer Age Statistical Inference*, by Bradley Efron and Trevor Hastie*Python Data Science Handbook*, by Jake VanderPlas

*Introduction to Computer Graphics*, David J. Eck*Computer Graphics from Scratch*, Gabriel Gambetta*Physically Based Rendering: From Theory To Implementation*, Matt Pharr, Wenzel Jakob, and Greg Humphreys