Best of
Computer-Science

2021

Crafting Interpreters


Robert Nystrom - 2021
    For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from their memory as soon as they had scribbled their last NFA to DFA conversion on the final exam.That fearsome reputation belies a field that is rich with useful techniques and not so difficult as some of its practitioners might have you believe. A better understanding of how programming languages are built will make you a stronger software engineer and teach you concepts and data structures you'll use the rest of your coding days. You might even have fun.This book teaches you everything you need to know to implement a full-featured, efficient scripting language. You’ll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused.Starting from main(), you will build a language that features rich syntax, dynamic typing, garbage collection, lexical scope, first-class functions, closures, classes, and inheritance. All packed into a few thousand lines of clean, fast code that you thoroughly understand because you wrote each one yourself.

Learning Go: An Idiomatic Approach to Real-World Go Programming


Jon Bodner - 2021
    While there are plenty of tutorials available that teach Go's syntax to developers with experience in other programming languages, tutorials aren't enough. They don't teach Go's idioms, so developers end up recreating patterns that don't make sense in a Go context. This practical guide provides the essential background you need to write clear and idiomatic Go.No matter your level of experience, you'll learn how to think like a Go developer. Author Jon Bodner introduces the design patterns experienced Go developers have adopted and explores the rationale for using them. You'll also get a preview of Go's upcoming generics support and how it fits into the language.Learn how to write idiomatic code in Go and design a Go projectUnderstand the reasons for the design decisions in GoSet up a Go development environment for a solo developer or teamLearn how and when to use reflection, unsafe, and cgoDiscover how Go's features allow the language to run efficientlyKnow which Go features you should use sparingly or not at all

The Missing Readme: A Guide for the New Software Engineer


Chris Riccomini - 2021
    You'll also learn design processes and how to partner with an engineering manager to get things done. Do's and Don'ts deliver information in a nutshell, and "Level Up" sections point to further reading. Real-world stories are woven in throughout to reinforce key points.This book is for you if you can answer "yes" to any one of these questions:- Do you feel like the newbie on your engineering team?- Are you wondering how to review code or write a design document?- Are you worried about breaking existing code?- Are you overwhelmed by the thought of being "on-call"?- Are you surrounded by unfamiliar acronyms like SLA, SLO, PPP, 1:1, OKR?- Are you questioning the point of sprint planning meetings, story points, and stand-ups?

Software Architecture: The Hard Parts: Modern Tradeoff Analysis for Distributed Architectures


Neal Ford - 2021
    These are the difficult problems architects face, what this book's authors call the hard parts. These topics have no best practices, forcing architects to understand various tradeoffs to succeed. This book discusses these hard parts by not only investigating what makes architecture so difficult, but also by providing proven ways to address these problems and make them easier.The book explores topics such as choosing an appropriate architecture, deciding on service granularity, managing workflows and orchestration, managing and decoupling contracts, managing distributed transactions, and optimizing operational characteristics such as scalability, elasticity, and performance. As practicing consultants, the authors focus on questions they commonly hear architects ask and provide techniques that enable them to discover the tradeoffs necessary to answer these questions.

Rust for Rustaceans


Jon Gjengset - 2021
    It covers everything you need to build and maintain larger code bases, write powerful and flexible applications and libraries, and confidently expand the scope and complexity of your projects.Author Jon Gjengset takes you deep into the Rust programming language, dissecting core topics like ownership, traits, concurrency, and unsafe code. You’ll explore key concepts like type layout and trait coherence, delve into the inner workings of concurrent programming and asynchrony with async/await, and take a tour of the world of no_std programming. Gjengset also provides expert guidance on API design, testing strategies, and error handling, and will help develop your understanding of foreign function interfaces, object safety, procedural macros, and much more.You'll Learn: How to design reliable, idiomatic, and ergonomic Rust programs based on best principles Effective use of declarative and procedural macros, and the difference between them How asynchrony works in Rust – all the way from the Pin and Waker types used in manual implementations of Futures, to how async/await saves you from thinking about most of those words What it means for code to be unsafe, and best practices for writing and interacting with unsafe functions and traits How to organize and configure more complex Rust projects so that they integrate nicely with the rest of the ecosystem How to write Rust code that can interoperate with non-Rust libraries and systems, or run in constrained and embedded environments Brimming with practical, pragmatic insights that you can immediately apply, Rust for Rustaceans helps you do more with Rust, while also teaching you its underlying mechanisms.

