If you like How to Design Programs

How to Design Programs
Matthias Felleisen

This introduction to programming places computer science in the core of a liberal arts education. Unlike other introductory books, it focuses on the program design process. This approach fosters a variety of skills -- critical reading, analytical thinking, creative synthesis, and attention to detail -- that are important for everyone, not just future computer programmers. The book exposes readers to two fundamentally…

Here’s what to read next

Advances in Computers, Volume 49 (Advances in Computers)
Advances in Computers, Volume 49 (Advances in Computers)
Marvin V. Zelkowitz
Computer science illuminated
Computer science illuminated
Nell B. Dale
Advances in Computers
Advances in Computers
Marshall C. Yovits
Structure and Interpretation of Computer Programs (SICP)
Structure and Interpretation of Computer Programs (SICP)
Harold Abelson
Code
Code
Charles Petzold
Extreme programming explained
Extreme programming explained
Kent Beck
Hackers & painters
Hackers & painters
Graham, Paul
Beginning Python
Beginning Python
James R. Payne
Discrete mathematics
Discrete mathematics
Norman Biggs
How computers work
How computers work
Ron White
Invitation to Computer Science
Invitation to Computer Science
G. Michael Schneider
The Elements of Statistical Learning
The Elements of Statistical Learning
Trevor Hastie
Structured Computer Organization
Structured Computer Organization
Andrew S. Tanenbaum
Distributed Systems
Distributed Systems
Andrew S. Tanenbaum
Coders at Work
Coders at Work
Peter Seibel