📖 Overview
Daniel P. Friedman is a Computer Science professor at Indiana University Bloomington who has made significant contributions to programming languages research and education. His academic work spans several decades, with particular focus on lazy programming, Scheme language development, and the theory of programming languages.
In the 1970s, Friedman pioneered work on lazy programming alongside David Wise, publishing influential research on lazy streams and infinite data structures. Their 1976 paper "Cons should not evaluate its arguments" became a foundational text in the field of lazy programming and helped establish new approaches to computational methods.
The 1980s saw Friedman focus on Scheme programming language research, where he made notable contributions to macro systems and continuation objects. His work with colleagues led to the development of hygienic macros, a concept that remains influential in programming language design.
Friedman is widely recognized for his series of educational books, including "The Little Schemer" and "The Little Lisper," which introduced innovative approaches to teaching programming concepts. His books employ a distinctive question-and-answer format that has helped generations of computer science students grasp complex programming concepts.
👀 Reviews
Readers appreciate Friedman's unique teaching approach in "The Little Schemer" series, particularly the Socratic question-and-answer format. Multiple reviews note how the books build complex concepts from simple foundations. One Amazon reviewer wrote: "The format forces you to think through each concept step by step."
Programming students value the gradual progression and hands-on learning style. Reviews often mention the books' effectiveness in teaching recursive thinking. A Goodreads user noted: "It changed how I approach problem-solving in programming."
Common criticisms include:
- Format can feel repetitive
- Some find the style too slow-paced
- Limited practical examples
- Assumes prior programming knowledge despite being labeled for beginners
Ratings across platforms:
The Little Schemer:
- Goodreads: 4.2/5 (2,100+ ratings)
- Amazon: 4.5/5 (280+ reviews)
The Seasoned Schemer:
- Goodreads: 4.1/5 (400+ ratings)
- Amazon: 4.4/5 (50+ reviews)
The Reasoned Schemer:
- Goodreads: 4.0/5 (300+ ratings)
- Amazon: 4.3/5 (40+ reviews)
📚 Books by Daniel P. Friedman
Essentials of Programming Languages - A textbook that systematically presents fundamental programming language concepts through interpreters written in Scheme, covering topics like variables, control, state, and types.
The Little Schemer - A dialogue-style book that teaches recursive thinking and Scheme programming through a series of questions and answers about list manipulation.
The Little Lisper - The original version of The Little Schemer, teaching recursive programming concepts using the Lisp programming language.
The Seasoned Schemer - A continuation of The Little Schemer that explores more advanced topics in Scheme programming and computation.
The Reasoned Schemer - An introduction to logic programming using miniKanren, presented in the characteristic question-and-answer format.
A Little Java, A Few Patterns - An exploration of object-oriented programming concepts using Java, following the interactive style of the Schemer series.
The Little MLer - A guide to programming with types and type inference using the ML programming language.
The Little Prover - An introduction to interactive theorem proving using a subset of ACL2, teaching mathematical reasoning about computer programs.
The Little Schemer - A dialogue-style book that teaches recursive thinking and Scheme programming through a series of questions and answers about list manipulation.
The Little Lisper - The original version of The Little Schemer, teaching recursive programming concepts using the Lisp programming language.
The Seasoned Schemer - A continuation of The Little Schemer that explores more advanced topics in Scheme programming and computation.
The Reasoned Schemer - An introduction to logic programming using miniKanren, presented in the characteristic question-and-answer format.
A Little Java, A Few Patterns - An exploration of object-oriented programming concepts using Java, following the interactive style of the Schemer series.
The Little MLer - A guide to programming with types and type inference using the ML programming language.
The Little Prover - An introduction to interactive theorem proving using a subset of ACL2, teaching mathematical reasoning about computer programs.
👥 Similar authors
Matthias Felleisen
Co-authored several books with Friedman and developed PLT Scheme (now Racket). His work focuses on programming language theory and educational approaches to computer science, with publications covering both theoretical foundations and practical programming techniques.
Gerald Sussman Created SICP (Structure and Interpretation of Computer Programs) which shares philosophical alignment with Friedman's teaching approach. His work at MIT influenced programming language education and artificial intelligence research through systematic development of computational models.
Philip Wadler Contributed fundamental research to functional programming and type theory that parallels Friedman's work in programming language development. His papers on monads and type systems have shaped modern programming language design and implementation.
Richard P. Gabriel Developed significant work in Lisp systems and programming language design that complements Friedman's contributions to Scheme. His writings explore programming language evolution and computer science education through a combination of technical and philosophical perspectives.
William Byrd Created miniKanren with Friedman and extended logic programming concepts in ways that build upon Friedman's educational approach. His research connects programming language theory with practical implementation techniques through relational programming and proof systems.
Gerald Sussman Created SICP (Structure and Interpretation of Computer Programs) which shares philosophical alignment with Friedman's teaching approach. His work at MIT influenced programming language education and artificial intelligence research through systematic development of computational models.
Philip Wadler Contributed fundamental research to functional programming and type theory that parallels Friedman's work in programming language development. His papers on monads and type systems have shaped modern programming language design and implementation.
Richard P. Gabriel Developed significant work in Lisp systems and programming language design that complements Friedman's contributions to Scheme. His writings explore programming language evolution and computer science education through a combination of technical and philosophical perspectives.
William Byrd Created miniKanren with Friedman and extended logic programming concepts in ways that build upon Friedman's educational approach. His research connects programming language theory with practical implementation techniques through relational programming and proof systems.