Design for Safety


Eva PenzeyMoog - 2021
    Too often, we design for idealized circumstances, even though our users bring a range of complicated personal dynamics to every interaction. When we fail to explicitly design for vulnerable users, we unintentionally prioritize their abusers.Eva PenzeyMoog explains how even the most well-intentioned design can be weaponized for interpersonal harm. Through poignant, all-too-common examples, Eva demonstrates how to identify a design’s potential for abuse, how to avoid and mitigate the damage, and how to bake safety into every step of the design process. We can’t build good digital products unless we recognize that our users’ safety, and lives, are at stake.

Computer Science Unleashed: Harness the Power of Computational Systems


Wladston Ferreira Filho - 2021
    Designed for readers who don't care for academic formalities, it's a fast and easy guide. It teaches the foundations programmers and knowledge workers need to maximize their effectiveness. It explains how the Internet works from the ground up, how to analyse and derive knowledge from data, and how computers are able to predict the future with machine learning.

Quick Start Kubernetes


Nigel Poulton - 2021
    And it does it in less than 100 pages!You'll learn: - Why we have Kubernetes- What Kubernetes is- Where Kubernetes is going- The fundamentals of Kubernetes architectureYou'll also perform the following hands-on tasks: - Build a cluster- containerize an app- Deploy the app to Kubernetes- Break the app and watch it self-heal- Scale the app- Perform a rolling updateAlong the way, Nigel explains everything as clearly as possible and busts every piece of jargon.When you're done, you'll be in love with Kubernetes and ready to rock and roll with it.

The Big Book of Small Python Projects


Al Sweigart - 2021
    The 100+ short programs in Big Book of Small Python Projects are designed to help beginning-to-intermediate programmers expand their knowledge of how to deploy Python creatively and effectively by offering coding examples that will help them to tackle their own coding challenges.The 100+ short, complete Python programs in this book are designed to help beginning-to-intermediate Python programmers broaden their skills by providing a diverse set of coding examples they can study, emulate, and draw inspiration from. The programs range from classic card and board games and mazes, to math and probability demos, and mad libs. The author includes the complete code for each program, as well as commentary and suggestions for how to modify and experiment with code.

Hands-on Rust: Effective Learning through 2D Game Development and Play


Herbert Wolverson - 2021
    With Rust, you have a shiny new playground where your game ideas can flourish.Each chapter in this book presents hands-on, practical projects that take you on a journey from “Hello, World” to building a full dungeon crawler game. Start by setting up Rust and getting comfortable with your development environment. Learn the language basics with practical examples as you make your own version of Flappy Bird. Discover what it takes to randomly generate dungeons and populate them with monsters as you build a complete dungeon crawl game. Run game systems concurrently for high-performance and fast game-play, while retaining the ability to debug your program. Unleash your creativity with magical items, tougher monsters, and intricate dungeon design. Add layered graphics and polish your game with style.

The Programmer's Brain


Felienne Hermans - 2021
    This unique book teaches you concrete techniques rooted in cognitive science that will improve the way you learn and think about code.In The Programmer’s Brain: What every programmer needs to know about cognition you will learn:* Fast and effective ways to master new programming languages* Speed reading skills to quickly comprehend new code* Techniques to unravel the meaning of complex code* Ways to learn new syntax and keep it memorized* Writing code that is easy for others to read* Picking the right names for your variables* Making your codebase more understandable to newcomers* Onboarding new developers to your teamLearn how to optimize your brain’s natural cognitive processes to read code more easily, write code faster, and pick up new languages in much less time. This book will help you through the confusion you feel when faced with strange and complex code, and explain a codebase in ways that can make a new team member productive in days!about the technologyUnderstanding the cognitive functions that govern the way your brain thinks about coding will help you work smarter, not harder. You’ll improve your productivity, reduce your need for constant rewrites, and say goodbye to spending late nights struggling with new languages.about the bookThe Programmer’s Brain explores the way your brain works when it’s thinking about code. In it, you’ll master practical ways to apply these cognitive principles to your daily programming life. You’ll improve your code comprehension by turning confusion into a learning tool, and pick up awesome techniques for reading code and quickly memorizing syntax. This practical guide includes tips for creating your own flashcards and study resources that can be applied to any new language you want to master. By the time you’re done, you’ll not only be better at teaching yourself—you’ll be an expert at bringing new colleagues and junior programmers up to speed.

