We are extremely honored to have Dan Friedman join us on Tuesday, March 15th for an evening of "Ask me anything".
Dan is a leading authority in the Scheme community and a prominent author in the field of programming languages.
About Dan Friedman
Dr. Daniel Paul Friedman is a professor of Computer Science (https://en.wikipedia.org/wiki/Computer_Science) at Indiana University (https://en.wikipedia.org/wiki/Indiana_University_Bloomington) in Bloomington, Indiana (https://en.wikipedia.org/wiki/Bloomington,_Indiana). His research focuses on programming languages (https://en.wikipedia.org/wiki/Programming_language), and he is a prominent author in the field.
With David Wise, Friedman wrote a highly influential paper on lazy programming (https://en.wikipedia.org/wiki/Lazy_evaluation), specifically on lazy streams (ICALP (https://en.wikipedia.org/wiki/ICALP) 1976). The paper, entitled "Cons should not evaluate its arguments," is one of the first publications pushing for the exploration of a programming style with potentially infinite data structures and a form of programming that employs no computational effects (though programs may diverge). Over the 1970s, Friedman and Wise explored the topic in depth and also considered extensions to the world of parallel computing.
In the 1980s, Friedman turned to the study of Scheme (https://en.wikipedia.org/wiki/Scheme_(programming_language)). He explored the use of macros for defining programming languages; with Kohlbecker, Felleisen (https://en.wikipedia.org/wiki/Matthias_Felleisen), and Duba, he co-introduced the notion of 'hygienic macros' in a 1986 LFP paper that is still widely cited today.
With Haynes and Wand, he simultaneously studied the nature of continuation objects, their uses, and the possibilities of constraining them. Following that, Friedman and Felleisen (https://en.wikipedia.org/wiki/Matthias_Felleisen) introduced a lambda calculus (https://en.wikipedia.org/wiki/Lambda_calculus) with continuations (https://en.wikipedia.org/wiki/Continuations) and control operators (https://en.wikipedia.org/wiki/Call-with-current-continuation). Their work has spawned work on semantics, connections between classical logic and computation, and practical extensions of continuations.
Friedman is also a prolific text book author. His first text book, The Little LISPer (https://en.wikipedia.org/wiki/LISP), dates back to 1974 and is still in print in its fourth edition, now called The Little Schemer (with Felleisen (https://en.wikipedia.org/wiki/Matthias_Felleisen)). Friedman and Felleisen (https://en.wikipedia.org/wiki/Matthias_Felleisen) wrote three more "little" books in the 1990s: The Little MLer (https://en.wikipedia.org/wiki/ML_(programming_language)), The Seasoned Schemer (https://en.wikipedia.org/wiki/Scheme_(programming_language)), and A Little Java (https://en.wikipedia.org/wiki/Java_(programming_language)), A Few Patterns.
Friedman is also the lead author of Essentials of Programming Languages (https://en.wikipedia.org/wiki/Essentials_of_Programming_Languages), a text book on programming languages. As such, it changed the landscape of language text books in the 1980s, shifting the focus from surveys of languages to the study of principles via series of interpreters. Today's text books on this topic tend to follow this organization, employing operational semantics and type theory instead of interpreters. Like The Little LISPer, Essentials of Programming Languages is a long-living book and is in its third edition now.
Friedman also resumed work on his "Little" series with The Reasoned Schemer (with Byrd and Kiselyov), explaining logic programming via an extension of Scheme.
Most recently Daniel Friedman and Carl Eastlund published The Little Prover which introduces inductive proofs as a way to determine facts about computer programs.
It is written in an approachable, engaging style of question-and-answer, with the characteristic humor of The Little Schemer (fourth edition, MIT Press). Sometimes the best way to learn something is to sit down and do it; the book takes readers through step-by-step examples showing how to write inductive proofs. The Little Prover assumes only knowledge of recursive programs and lists (as presented in the first three chapters of The Little Schemer) and uses only a few terms beyond what novice programmers already know. The book comes with a simple proof assistant to help readers work through the book and complete solutions to every example.