My life has been about programming for as long as I can remember. Learning to code was a way to connect with my dad and express my creativity at a young age. Since I grew up with code, it became the way I understood the world; often I could look at a process or program and immediately see its source code in my mind. I developed a very strong sense of aesthetics searching for “perfect code,” which for me was code that was not only error-free but resistant to errors. My studies, research, and career is about moving myself and all programmers closer to that goal: Software that never fails.
After providing a thorough introduction to its language of choice (Scheme) it quickly demonstrates how make interesting non-trivial programs such as your own square root function or a symbolic differentiation tool, and that's just chapter 1.
All-in-all solid introduction to functional programming, or just programming in general.
As others have gone into, this is a great programming book for many reasons, and is a must-read for anyone who is interested in software design. Rather than waste time reaffirming the excellent positive reviews of this book, I wanted to cover something that I have not seen in the reviews: namely that there are multiple publishers for this book (as it is an "open source" book). At the time of writing, there is this McGraw-Hill publication, and, for 40% less, an MIT press edition. While I have not seen the McGraw-Hill version in person to see what quality benefits…
Having worked with an untyped functional language the next logical step is to add types on top, and how to get a better understanding than by implementing the type system yourself.
This book takes you through all the interesting kinds and variations of type systems, and you get to implement them yourself using one of my absolute favorite languages (OCaml).
A comprehensive introduction to type systems and programming languages.
A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of type systems—and of programming languages from a type-theoretic perspective—has important applications in software engineering, language design, high-performance compilers, and security.
This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages. The approach is pragmatic and operational; each new concept is motivated by programming examples and the more theoretical sections…
The building blocks of software are algorithms, so here our journey continues after you have established a deep understanding of programming languages.
Modern software is predominantly distributed, and since this book doesn't assume much it is the perfect introduction to algorithm analysis, concurrency, and distributed systems. And the best part is that you can just jump in and build these algorithms yourself.
The new edition of a guide to distributed algorithms that emphasizes examples and exercises rather than the intricacies of mathematical models.
This book offers students and researchers a guide to distributed algorithms that emphasizes examples and exercises rather than the intricacies of mathematical models. It avoids mathematical argumentation, often a stumbling block for students, teaching algorithmic thought rather than proofs and logic. This approach allows the student to learn a large number of algorithms within a relatively short span of time. Algorithms are explained through brief, informal descriptions, illuminating examples, and practical exercises. The examples and exercises allow readers to…
Continuing down the engineering part of this mini-curriculum, we have a collection of interesting ideas, each written by a different author, all of them inspiring.
Some of the chapters in this book I have reread more times than I can count, because the ideas are so original and intriguing that my fingers start to tingle.
How do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes. This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to…
This tour of programming is a humorous reminder that we should always question our assumptions.
This book presents example after example of very simple Java programs all of which behave differently than you expect. It's both humbling and so provocative that you have to go into an editor and see if their claims are true.
"Every programming language has its quirks. This lively book reveals oddities of the Java programming language through entertaining and thought-provoking programming puzzles."
--Guy Steele, Sun Fellow and coauthor of The Java (TM) Language Specification
"I laughed, I cried, I threw up (my hands in admiration)."
--Tim Peierls, president, Prior Artisans LLC, and member of the JSR 166 Expert Group
How well do you really know Java? Are you a code sleuth? Have you ever spent days chasing a bug caused by a trap or pitfall in Java or its libraries? Do you like brainteasers? Then this is the book for…
Improving existing code—refactoring—is one of the most common tasks you’ll face as a programmer. Five Lines of Code
teaches you clear and actionable refactoring rules that you can apply
without relying on intuitive judgements such as “code smells.” Following
the author’s expert perspective—that refactoring and code smells can be
learned by following a concrete set of principles—you’ll learn when to
refactor your code, what patterns to apply to what problem, and the code
characteristics that indicate it’s time for a rework.
I have spent my entire professional life quietly patrolling the frontiers of understanding human consciousness. I was an early adopter in the burgeoning field of biofeedback, then neurofeedback and neuroscience, plus theory and practices of humanistic and transpersonal psychology, plus steeping myself in systems theory as a context for all these other fields of focus. I hold a MS in psychology from San Francisco State University and a PhD from Saybrook Institute. I live in Mount Shasta CA with Molly, my life partner for over 60 years. We have two sons and two grandchildren.
In this thoroughly researched and exquisitely crafted treatise, Jim Brown synthesizes the newest understandings in neuroscience, developmental psychology, and dynamical systems theory for educators and others committed to nurturing human development.
He explains complex concepts in down-to-earth terms, suggesting how these understandings can transform education to engender optimal learning and intelligence. He explores the nature of consciousness, intelligence, and mind.
Brown then offers a model of optimal human learning through lifelong brain development within a supportive culture--drawing on the work of Piaget, Erickson, Maslow, Kohlberg, and Steiner--and how that work is being vastly expanded by neuroscience and dynamical systems thinking.
Mindleap: A Fresh View of Education Empowered by Neuroscience and Systems Thinking
In this thoroughly-researched and exquisitely crafted treatise, Jim Brown synthesizes the newest understandings in neuroscience, developmental psychology, and dynamical systems theory for educators and others committed to nurturing human development. He explains complex concepts in down-to-earth terms, suggesting how these understandings can transform education to truly engender optimal learning and intelligence. He explores the nature of consciousness, intelligence, and mind. Brown then offers a model of optimal human learning through life-long brain development within a supportive culture--drawing on the work of Piaget, Erickson, Maslow, Kohlberg, and Steiner--and how that work is being vastly expanded by neuroscience and dynamical systems thinking.