The Smartest Person in the Room


Christian Espinosa - 2021
    With cyberattacks resulting in often devastating results, it’s no wonder executives hire the best and brightest of the IT world for protection. But are you doing enough? Do you understand your risks? What if the brightest aren’t always the best choice for your company?In The Smartest Person in the Room, Christian Espinosa shows you how to leverage your company’s smartest minds to your benefit and theirs. Learn from Christian’s own journey from cybersecurity engineer to company CEO. He describes why a high IQ is a lost superpower when effective communication, true intelligence, and self-confidence are not embraced. With his seven-step methodology and stories from the field, Christian helps you develop your team’s technical minds so they become better humans and strong leaders who excel in every role. This book provides you with an enlightening perspective of how to turn your biggest unknown weakness into your strongest defense.

Designing Cloud Data Platforms


Danil Zburivsky - 2021
    Discover patterns for ingesting data from a variety of sources, then learn to harness pre-built services provided by cloud vendors.Summary Centralized data warehouses, the long-time defacto standard for housing data for analytics, are rapidly giving way to multi-faceted cloud data platforms. Companies that embrace modern cloud data platforms benefit from an integrated view of their business using all of their data and can take advantage of advanced analytic practices to drive predictions and as yet unimagined data services. Designing Cloud Data Platforms is a hands-on guide to envisioning and designing a modern scalable data platform that takes full advantage of the flexibility of the cloud. As you read, you’ll learn the core components of a cloud data platform design, along with the role of key technologies like Spark and Kafka Streams. You’ll also explore setting up processes to manage cloud-based data, keep it secure, and using advanced analytic and BI tools to analyze it. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the technology Well-designed pipelines, storage systems, and APIs eliminate the complicated scaling and maintenance required with on-prem data centers. Once you learn the patterns for designing cloud data platforms, you’ll maximize performance no matter which cloud vendor you use. About the book In Designing Cloud Data Platforms, Danil Zburivsky and Lynda Partner reveal a six-layer approach that increases flexibility and reduces costs. Discover patterns for ingesting data from a variety of sources, then learn to harness pre-built services provided by cloud vendors. What's inside     Best practices for structured and unstructured data sets     Cloud-ready machine learning tools     Metadata and real-time analytics     Defensive architecture, access, and security About the reader For data professionals familiar with the basics of cloud computing, and Hadoop or Spark. About the author Danil Zburivsky has over 10 years of experience designing and supporting large-scale data infrastructure for enterprises across the globe. Lynda Partner is the VP of Analytics-as-a-Service at Pythian, and has been on the business side of data for over 20 years. Table of Contents 1 Introducing the data platform 2 Why a data platform and not just a data warehouse 3 Getting bigger and leveraging the Big 3: Amazon, Microsoft Azure, and Google 4 Getting data into the platform 5 Organizing and processing data 6 Real-time data processing and analytics 7 Metadata layer architecture 8 Schema management 9 Data access and security 10 Fueling business value with data platforms

Ace the Data Science Interview: 201 Real Interview Questions Asked By FAANG, Tech Startups, & Wall Street


Nick Singh - 2021
    

Let's Go Further!


Alex Edwards - 2021
    Let’s Go Further helps you extend and expand your knowledge of Go — taking you beyond the basics and guiding you through advanced patterns for developing, managing and deploying APIs and web applications.It builds on many of the concepts that were introduced in Let’s Go, and talks through the start-to-finish build of a RESTful JSON API — from initial project setup through to deployment in production.This gives us an opportunity to cover important topics in the context of a complete, working, application — including SQL migrations, CORS requests, permission-based authorization, managing background tasks, reporting metrics, automating build and deployment steps, and much more.If you enjoyed Let’s Go, this course should be a great fit for you and an ideal next step in mastering Go.

Cloud Native Go: Building Reliable Services in Unreliable Environments


