Introduction to Computing
Explorations in Language, Logic, and Machines
Download Full Book (PDF) Order Printed Copy (Amazon)
Computer science studies how to describe, predict properties of, and efficiently implement information processes. This book introduces the most important ideas in computing using the Scheme and Python programming languages. It focuses on how to describe information processes by defining procedures, how to analyze the costs required to carry out a procedure, and the fundamental limits of what can and cannot be computed mechanically.
link from Peter Norvig's