Taming the Infinities of Concurrency


Book Description

Zusammenfassung: Javier Esparza received his primary degree in Theoretical Physics and in 1990 his PhD in Computer Science from the University of Zaragoza. After positions at the University of Hildesheim, the University of Edinburgh, and the Technical University of Munich, he then held professorships at the University of Edinburgh and the University of Stuttgart, and finally returned to TU Munich where he currently holds the Chair of Foundations of Software Reliability and Theoretical Computer Science. Javier is a leading researcher in concurrency theory, distributed and probabilistic systems, Petri nets, analysis of infinite-state models, and more generally formal methods for the verification of computer systems. He has coauthored over 200 publications, many of them highly influential. He coauthored the monographs Free Choice Petri Nets, and Unfoldings: A Partial Order Approach to Model Checking, and more recently the textbook Automata Theory: An Algorithmic Approach. The latter is an exampleof Javier's many activities as a teacher, he has supervised more than 20 PhD students, taught at more than 20 summer schools, and won many awards for his university teaching. He is regularly invited to deliver plenary talks at prestigious computer science conferences and participate in senior program committees, he has contributed as a senior member of technical working groups, society councils, and journal editorial boards, and in 2021 he became a founding Editor-in-Chief of the open-access TheoretiCS journal. This Festschrift celebrates Javier's contributions on the occasion of his 60th birthday, the contributions reflect the breadth and depth of his successes in Petri nets, concurrency in general, distributed and probabilistic systems, games, formal languages, logic, program analysis, verification, and synthesis.




Programming Concurrency on the JVM


Book Description

More than ever, learning to program concurrency is critical to creating faster, responsive applications. Speedy and affordable multicore hardware is driving the demand for high-performing applications, and you can leverage the Java platform to bring these applications to life. Concurrency on the Java platform has evolved, from the synchronization model of JDK to software transactional memory (STM) and actor-based concurrency. This book is the first to show you all these concurrency styles so you can compare and choose what works best for your applications. You'll learn the benefits of each of these models, when and how to use them, and what their limitations are. Through hands-on exercises, you'll learn how to avoid shared mutable state and how to write good, elegant, explicit synchronization-free programs so you can create easy and safe concurrent applications. The techniques you learn in this book will take you from dreading concurrency to mastering and enjoying it. Best of all, you can work with Java or a JVM language of your choice - Clojure, JRuby, Groovy, or Scala - to reap the growing power of multicore hardware. If you are a Java programmer, you'd need JDK 1.5 or later and the Akka 1.0 library. In addition, if you program in Scala, Clojure, Groovy or JRuby you'd need the latest version of your preferred language. Groovy programmers will also need GPars.




Grokking Simplicity


Book Description

Distributed across servers, difficult to test, and resistant to modification--modern software is complex. Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they''re easier to test and debug. Available in PDF (ePub, kindle, and liveBook formats coming soon). about the technology Even experienced developers struggle with software systems that sprawl across distributed servers and APIs, are filled with redundant code, and are difficult to reliably test and modify. Adopting ways of thinking derived from functional programming can help you design and refactor your codebase in ways that reduce complexity, rather than encouraging it. Grokking Simplicity lays out how to use functional programming in a professional environment to write a codebase that''s easier to test and reuse, has fewer bugs, and is better at handling the asynchronous nature of distributed systems. about the book In Grokking Simplicity, you''ll learn techniques and, more importantly, a mindset that will help you tackle common problems that arise when software gets complex. Veteran functional programmer Eric Normand guides you to a crystal-clear understanding of why certain features of modern software are so prone to complexity and introduces you to the functional techniques you can use to simplify these systems so that they''re easier to read, test, and debug. Through hands-on examples, exercises, and numerous self-assessments, you''ll learn to organize your code for maximum reusability and internalize methods to keep unwanted complexity out of your codebase. Regardless of the language you''re using, the ways of thinking in this book will help recognize problematic code and tame even the most complex software. what''s inside Apply functional programming principles to reduce codebase complexity Work with data transformation pipelines for code that''s easier to test and reuse Tools for modeling time to simplify asynchrony 60 exercises and 100 questions to test your knowledge about the reader For experienced programmers. Examples are in JavaScript. about the author Eric Normand has been a functional programmer since 2001 and has been teaching functional programming online and in person since 2007. Visit LispCast.com to see more of his credentials.




Chaos Theory Tamed


Book Description

This text aims to bridge the gap between non-mathematical popular treatments and the distinctly mathematical publications that non- mathematicians find so difficult to penetrate. The author provides understandable derivations or explanations of many key concepts, such as Kolmogrov-Sinai entropy, dimensions, Fourier analysis, and Lyapunov exponents.




The Coevolution


Book Description