Matthew A. Titmus - 2021
    This practical book shows you how to use Go's strengths to develop cloud native services that are scalable and resilient, even in an unpredictable environment. You'll explore the composition and construction of these applications, from lower-level features of Go to mid-level design patterns to high-level architectural considerations.Each chapter builds on the lessons of the last, walking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You'll learn best practices for adopting Go as your development language for solving cloud native management and deployment issues.Learn how cloud native applications differ from other software architecturesUnderstand how Go can solve the challenges of designing scalable, distributed servicesLeverage Go's lower-level features, such as channels and goroutines, to implement a reliable cloud native serviceExplore what "service reliability" is and what it has to do with "cloud native"Apply a variety of patterns, abstractions, and tooling to build and manage complex distributed systems

Meta Learning: How To Learn Deep Learning And Thrive In The Digital World


Radek Osmulski - 2021
    His achievements include successfully participating in Kaggle competitions and being gainfully employed in various Deep Learning roles for several years now.Among other things, from the book, you'll learn:- how to learn machine learning efficiently- the proven strategies to improve as a developer- how to approach the tools you use for work and why it matters- how to reason about the hardware you use for best results and to make sure you invest your time where it's worthwhile- what makes sharing your work so powerful- one way to reason about finding a mentor- how to keep in touch with the deep learning community and stay up to date with trends in research for the least amount of work- an effective way to become employable without a formal background (tailored to the digital age we live in now)- how to build a habit and why the path of little resistance is the way to go- one way to find the energy to do Deep LearningAll of the above is based on the author's experience. The ideas and strategies that are shared are the ones that worked best for the author, out of many that he tried.

Image Optimization


Addy Osmani - 2021
    Our brains are able to interpret images much faster than text, which is why high-quality visuals drive conversions and user engagement.That said, loading images efficiently at scale isn’t a little project for a quiet afternoon. It requires understanding of compression techniques, loading behavior, image decoding and image CDNs, adaptive media loading and caching.This book will equip you with everything you need to know to optimize how you compress, serve and maintain images — boosting performance along the way.

Grokking Machine Learning


Luis G. Serrano - 2021
    No specialist knowledge is required to tackle the hands-on exercises using Python and readily available machine learning tools. Packed with easy-to-follow Python-based exercises and mini-projects, this book sets you on the path to becoming a machine learning expert. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the technology Discover powerful machine learning techniques you can understand and apply using only high school math! Put simply, machine learning is a set of techniques for data analysis based on algorithms that deliver better results as you give them more data. ML powers many cutting-edge technologies, such as recommendation systems, facial recognition software, smart speakers, and even self-driving cars. This unique book introduces the core concepts of machine learning, using relatable examples, engaging exercises, and crisp illustrations. About the book Grokking Machine Learning presents machine learning algorithms and techniques in a way that anyone can understand. This book skips the confused academic jargon and offers clear explanations that require only basic algebra. As you go, you’ll build interesting projects with Python, including models for spam detection and image recognition. You’ll also pick up practical skills for cleaning and preparing data. What's inside     Supervised algorithms for classifying and splitting data     Methods for cleaning and simplifying data     Machine learning packages and tools     Neural networks and ensemble methods for complex datasets About the reader For readers who know basic Python. No machine learning knowledge necessary. About the author Luis G. Serrano is a research scientist in quantum artificial intelligence. Previously, he was a Machine Learning Engineer at Google and Lead Artificial Intelligence Educator at Apple. Table of Contents 1 What is machine learning? It is common sense, except done by a computer 2 Types of machine learning 3 Drawing a line close to our points: Linear regression 4 Optimizing the training process: Underfitting, overfitting, testing, and regularization 5 Using lines to split our points: The perceptron algorithm 6 A continuous approach to splitting points: Logistic classifiers 7 How do you measure classification models? Accuracy and its friends 8 Using probability to its maximum: The naive Bayes model 9 Splitting data by asking questions: Decision trees 10 Combining building blocks to gain more power: Neural networks 11 Finding boundaries with style: Support vector machines and the kernel method 12 Combining models to maximize results: Ensemble learning 13 Putting it all in practice: A real-life example of data engineering and machine learning

Introduction to System Design


