Books
Computer Science
CS Principles: Big Ideas in Programming
This book helps students learn what programming is and how it works without making you write lots of code. It will use the programming language Python, which is widely used, from companies like Google, Instagram and Facebook to engineering and scientific institutions like NASA and CERN.
Theoretical Computer Science
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text.
There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published.
Think Complexity - (2nd Edition)
This book is primarily about complexity science, but studying complexity science gives you a chance to explore topics and ideas you might not encounter otherwise, practice programming in Python, and learn about data structures and algorithms.
Models of Computation - John E. Savage
In Models of Computation: Exploring the Power of Computing, John Savage re-examines theoretical computer science, offering a fresh approach that gives priority to resource tradeoffs and complexity classifications over the structure of machines and their relationships to languages.
This viewpoint reflects a pedagogy motivated by the growing importance of computational models that are more realistic than the abstract ones studied in the 1950s, '60s and early '70s.
Professional Development
Professional Software Development For Students
As a student of computer science and programming, you’ve learned a significant portion of what you need to know as a rookie professional. The most difficult parts perhaps, but far from the “whole enchilada.” This book is meant to fill in the gaps in knowledge needed for workaday software projects.
It aims to teach “in a nutshell” ď€, the myriad subjects the pro-developer should know. It covers the material in a broad manner from theory to practice, attempting to provide a platform for further study and a “mental-map” to place subjects into context.
Information Retrieval
Information Retrieval: A Survey
The need for effective methods of automated IR has grown in importance because of the tremendous explosion in the amount of unstructured data, both internal, corporate document collections, and the immense and growing number of document sources on the Internet. This report is a tutorial and survey of the state of the art, both research and commercial, in this dynamic field.
Introduction to Information Retrieval
The book aims to provide a modern approach to information retrieval from a computer science perspective.