1. Crafting Interpreters

2. Designing Data Intensive Applications

3. Fundamentals of Data Engineering