Shivam Singh - 2021
    Systems design could be seen as the application of systems theory to product development. As a result, there is some overlap with the disciplines of systems analysis, systems architecture, and systems engineering.Designing software systems is a vast topic, and even a software engineer having years of experience at a top software company may not claim to be an expert on system design. Companies spend not weeks but months and hire a big team of software engineers to build such systems in real life.While this book is oriented towards Software Developers and Architects, this book can be helpful for any working in the High-Tech industry. In this, we will understand how popular products such as Instagram, Facebook Messenger, Dropbox, TinyURL, and Pastebin are designed. No prior technical knowledge is required before picking up this book.As a Product Manager or Startup Founder, having a high-level understanding of the various technologies being used in you as well as popular products across the industry would be a handy tool in your toolkit. As a Venture Capitalist, you can better analyze the capabilities of the tech teams of the startups you are investing in as well as understand how their tech stands apart from the competition.Even if you are not working directly in the Tech industry, everyone uses these products on a daily basis. Therefore, having an understanding of how these products work could help you improve your digital life and make use of these products in a better way.

Web Development with Django: Learn to build modern web applications with a Python-based framework


Ben Shaw - 2021
    

The Art of Webassembly


Rick Battagline - 2021
    It's fast becoming the gold standard for modern web developers, making this book essential reading for programmers who want to stay relevant and improve their game.Readers will gain a deep understanding of what WebAssembly is, how it works under the hood, when to use it, and why it improves JavaScript run times. The book's crisp, clear prose, ample illustrations, and helpful examples easily deconstruct complex topics for programmers of all skill levels. It not only shows how to expertly optimize and compile low-level code via WebAssembly, it teaches you how to debug, evaluate, and represent your code in human-readable WebAssembly Text format - a skill set that will set users apart from their peers as WebAssembly expands into mobile and desktop apps, servers and other execution environments.

The System Design Interview, 2nd Edition


Lewis C. Lin - 2021
    

Practical Process Automation: Orchestration and Integration in Microservices and Cloud Native Architectures


Bernd Ruecker - 2021
    

Math for Deep Learning: A Practitioner's Guide to Mastering Neural Networks


Ronald T. Kneusel - 2021
    You’ll work through Python examples to learn key deep learning related topics in probability, statistics, linear algebra, differential calculus, and matrix calculus as well as how to implement data flow in a neural network, backpropagation, and gradient descent. You’ll also use Python to work through the mathematics that underlies those algorithms and even build a fully-functional neural network.In addition you’ll find coverage of gradient descent including variations commonly used by the deep learning community: SGD, Adam, RMSprop, and Adagrad/Adadelta.

Learning Php, MySQL & JavaScript: A Step-By-Step Guide to Creating Dynamic Websites


Nixon Robin - 2021
    With the latest edition of this popular hands-on guide, you'll tackle dynamic web programming using the most recent versions of today's core technologies: PHP, MySQL, JavaScript, CSS, HTML5, and the powerful React and React Native libraries.Web designers will learn how to use these technologies together while picking up valuable web programming practices along the way--including how to optimize websites for mobile devices. Finally, you'll put everything together to build a fully functional social networking site suitable for both desktop and mobile browsers.Explore MySQL from database structure to complex queriesUse the MySQL PDO extension, PHP's improved MySQL interfaceCreate dynamic PHP web pages that tailor themselves to the userManage cookies and sessions and maintain a high level of securityEnhance JavaScript with the React and React Native librariesUse Ajax calls for background browser server communicationStyle your web pages by acquiring CSS skillsImplement HTML5 features, including geolocation, audio, video, and the canvasReformat your websites into mobile web apps

Learning Tensorflow.Js: Powerful Machine Learning in JavaScript


Gant Laborde - 2021
    With this Google framework, seasoned AI veterans and web developers alike can help propel the future of AI-driven websites. In this guide, author Gant Laborde (Google Developer Expert in machine learningand the web) provides a hands-on end-to-end approach to TensorFlow.js fundamentals for a broad technical audience that includes data scientists, engineers, web developers, students, and researchers.You'll begin by working through some basic examples in TensorFlow.js before diving deeper into neural network architectures, DataFrames, TensorFlow Hub, model conversion, transfer learning, and more. Once you finish this book, you'll know how to build and deploy production-readydeep learning systems with TensorFlow.js.Explore tensors, the most fundamental structure of machine learningConvert data into tensors and back with a real-world exampleCombine AI with the web using TensorFlow.jsUse resources to convert, train, and manage machine learning dataBuild and train your own training models from scratch

Combinators: A Centennial View


