Profil penulis
Allen B. Downey - Author
10 karya publik ditemukan.
Think Python: How to Think Like a Computer Scientist - 2e
How to Think Like a Computer Scientist: C++ Version
How to Think Like a Computer Scientist: C Version
Think DSP: Digital Signal Processing in Python
Think DSP is an introduction to Digital Signal Processing in Python. The premise of this book (and the other books in the Think X series) is that if you know how to program, you can use that skill to learn other things. The author is writing this book because he thinks the conventional approach to digital signal processing is backward: most books (and the classes that use them) present the material bottom-up, starting with mathematical abstractions like phasors.
Think Data Structures: Algorithms and Information Retrieval in Java
Data structures and algorithms are among the most important inventions of the last 50 years, and they are fundamental tools software engineers need to know. But in my opinion, most of the books on these topics are too theoretical, too big, and too bottom-up: Too theoretical: Mathematical analysis of algorithms is based on simplifying assumptions that limit its usefulness in practice. Many presentations of this topic gloss over the simplifications and focus on the math. In this book I present the most practical subset of this material and eliminate the rest. Too big: Most books on these topics are at least 500 pages, and some are more than 1000. By focusing on the topics I think are most useful for software engineers, I kept this book under 250 pages. Too bottom-up: Many data structures books focus on how data structures work (the implementations), with less about how to use them (the interfaces). In this book, I go “top down”, starting with the interfaces. Readers learn to use the structures in the Java Collections Framework before getting into the details of how they work. Finally, many present this material out of context and without motivation: it’s just one damn data structure after another! I try to alleviate the boredom by organizing the topics around an application—web search—that uses data structures extensively, and is an interesting and important topic in its own right. This application also motivates some topics that are not usually covered in an introductory data structures class, including persistent data structures, with Redis, and streaming algorithms. This book also presents basic aspects of software engineering practice, including version control and unit testing. Each chapter ends with an exercise that allows readers to apply what they have learned. Each exercise includes automated tests that check the solution. And for most exercises, I present my solution at the beginning of the next chapter. This book is intended for college students in computer science and related fields, as well as professional software engineers, people training in software engineering, and people preparing for technical interviews. I assume that the reader knows Java at an intermediate level, but I explain some Java features along the way, and provide pointers to supplementary material. People who have read Think Java or Head First Java are prepared for this book.
The Little Book of Semaphores
The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." In addition, it collects a number of not-so-classical problems, some written by the author and some by other teachers and textbook writers. Readers are invited to create and submit new problems.
Think Complexity: Exploring Complexity Science with Python - 2e
Complexity science uses computation to explore the physical and social sciences. In Think Complexity, you'll use graphs, cellular automata, and agent-based models to study topics in physics, biology, and economics. Whether you're an intermediate-level Python programmer or a student of computational modeling, you'll delve into examples of complex systems through a series of worked examples, exercises, case studies, and easy-to-understand explanations. In this updated second edition, you will: Work with NumPy arrays and SciPy methods, including basic signal processing and Fast Fourier Transform Study abstract models of complex physical systems, including power laws, fractals and pink noise, and Turing machines Get Jupyter notebooks filled with starter code and solutions to help you re-implement and extend original experiments in complexity; and models of computation like Turmites, Turing machines, and cellular automata Explore the philosophy of science, including the nature of scientific laws, theory choice, and realism and instrumentalism Ideal as a text for a course on computational modeling in Python, Think Complexity also helps self-learners gain valuable experience with topics and ideas they might not encounter otherwise.
Think Stats: Probability and Statistics for Programmers - 2e
Think Stats is an introduction to Probability and Statistics for Python programmers. Think Stats emphasizes simple techniques you can use to explore real data sets and answer interesting questions. The book presents a case study using data from the National Institutes of Health. Readers are encouraged to work on a project with real datasets. If you have basic skills in Python, you can use them to learn concepts in probability and statistics. Think Stats is based on a Python library for probability distributions (PMFs and CDFs). Many of the exercises use short programs to run experiments and help readers develop understanding.
Think Bayes: Bayesian Statistics Made Simple
Think Bayes is an introduction to Bayesian statistics using computational methods. The premise of this book, and the other books in the Think X series, is that if you know how to program, you can use that skill to learn other topics. Most books on Bayesian statistics use mathematical notation and present ideas in terms of mathematical concepts like calculus. This book uses Python code instead of math, and discrete approximations instead of continuous mathematics. As a result, what would be an integral in a math book becomes a summation, and most operations on probability distributions are simple loops. I think this presentation is easier to understand, at least for people with programming skills. It is also more general, because when we make modeling decisions, we can choose the most appropriate model without worrying too much about whether the model lends itself to conventional analysis. Also, it provides a smooth development path from simple examples to real-world problems.