Should digital technology be viewed as a new life form, sharing our ecosystem and coevolving with us? Are humans defining technology, or is technology defining humans? In this book, Edward Ashford Lee considers the case that we are less in control of the trajectory of technology than we think. It shapes us as much as we shape it, and it may be more defensible to think of technology as the result of a Darwinian coevolution than the result of top-down intelligent design. Richard Dawkins famously said that a chicken is an egg's way of making another egg. Is a human a computer's way of making another computer? To understand this question requires a deep dive into how evolution works, how humans are different from computers, and how the way technology develops resembles the emergence of a new life form on our planet. Lee presents the case for considering digital beings to be living, then offers counterarguments. What we humans do with our minds is more than computation, and what digital systems do—be teleported at the speed of light, backed up, and restored—may never be possible for humans. To believe that we are simply computations, he argues, is a “dataist” faith and scientifically indefensible. Digital beings depend on humans—and humans depend on digital beings. More likely than a planetary wipe-out of humanity is an ongoing, symbiotic coevolution of culture and technology.




Suicide of the West


Book Description

NEW YORK TIMES BESTSELLER • An urgent argument that America and other democracies are in peril because they have lost the will to defend the values and institutions that sustain freedom and prosperity. Now updated with a new preface! “Epic and debate-shifting.”—David Brooks, New York Times Only once in the last 250,000 years have humans stumbled upon a way to lift ourselves out of the endless cycle of poverty, hunger, and war that defines most of history. If democracy, individualism, and the free market were humankind’s destiny, they should have appeared and taken hold a bit earlier in the evolutionary record. The emergence of freedom and prosperity was nothing short of a miracle. As Americans we are doubly blessed, because the radical ideas that made the miracle possible were written not just into the Constitution but in our hearts, laying the groundwork for our uniquely prosperous society. Those ideas are: • Our rights come from God, not from the government. • The government belongs to us; we do not belong to it. • The individual is sovereign. We are all captains of our own souls, not bound by the circumstances of our birth. • The fruits of our labors belong to us. In the last few decades, these political virtues have been turned into vices. As we are increasingly taught to view our traditions as a system of oppression, exploitation, and privilege, the principles of liberty and the rule of law are under attack from left and right. For the West to survive, we must renew our sense of gratitude for what our civilization has given us and rediscover the ideals and habits of the heart that led us out of the bloody muck of the past—or back to the muck we will go.




Grokking Functional Programming


Book Description

There’s no need to fear going functional! This friendly, lively, and engaging guide is perfect for any perplexed programmer. It lays out the principles of functional programming in a simple and concise way that will help you grok what FP is really all about. In Grokking Functional Programming you will learn: Designing with functions and types instead of objects Programming with pure functions and immutable values Writing concurrent programs using the functional style Testing functional programs Multiple learning approaches to help you grok each new concept If you’ve ever found yourself rolling your eyes at functional programming, this is the book for you. Open up Grokking Functional Programming and you’ll find functional ideas mapped onto what you already know as an object-oriented programmer. The book focuses on practical aspects from page one. Hands-on examples apply functional principles to everyday programming tasks like concurrency, error handling, and improving readability. Plus, puzzles and exercises let you think and practice what you're learning. You’ll soon reach an amazing “aha” moment and start seeing code in a completely new way. About the technology Finally, there’s an easy way to learn functional programming! This unique book starts with the familiar ideas of OOP and introduces FP step-by-step using relevant examples, engaging exercises, and lots of illustrations. You’ll be amazed at how quickly you’ll start seeing software tasks from this valuable new perspective. About the book Grokking Functional Programming introduces functional programming to imperative developers. You’ll start with small, comfortable coding tasks that expose basic concepts like writing pure functions and working with immutable data. Along the way, you’ll learn how to write code that eliminates common bugs caused by complex distributed state. You’ll also explore the FP approach to IO, concurrency, and data streaming. By the time you finish, you’ll be writing clean functional code that’s easy to understand, test, and maintain. What's inside Designing with functions and types instead of objects Programming with pure functions and immutable values Writing concurrent programs using the functional style Testing functional programs About the reader For developers who know an object-oriented language. Examples in Java and Scala. About the author Michal Plachta is an experienced software developer who regularly speaks and writes about creating maintainable applications. Table of Contents Part 1 The functional toolkit 1 Learning functional programming 2 Pure functions 3 Immutable values 4 Functions as values Part 2 Functional programs 5 Sequential programs 6 Error handling 7 Requirements as types 8 IO as values 9 Streams as values 10 Concurrent programs Part 3 Applied functional programming 11 Designing functional programs 12 Testing functional programs




Operating Systems and Middleware


Book Description

By using this innovative text, students will obtain an understanding of how contemporary operating systems and middleware work, and why they work that way.




Homeschooling for College Credit


Book Description

"The U.S. Department of Education reports that about half of the students who start college will never finish and 75% will graduate with student loan debt. Homeschooling for College Credit teens graduate high school with about 1 year of college under their belts, but motivated teens can finish their degree. Homeschooling for College Credit brings the goal post closer and teaches you how to pay cash as you go. Homeschooling for College Credit will challenge you to reconsider the wisdom of popular college propaganda, and how to make better choices for your family. Even if you've never been to college, this book will turn you into a well-informed homeschool guidance counselor ready to proceed with confidence."--Amazon.com.




Foundations of Probabilistic Programming


Book Description

This book provides an overview of the theoretical underpinnings of modern probabilistic programming and presents applications in e.g., machine learning, security, and approximate computing. Comprehensive survey chapters make the material accessible to graduate students and non-experts. This title is also available as Open Access on Cambridge Core.