Stephen Wolfram - 2021
    Informed by his work on the computational universe of possible programs and on computational language design, Wolfram explains new and existing ideas about combinators with unique clarity and stunning visualizations, as well as provides insights on their historical connections and the curious story of Moses Sch�onfinkel, inventor of combinators. Though invented well before Turing machines, combinators have often been viewed as an inaccessibly abstract approach to computation. This book brings them to life as never before in a thought-provoking and broadly accessible exposition of interest across mathematics and computer science, as well as to those concerned with the foundations of formal and computational thinking, and with the history of ideas"--

Generative AI with Python and TensorFlow 2: Create images, text, and music with VAEs, GANs, LSTMs, Transformer models


Joseph Babcock - 2021
    

Practical Event-Driven Microservices Architecture: Building Sustainable and Highly Scalable Event-Driven Microservices


Hugo Filipe Oliveira Rocha - 2021
    

Machine Learning in Asset Pricing


Stefan Nagel - 2021
    In such data-rich, high-dimensional environments, techniques from the rapidly advancing field of machine learning (ML) are well-suited for solving prediction problems. Accordingly, ML methods are quickly becoming part of the toolkit in asset pricing research and quantitative investing. In this book, Stefan Nagel examines the promises and challenges of ML applications in asset pricing.Asset pricing problems are substantially different from the settings for which ML tools were developed originally. To realize the potential of ML methods, they must be adapted for the specific conditions in asset pricing applications. Economic considerations, such as portfolio optimization, absence of near arbitrage, and investor learning can guide the selection and modification of ML tools. Beginning with a brief survey of basic supervised ML methods, Nagel then discusses the application of these techniques in empirical research in asset pricing and shows how they promise to advance the theoretical modeling of financial markets.Machine Learning in Asset Pricing presents the exciting possibilities of using cutting-edge methods in research on financial asset valuation.

AWS Certified DevOps Engineer - Professional Certification and Beyond: Pass the DOP-C01 exam and prepare for the real world using case studies and real-life examples


Adam Book - 2021
    

Flutter Apprentice: Learn to Build Cross-Platform Apps


raywenderlich Tutorial Team - 2021
    

Job Ready Python


Haythem Balti - 2021
    Based on the highly regarded and effective Software Guild Python course, this book teaches you the basic and advanced Python concepts you will need at any entry-level Python position.With the "Pulling It Together" sections, you'll combine and integrate the concepts and lessons taught by the book, while also benefiting from:A thorough introduction to getting set up with Python Practical discussions of the basics of the Python language, including syntax, program flow, and code organization A walk through the fundamentals of Object-Oriented Programming including Classes, Objects, Interfaces, and Inheritance, and how to leverage OOP to create elegant code A focus on data processing and data analysis with Python

Code as Creative Medium: A Handbook for Computational Art and Design


Golan Levin - 2021
    

My Robot Gets Me: How Social Design Can Make New Products More Human


Carla Diana - 2021
    

The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples


Fedor G Pikus - 2021
    Until recently, programs got faster by themselves as CPUs were upgraded, but that doesn't happen anymore. The clock frequency of new processors has almost peaked. New architectures provide small improvements to existing programs, but this only helps slightly. Processors do get larger and more powerful, but most of this new power is consumed by the increased number of processing cores and other "extra" computing units. To write efficient software, you now have to know how to program by making good use of the available computing resources, and this book will teach you how to do that.The book covers all the major aspects of writing efficient programs, such as using CPU resources and memory efficiently, avoiding unnecessary computations, measuring performance, and how to put concurrency and multithreading to good use. You'll also learn about compiler optimizations and how to use the programming language (C++) more efficiently. Finally, you'll understand how design decisions impact performance.By the end of this book, you'll not only have enough knowledge of processors and compilers to write efficient programs, but you'll also be able to understand which techniques to use and what to measure while improving performance. At its core, this book is about learning how to learn.What You Will Learn: Discover how to use the hardware computing resources in your programs effectivelyUnderstand the relationship between memory order and memory barriersFamiliarize yourself with the performance implications of different data structures and organizationsAssess the performance impact of concurrent memory accessed and how to minimize itDiscover when to use and when not to use lock-free programming techniquesExplore different ways to improve the effectiveness of compiler optimizationsDesign APIs for concurrent data structures and high-performance data structures to avoid inefficienciesWho this book is for: This book is for experienced developers and programmers who work on performance-critical projects and want to learn different techniques to improve the performance of their code. Programmers who belong to algorithmic trading, gaming, bioinformatics, computational genomics, or computational fluid dynamics communities can learn various techniques from this book and apply them in their domain of work.Although this book uses the C++ language, the concepts demonstrated in the book can be easily transferred or applied to other compiled languages such as C, Java, Rust, Go, and more.

Ideas That Created the Future: Classic Papers of Computer Science


Harry Lewis - 2021
    It covers all aspects of computer science: theory and practice, architectures and algorithms, and logic and software systems, with an emphasis on the period of 1936-1980 but also including important early work. Offering papers by thinkers ranging from Aristotle and Leibniz to Alan Turing and Nobert Wiener, the book documents the discoveries and inventions that created today's digital world. Each paper is accompanied by a brief essay by Harry Lewis, the volume's editor, offering historical and intellectual context.

Crafting Test-Driven Software with Python: Write test suites that scale with your applications' needs and complexity using Python and PyTest


Alessandro Molina - 2021
    

Chaos Engineering: Site reliability through controlled disruption


Mikolaj Pawlikowski - 2021
    Chaos engineering applies the same principles to software systems. In Chaos Engineering: Site reliability through controlled disruption, you’ll learn to run your applications and infrastructure through a series of tests that simulate real-life failures. You'll maximize the benefits of chaos engineering by learning to think like a chaos engineer, and how to design the proper experiments to ensure the reliability of your software. With examples that cover a whole spectrum of software, you'll be ready to run an intensive testing regime on anything from a simple WordPress site to a massive distributed system running on Kubernetes. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the technology Can your network survive a devastating failure? Could an accident bring your day-to-day operations to a halt? Chaos engineering simulates infrastructure outages, component crashes, and other calamities to show how systems and staff respond. Testing systems in distress is the best way to ensure their future resilience, which is especially important for complex, large-scale applications with little room for downtime. About the book Chaos Engineering teaches you to design and execute controlled experiments that uncover hidden problems. Learn to inject system-shaking failures that disrupt system calls, networking, APIs, and Kubernetes-based microservices infrastructures. To help you practice, the book includes a downloadable Linux VM image with a suite of preconfigured tools so you can experiment quickly—without risk. What's inside     Inject failure into processes, applications, and virtual machines     Test software running on Kubernetes     Work with both open source and legacy software     Simulate database connection latency     Test and improve your team’s failure response About the reader Assumes Linux servers. Basic scripting skills required. About the author Mikolaj Pawlikowski is a recognized authority on chaos engineering. He is the creator of the Kubernetes chaos engineering tool PowerfulSeal, and the networking visibility tool Goldpinger. Table of Contents 1 Into the world of chaos engineering PART 1 - CHAOS ENGINEERING FUNDAMENTALS 2 First cup of chaos and blast radius 3 Observability 4 Database trouble and testing in production PART 2 - CHAOS ENGINEERING IN ACTION 5 Poking Docker 6 Who you gonna call? Syscall-busters! 7 Injecting failure into the JVM 8 Application-level fault injection 9 There's a monkey in my browser! PART 3 - CHAOS ENGINEERING IN KUBERNETES 10 Chaos in Kubernetes 11 Automating Kubernetes experiments 12 Under the hood of Kubernetes 13 Chaos engineering (for) people

The Essence of Software: Why Concepts Matter for Great Design


Daniel Jackson - 2021
    Why then is so much software flawed? Why hasn't there been a systematic and scalable way to create software that is easy to use, robust, and secure?Examining these issues in depth, The Essence of Software introduces a theory of software design that gives new answers to old questions. Daniel Jackson explains that a software system should be viewed as a collection of interacting concepts, breaking the functionality into manageable parts and providing a new framework for thinking about design. Through this radical and original perspective, Jackson lays out a practical and coherent path, accessible to anyone--from strategist and marketer to UX designer, architect, or programmer--for making software that is empowering, dependable, and a delight to use.Jackson explores every aspect of concepts--what they are and aren't, how to identify them, how to define them, and more--and offers prescriptive principles and practical tips that can be applied cost-effectively in a wide range of domains. He applies these ideas to contemporary software designs, drawing examples from leading software manufacturers such as Adobe, Apple, Dropbox, Facebook, Google, Microsoft, Twitter, and others. Jackson shows how concepts let designers preserve and reuse design knowledge, rather than starting from scratch in every project.An argument against the status quo and a guide to improvement for both working designers and novices to the field, The Essence of Software brings a fresh approach to software and its creation.