Programming and scripting languages: general Books
Manning Publications Unit Testing:Principles, Practices and Patterns
Book SynopsisUnit Testing: Principles, Patterns and Practices shows you how to refine your existing unit tests by implementing modern best practices. You’ll learn to spot which tests are performing, which need refactoring, and which need to be deleted entirely! Upgrade your testing suite with new testing styles, good patterns, and reliable automated testing. Unit Testing: Principles, Practices and Patterns is a practical guide to modern unit testing best practices. Microsoft MVP Vladimir Khorikov takes you hands-on with examples of the ideal unit test and unit testing practices, building your skills step by step on a solid foundation. Key Features · A universal frame of reference by which to assess any unit test · Common anti-patterns to identify and avoid · Guidelines on how to refactor a test suite along with the · production code it covers · Using integration tests to verify the behavior of the system as a whole For readers who know the basics of unit testing and want to improve their techniques to get the best return on their efforts. Examples are in C# but apply in any language About the technology Test automation has turned unit testing into a standard practice in software development. The right unit test suite gives great outcomes and is vital to delivering quality software. Author Bio Vladimir Khorikov is an author, blogger, and Microsoft MVP. He has been developing software professionally for over ten years, and has mentored numerous teams on the ins and outs of unit testing.
£35.99
Manning Publications C++ Concurrency in Action,2E
Book SynopsisC++ 11 delivered strong support for multithreaded applications, andthe subsequent C++14 and 17 updates have built on this baseline. C++has better options for concurrency than ever before, which means it'san incredibly powerful option for multicore and parallel applications. This bestseller has been updated and revised to cover all the latestchanges to C++ 14 and 17! C++ Concurrency in Action, SecondEdition teaches readers everything they need to write robust andelegant multithreaded applications in C++17. Along the way, they’lllearn how to navigate the trickier bits of programming for concurrencywhile avoiding the common pitfalls. KEY FEATURES• Completely updated• Hands-on learning• In depth guide Written for C++ programmers who are new to concurrency and otherswho may have written multithreaded code using other languages, APIs,or platforms. ABOUT THE TECHNOLOGYConcurrency in terms of computers is a single system performingmultiple independent activities in parallel, rather than sequentially, orone after the other. AUTHOR BIOAnthony Williams is a UK-based developer and consultant with manyyears' experience in C++. He has been an active member of the BSI C++Standards Panel since 2001, and is the author or co-author of many of theC++ Standards Committee papers that led up to the inclusion of the threadlibrary in the C++11 Standard. He was the maintainer of the Boost Threadlibrary, and is the developer of the just::thread Pro extensions to the C++11thread library from Just Software Solutions Ltd.
£50.39
Pearson Education (US) TSQL Fundamentals
Book SynopsisItzik Ben-Gan is a mentor with and co-founder of SolidQ. A Microsoft Data Platform MVP since 1999, Itzik has taught numerous training events around the world focused on T-SQL querying, query tuning, and programming. Itzik is the author of several books about T-SQL. He has written many articles for SQL Server Pro as well as articles and white papers for MSDN and The SolidQ Journal. Itzik's speaking engagements include Tech-Ed, SQL PASS, SQL Server Connections, presentations to various SQL Server user groups, and SolidQ events. Itzik is a subject-matter expert within SolidQ for its T-SQL related activities. He authored SolidQ's Advanced T-SQL and T-SQL Fundamentals courses and delivers them regularly worldwide. You can learn more about Itzik at http://tsql.solidq.com/.Table of ContentsCHAPTER 1: Background to T-SQL querying and programming CHAPTER 2: Single-table queries CHAPTER 3: Joins CHAPTER 4: Subqueries CHAPTER 5: Table expressions CHAPTER 6: Set operators CHAPTER 7: T-SQL for data analysis CHAPTER 8: Data modification CHAPTER 9: Temporal tables CHAPTER 10: Transactions and concurrency CHAPTER 11: SQL Graph CHAPTER 12: Programmable objects Appendix: Getting started
£32.29
O'Reilly Media Programming Rust
Book SynopsisJim Blandy, Jason Orendorff, and Leonora Tindall demonstrate how Rust's features put programmers in control over memory consumption and processor use by combining predictable performance with memory safety and trustworthy concurrency.
£47.99
Pearson Education Kotlin in Action Second Edition
Book SynopsisAbout the Authors: Roman Elizarov is a Project Lead for Kotlin at JetBrains and currently focuses on the Kotlin language design in the role of Lead Language Designer. Roman Elizarov previously designed and developed high-performance trading software for leading brokerage firms and market data delivery services that routinely handle millions of events per second. He has been working on Kotlin at JetBrains since 2016 and has contributed to the design of Kotlin coroutines and the development of the Kotlin coroutines library. Svetlana Isakova began as a member of the Kotlin compiler team and is now a developer advocate for JetBrains. She teaches Kotlin and speaks at conferences worldwide. She is a co-creator of the course Kotlin for Java developers at Coursera and is a co-author of the book Atomic Kotlin. As a Kotlin Developer Advocate at JetBrains, Sebastian Aigner spends a lot of time thinking abo
£39.09
In Easy Steps Limited Assembly x64 Programming in easy steps: Modern
Book SynopsisAssembly x64 Programming in easy steps shows how to write code to create your own computer programs. It contains separate chapters demonstrating how to store and manipulate data in 64-bit registers, how to control program flow, and how to create reusable blocks of code in program functions. It includes demonstrations of parallel processing with 128-bit Streaming SIMD Extensions (SSE) and 256-bit Advanced Vector Extensions (AVX).Assembly x64 Programming in easy steps has an easy-to-follow style that will appeal to anyone who wants to begin programming in modern x64 Assembly language on Windows. The code in the listed steps within the book is color-coded, making it easier for beginners to grasp. There are complete step-by-step example programs that demonstrate each aspect of coding, together with screenshots that illustrate the actual output when each program is executed.Includes free, downloadable source code to get you started straightaway!
£11.39
Pearson Education (US) Beautiful C
Book SynopsisJ. Guy Davidson, head of engineering practice at Creative Assembly, works on its Total War game franchise, curates its catalogue, and improves programming standards across its engineering team. He serves on the ISO C++ committee, moderates the #include discord server, speaks at C++ events, and offers C++ mentoring support through Prospela and BAME in Games. Kate Gregory has 40+ years of development experience in multiple languages. She has keynoted on five continents, and volunteers in many C++ activities, especially #include , which is making the industry more welcoming and inclusive. Since 1986 she and her husband have run Gregory Consulting, helping clients worldwide become more effective.Table of ContentsList of Selected C++ Core Guidelines xiiiForeword xvPreface xviiAcknowledgments xxiAbout the Authors xxiii Section 1: Bikeshedding is bad 1 Chapter 1.1: P.2: Write in ISO Standard C++ 3 Chapter 1.2: F.51: Where there is a choice, prefer default arguments over overloading 13 Chapter 1.3: C.45: Don't define a default constructor that only initializes data members; use in-class member initializers instead 23 Chapter 1.4: C.131: Avoid trivial getters and setters 31 Chapter 1.5: ES.10: Declare one name (only) per declaration 41 Chapter 1.6: NR.2: Don't insist to have only a single return-statement in a function 49 Section 2: Don't hurt yourself 59 Chapter 2.1: P.11: Encapsulate messy constructs, rather than spreading through the code 61 Chapter 2.2: I.23: Keep the number of function arguments low 71 Chapter 2.3: I.26: If you want a cross-compiler ABI, use a C-style subset 79 Chapter 2.4: C.47: Define and initialize member variables in the order of member declaration 87 Chapter 2.5: CP.3: Minimize explicit sharing of writable data 97 Chapter 2.6: T.120: Use template metaprogramming only when you really need to 107 Section 3: Stop using that 119 Chapter 3.1: I.11: Never transfer ownership by a raw pointer (T*) or reference (T&) 121 Chapter 3.2: I.3: Avoid singletons 129 Chapter 3.3: C.90: Rely on constructors and assignment operators, not memset and memcpy 139 Chapter 3.4: ES.50: Don't cast away const 149 Chapter 3.5: E.28: Avoid error handling based on global state (e.g. errno)159 Chapter 3.6: SF.7: Don't write using namespace at global scope in a header file 169 Section 4: Use this new thing properly 179 Chapter 4.1: F.21: To return multiple "out" values, prefer returning a struct or tuple 181 Chapter 4.2: Enum.3: Prefer class enums over "plain" enums 193 Chapter 4.3: ES.5: Keep scopes small 201 Chapter 4.4: Con.5: Use constexpr for values that can be computed at compile time 213 Chapter 4.5: T.1: Use templates to raise the level of abstraction of code 225 Chapter 4.6: T.10: Specify concepts for all template arguments 235 Section 5: Write code well by default 45 Chapter 5.1: P.4: Ideally, a program should be statically type safe 247 Chapter 5.2: P.10: Prefer immutable data to mutable data 259 Chapter 5.3: I.30: Encapsulate rule violations 267 Chapter 5.4: ES.22: Don't declare a variable until you have a value to initialize it with 275 Chapter 5.5: Per.7: Design to enable optimization 285 Chapter 5.6: E.6: Use RAII to prevent leaks 293 Envoi 305 Afterword 307 Index 309
£30.59
O'Reilly Media Python for Data Analysis 3e
Book SynopsisUpdated for Python 3.10 and pandas 1.4, the third edition of this hands-on guide is packed with practical case studies that show you how to solve a broad set of data analysis problems effectively.
£51.19
Manning Publications Spring Boot in Action
Book Synopsis DESCRIPTION Although Spring Framework simplifies enterprise Java development, it can require a lot from developers in terms of framework configuration. Spring Boot radically streamlines the process of creating Spring applications by employing automatic configuration, along with a programming model built around established conventions for build-time and runtime dependencies. It also provides a component that gives insight into the internals of a running application and a handy CLI that can be used to write command-line scripts in Groovy. Developers who have used Spring Boot say that they can't imagine ever going back to hand-configuring their applications. Spring Boot in Action is a developer-focused guide to writing applications using Spring Boot. It shows readers how to bypass the tedious configuration steps so that they can concentrate on their application's behavior. Using interesting, relevant examples, Spring expert Craig Walls shows both how to use the default settings effectively and how to override and customize Spring Boot for each unique environment. Along the way, it offers insights from Craig's years of Spring development experience. KEY SELLING POINTS Practical hands-on guide Quickly develop Spring applications Author insights based on years of Spring Development Covers newest features of Spring Boot AUDIENCE Written for readers familiar with the Spring Framework. ABOUT THE TECHNOLOGY Spring Boot brings a convention-over-configuration programming model to the Spring Framework. With Spring Boot, Spring developers can focus on producing application functionality with little effort spent on configuring Spring itself.
£32.39
Pearson Education (US) Game Programming in C
Book SynopsisSanjay Madhav is a senior lecturer at the University of Southern California, where he teaches several programming and video game programming courses. He has taught at USC since 2008. Prior to joining USC, Sanjay worked as a programmer for several video game developers, including Electronic Arts, Neversoft, and Pandemic Studios. His credited games include Medal of Honor: Pacific Assault, Tony Hawk's Project 8, Lord of the Rings: Conquest, and The Saboteur. Sanjay is also the author of Game Programming Algorithms and Techniques and co-author of Multiplayer Game Programming. He has a B.S. and an M.S. in computer science and is pursuing a Ph.D. in computer science, all from USC. Table of ContentsPreface Chapter 1 Game Programming Overview Chapter 2 Game Objects and 2D Graphics Chapter 3 Vectors and Basic Physics Chapter 4 Artificial Intelligence Chapter 5 OpenGL Chapter 6 3D Graphics Chapter 7 Audio Chapter 8 Input Systems Chapter 9 Cameras Chapter 10 Collision Detection Chapter 11 User Interfaces Chapter 12 Skeletal Animation Chapter 13 Intermediate Graphics Chapter 14 Level Files and Binary Data Appendix A Intermediate C++ Review Index
£33.29
Manning Publications C# in Depth, 4E
Book SynopsisDescription C# is an amazing language that's up to any challenge you can throw at it. As a C# developer, you also need to be up to the task. C# in Depth, Fourth Edition is the key to unlocking the powerful new features added to the language in C# 5, 6, and 7. Following the expert guidance of C# legend Jon Skeet, readers will master asynchronous functions, expression-bodied members, interpolated strings, tuples, and much more. Key features · Expert guidance · Hands-on examples · Step-by-step guide Audience If you're a C# developer who's comfortable working with the language and wants to really dig in deep, then this book is for you. About the technology .NET developers, will use C# whether their building an advanced enterprise application or just pushing out a quick ASP.NET app. C# 5, 6 and 7 have added a host of new features to help users write better code with tuples, string interpolation, pattern matching, and more.
£49.07
Pearson Education (US) C Programming Language
Book SynopsisBrian W. Kernighan received his BASc from the University of Toronto in 1964 and a PhD in electrical engineering from Princeton in 1969. He was a member of the Computing Science Research center at Bell Labs until 2000, and is now a professor in the Computer Science Department at Princeton. He was a co-creator of several programming languages, including AWK, AMPL, and a number of tools for document preparation. He is the co-author of 10 books and some technical papers, and holds 4 patents. He was elected to the National Academy of Engineering in 2002. His research areas include programming languages, tools and interfaces that make computers easier to use, often for non-specialist users. He is also interested in technology education for non-technical audiences. Dennis Ritchie was a computer scientist notable for his influence on ALTRAN, Table of Contents1. A Tutorial Introduction. 2. Types, Operators, and Expressions. 3. Control Flow. 4. Functions and Program Structure. 5. Pointers and Arrays. 6. Structures. 7. Input and Output. 8. The UNIX System Interface. Appendix A. Appendix B. Appendix C. Index.
£42.99
Pearson Education Effective Python
Book SynopsisBrett Slatkin is a Principal Software Engineer at Google in the Office of the CTO, focusing on emerging technologies. He co-founded Google Surveys, launched Google Cloud's first product (App Engine), and co-created the PubSubHubbub protocolall using Python. Brett has been writing Python code professionally for the past 19 years and has made numerous contributions to open-source projects.
£39.59
Pragmatic Bookshelf Functional Programming in Java: Harness the Power
Book SynopsisImagine writing Java code that reads like the problem statement, code that's highly expressive, concise, easy to read and modify, and has reduced complexity. With the functional programming capabilities in Java, that's not a fantasy. This book will guide you from the familiar imperative style through the practical aspects of functional programming, using plenty of examples. Apply the techniques you learn to turn highly complex imperative code into elegant and easy-to-understand functional-style code. Updated to the latest version of Java, this edition has four new chapters on error handling, refactoring to functional style, transforming data, and idioms of functional programming. Don't struggle with the limitations of the imperative style; instead learn to combine object-oriented programming with the functional style to reduce the accidental complexity. Harness the functional programming capabilities of Java to create applications where the program reveals its intentions and your team can quickly understand and modify code to align with changing business requirements. Unlock the power of lambda expressions and the Streams API to turn the oft-written spaghetti code into highly concise, expressive, elegant, and maintainable code. See how Streams make the arduous task of parallelizing code as easy as flipping a switch when superior speed is necessary. Apply design patterns built around lambda expressions, safely manage resource allocations, use memoization, and learn to transform data into different forms, all while honoring immutability, and providing thread safety to leverage lazy evaluation for efficiency and parallel execution for performance. Move beyond the basics, explore the idioms for writing functional programs. Learn to think functionally by refactoring legacy code into the functional style. And, if your code runs aground due to failures, learn to properly handle errors the functional way. Don't drown in theory; instead learn the practical functional programming techniques to create superior Java code. What You Need: Java version 8 or newer.
£40.84
Manning Publications Grokking Machine Learning
Book SynopsisIt's time to dispel the myth that machine learning is difficult. Grokking Machine Learning teaches you how to apply ML to your projects using only standard Python code and high school-level math. No specialist knowledge is required to tackle the hands-on exercises using readily available machine learning tools! In Grokking Machine Learning, expert machine learning engineer Luis Serrano introduces the most valuable ML techniques and teaches you how to make them work for you. Practical examples illustrate each new concept to ensure you’re grokking as you go. You’ll build models for spam detection, language analysis, and image recognition as you lock in each carefully-selected skill. Packed with easy-to-follow Python-based exercises and mini-projects, this book sets you on the path to becoming a machine learning expert. Key Features · Different types of machine learning, including supervised and unsupervised learning · Algorithms for simplifying, classifying, and splitting data · Machine learning packages and tools · Hands-on exercises with fully-explained Python code samples For readers with intermediate programming knowledge in Python or a similar language. About the technology Machine learning is a collection of mathematically-based techniques and algorithms that enable computers to identify patterns and generate predictions from data. This revolutionary data analysis approach is behind everything from recommendation systems to self-driving cars, and is transforming industries from finance to art. Luis G. Serrano has worked as the Head of Content for Artificial Intelligence at Udacity and as a Machine Learning Engineer at Google, where he worked on the YouTube recommendations system. He holds a PhD in mathematics from the University of Michigan, a Bachelor and Masters from the University of Waterloo, and worked as a postdoctoral researcher at the University of Quebec at Montreal. He shares his machine learning expertise on a YouTube channel with over 2 million views and 35 thousand subscribers, and is a frequent speaker at artificial intelligence and data science conferences.
£40.79
Microsoft Press,U.S. Code Complete
Book SynopsisSteve McConnell is recognized as one of the premier authors and voices in the development community. He is Chief Software Engineer of Construx Software and was the lead developer of Construx Estimate and of SPC Estimate Professional, winner of Software Development magazine's Productivity Award. He is the author of several books, including Code Complete and Rapid Development, both honored with Software Development magazine's Jolt Award.Table of ContentsWelcome to software construction Metaphors for a richer understanding of software development Measure twice, cut once: Upstream prerequisites Key construction decisions Design in construction Working classes High-Quality routines Defensive programming The Pseudocode programming process General issues in using variables The power of variable names Fundamental data types Unusual data types Organizing straight-line code Using conditionals Controlling loops Unusual control structures Table driven methods General control issues The software-quality landscape Collaborative construction Developer testing Debugging refactoring Code tuning strategies How program size affects construction Integration Programming tools Layout & style Self documenting code Personal character Themes in software craftsmanship
£34.42
Franklin, Beedle & Associates Inc Python Programming: An Introduction to Computer
Book SynopsisThis book is designed to be used as a primary textbook in a college-level first course in computing. It takes a fairly traditional approach, emphasizing problem solving, design, and programming as the core skills of computer science. However, these ideas are illustrated using a non-traditional language, namely Python. This textbook was written with a single overarching goal: to introduce fundamental computer science concepts as simply as possible without being simplistic. Using Python is central to this goal. Traditional systems languages such as C , Ada, and Java evolved to solve problems in large-scale programming, where the primary emphasis is on structure and discipline. They were not designed to make writing small- or medium-scale programs easy. The recent rise in popularity of scripting (sometimes called “agile”) languages, such as Python, suggests an alternative approach. Python is very flexible and makes experimentation easy. Solutions to simple problems are simply and elegantly expressed. Python provides a great laboratory for the neophyte programmer. Python has a number of features that make it a near-perfect choice as a first programming language. The basic structures are simple, clean, and well designed, which allows students to focus on the primary skills of algorithmic thinking and program design without getting bogged down in arcane language details. Concepts learned in Python carry over directly to subsequent study of systems languages such as C and Java. But Python is not a “toy language.” It is a real-world production language that is freely available for virtually every programming platform and comes standard with its own easy-to-use integrated programming environment. The best part is that Python makes learning to program fun again.New to the Third EditionThe third edition continues the tradition of updating the text to reflect new technologies while maintaining a time-tested approach to teaching introductory computer science. An important change to this edition is the removal of most uses of eval and the addition of a discussion of its dangers. In our increasingly connected world, it’s never too early to begin considering computer security issues. Several new graphics examples, developed throughout chapters 4–12, have been added to introduce new features of the graphics library that support animations, including simple video game development. This brings the text up to date with the types of final projects that are often assigned in modern introductory classes. Smaller changes have been made throughout the text, including: Material on file dialogs has been added in Chapter 5. Chapter 6 has been expanded and reorganized to emphasize value-returning functions. Coverage has been streamlined and simplified to use IDLE (the standard “comes-with-Python” development environment) consistently. This makes the text more suitable for self-study as well as for use as a classroom textbook. Technology references have been updated. To further accommodate self-studiers, end-of-chapter solutions for this third edition will be freely available online. Classroom instructors wishing to use alternative exercises can request those from the publisher. Self-studiers and instructors alike will be able to visit this website to download the solutions.
£46.50
Pearson Education (US) LargeScale C
Book SynopsisJohn Lakos, manager at Bloomberg, runs their BDE group, which develops fine-grained reusable C++ software using his component-based methodology and process. He also mentors engineers and team leads throughout Bloomberg's software infrastructure department. As a voting member of the C++ Standards Committee, he has helped shape new generations of C++. He is the author of Large-Scale C++ Software Design (Addison-Wesley, 1996).Table of ContentsPreface xviiAcknowledgments xxvChapter 0: Motivation 10.1 The Goal: Faster, Better, Cheaper! 30.2 Application vs. Library Software 50.3 Collaborative vs. Reusable Software 140.4 Hierarchically Reusable Software 200.5 Malleable vs. Stable Software 290.6 The Key Role of Physical Design 440.7 Physically Uniform Software: The Component 460.8 Quantifying Hierarchical Reuse: An Analogy 570.9 Software Capital 860.10 Growing the Investment 980.11 The Need for Vigilance 1100.12 Summary 114Chapter 1: Compilers, Linkers, and Components 1231.1 Knowledge Is Power: The Devil Is in the Details 1251.2 Compiling and Linking C++ 1291.3 Declarations, Definitions, and Linkage 1531.4 Header Files 1901.5 Include Directives and Include Guards 2011.6 From .h /.cpp Pairs to Components 2091.7 Notation and Terminology 2161.8 The Depends-On Relation 2371.9 Implied Dependency 2431.10 Level Numbers 2511.11 Extracting Actual Dependencies 2561.12 Summary 259Chapter 2: Packaging and Design Rules 2692.1 The Big Picture 2702.2 Physical Aggregation 2752.3 Logical/Physical Coherence 2942.4 Logical and Physical Name Cohesion 2972.5 Component Source-Code Organization 3332.6 Component Design Rules 3422.7 Component-Private Classes and Subordinate Components 3702.8 The Package 3842.9 The Package Group 4022.10 Naming Packages and Package Groups 4222.11 Subpackages 4272.12 Legacy, Open-Source, and Third-Party Software 4312.13 Applications 4332.14 The Hierarchical Testability Requirement 4372.15 From Development to Deployment 4592.16 Metadata 4692.17 Summary 481Chapter 3: Physical Design and Factoring 4953.1 Thinking Physically 4973.2 Avoiding Poor Physical Modularity 5173.3 Grouping Things Physically That Belong Together Logically 5553.4 Avoiding Cyclic Link-Time Dependencies 5923.5 Levelization Techniques 6023.6 Avoiding Excessive Link-Time Dependencies 7043.7 Lateral vs. Layered Architectures 7223.8 Avoiding Inappropriate Link-Time Dependencies 7393.9 Ensuring Physical Interoperability 7533.10 Avoiding Unnecessary Compile-Time Dependencies 7733.11 Architectural Insulation Techniques 7903.12 Designing with Components 8353.13 Summary 908Conclusion 923Appendix: Quick Reference 925Bibliography 933Index 941
£53.99
The Pragmatic Programmers Test Driven Development in C: Building Hihg
Book SynopsisDid you write C code last week? Does your code work? Is your design clean? If you answered yes to the first question but got queasy over the second two, you need to know about Test Driven Development. TDD helps you write code that works the first time, and then helps you keep it running as the code evolves to meet new needs. In Test Driven Development for Embedded C, author James W. Grenning shows embedded software developers how to bring the benefits of TDD to embedded C. In the book, you'll see how to apply TDD to C and the world of embedded software development. Learn how to break key dependencies, allowing code to be tested thoroughly. Explore how to test-drive your product's core logic, exploiting the power of your development environment to deliver better software. In fact, as the book shows, you can test-drive a device driver before you even have the device soldered into a circuit board. Avoid the natural delays when testing on the target by using the tailored TDD Microcycle, employing off-target tests and dual-targeted code. Learn how to make code testable and more flexible, better able to handle the inevitable changes demanded by the market. The tests drive development and then serve as an executable specification, keeping track of the critical details and assumptions baked into the code. In Test Driven Development for Embedded C, you'll find that TDD is a different way to program-unit tests are written in a tight feedback loop with the production code, producing testable code and greatly reducing wasteful debugging. TDD also influences design. When tests are considered part of design, you create modular and loosely coupled code, the hallmarks of a good design. With Test Driven Development for Embedded C, C developers-even embedded C developers-can finally write cleaner, testable code with TDD.
£26.59
O'Reilly Media Think Python
Book Synopsis
£29.24
Pragmatic Bookshelf Python Testing with pytest: Simple, Rapid,
Book SynopsisTest applications, packages, and libraries large and small with pytest, Python's most powerful testing framework. pytest helps you write tests quickly and keep them readable and maintainable. In this fully revised edition, explore pytest's superpowers - simple asserts, fixtures, parametrization, markers, and plugins - while creating simple tests and test suites against a small database application. Using a robust yet simple fixture model, it's just as easy to write small tests with pytest as it is to scale up to complex functional testing. This book shows you how. pytest is undeniably the best choice for testing Python projects. It's a full-featured, flexible, and extensible testing framework. pytest's fixture model allows you to share test data and setup procedures across multiple layers of tests. The pytest framework gives you powerful features such as assert rewriting, parametrization, markers, plugins, parallel test execution, and clear test failure reporting - with no boilerplate code. With simple step-by-step instructions and sample code, this book gets you up to speed quickly on this easy-to-learn yet powerful tool. Write short, maintainable tests that elegantly express what you're testing. Speed up test times by distributing tests across multiple processors and running tests in parallel. Use Python's builtin assert statements instead of awkward assert helper functions to make your tests more readable. Move setup code out of tests and into fixtures to separate setup failures from test failures. Test error conditions and corner cases with expected exception testing, and use one test to run many test cases with parameterized testing. Extend pytest with plugins, connect it to continuous integration systems, and use it in tandem with tox, mock, coverage, and even existing unittest tests. Write simple, maintainable tests quickly with pytest. What You Need: The examples in this book were written using Python 3.9 and pytest 6. pytest 6 supports Python 3.5 and above.
£35.14
John Wiley & Sons Inc C AllinOne Desk Reference For Dummies
Book SynopsisSuitable for C programmers, this book takes them through the entire development cycle of a C program - designing and developing the program, writing source code, compiling the code, linking the code to create the executable programs, debugging, and deployment.Table of ContentsIntroduction. Book I: Hello, C. Chapter 1: Your Basic C Program. Chapter 2: How It All Works. Chapter 3: More Basics, Comments, and Errors. Chapter 4: Introducing Numbers and Variables. Chapter 5: More Variables and Basic I/O. Chapter 6: Decision Time. Chapter 7: Looping. Chapter 8: Using Constants. Chapter 9: Mysterious Math. Chapter 10: It’s Only Logical. Book II: Middle C. Chapter 1: Variables from Beyond Infinity. Chapter 2: The Madness of Printf( ). Chapter 3: Maniacal Math Functions. Chapter 4: Not Truly Random. Chapter 5: While Going Loopy. Chapter 6: More Decision Making. Chapter 7: The Goto Chapter. Book III: Above C Level. Chapter 1: Asking for Arrays. Chapter 2: I Sing of Strings. Chapter 3: Messing with Characters. Chapter 4: Stinkin’ Structures. Chapter 5: Creating Your Own Functions. Chapter 6: Quitting Before You’re Done. Chapter 7: More Variable Nonsense. Book IV: Advanced C. Chapter 1: Introduction to Evil Pointers. Chapter 2: Getting to the *Point. Chapter 3: Binary Bits. Chapter 4: The Myth of the Array. Chapter 5: Pointers and Strings. Chapter 6: Crazy Arrays of Pointers. Chapter 7: Functions and Pointers. Chapter 8: Structures, Pointers, and the Malloc Deity. Chapter 9: Does Anyone Have the Time? Chapter 10: Building Big Programs. Chapter 11: Help! Book V: Disk Drive C. Chapter 1: Just Your Standard I/O. Chapter 2: Interacting with the Command Line. Chapter 3: Hello, Disk! Chapter 4: More Formal File Writing and Reading. Chapter 5: Random Access Files. Chapter 6: Folder Folderol. Chapter 7: Under New File Management. Book VI: The Joy of Linked Lists. Chapter 1: Why Linked Lists? Chapter 2: Dawn of the Database. Chapter 3: Storing a Linked List on Disk. Chapter 4: The Nightmare of the Double-Linked List. Book VII: Appendixes. Appendix A: The Stuff You Need to Know before Reading Everything Else in This Book. Appendix B: ASCII Table. Appendix C: Answers to Exercises. Appendix D: C Language Keywords and Operators. Appendix E: C Language Variable Types. Appendix F: Escape Sequences. Appendix G: Conversion Characters. Index.
£25.49
John Wiley & Sons Inc Coding For Dummies
Book SynopsisCoding For Dummies, (9781119293323) was previously published as Coding For Dummies, (9781118951309). While this version features a new Dummies cover and design, the content is the same as the prior release and should not be considered a new or updated product.Table of ContentsIntroduction 1 Part 1: Getting Started with Coding 5 Chapter 1: What Is Coding? 7 Chapter 2: Programming for the Web 19 Chapter 3: Becoming a Programmer 33 Part 2: Building the Silent and Interactive Web Page 41 Chapter 4: Exploring Basic HTML 43 Chapter 5: Getting More Out of HTML 59 Chapter 6: Getting Stylish with CSS 75 Chapter 7: Next Steps with CSS 97 Chapter 8: Working Faster with Twitter Bootstrap 119 Chapter 9: Adding in JavaScript 135 Part 3: Putting Together a Web Application 157 Chapter 10: Building Your Own App 159 Chapter 11: Researching Your First Web Application 171 Chapter 12: Coding and Debugging Your First Web Application 187 Part 4: Developing Your Coding Skills Further 197 Chapter 13: Getting Familiar with Ruby 199 Chapter 14: Wrapping Your Head around Python 213 Part 5: The Part of Tens 227 Chapter 15: Ten Free Resources for Coding and Coders 229 Chapter 16: Ten Tips for Novice Coders 237 Index 245
£26.59
No Starch Press,US Automate The Boring Stuff With Python, 2nd
Book SynopsisIn this second edition of Automate the Boring Stuff with Python, you'll learn the basics of programming in Python, the fastest growing programming language today, before moving on to create Python programs that effortlessly perform useful and impressive feats of automation. This updated edition is full of step-by-step instructions that walk through each programme. Practice projects at the end of each chapter challenge you to improve those programmes and use your newfound skills to automate similar tasks.Trade Review"With lessons on how to use Python to program Excel spreadsheets, crawl websites, parse PDFs and Word documents, send emails, and other productivity-boosting task automation, it's a stellar resource for office workers, academics, and administrators."—Mashable"I think many educational resources jump levels way too quickly. One of the best I ever used was Automate the Boring Stuff with Python - that book stayed at the right level the whole way!"—Oscar Baruffa, @OscarBaruffaPraise for the first edition of Automate the Boring Stuff with Python:"The best part of programming is the triumph of seeing the machine do something useful. Automate the Boring Stuff with Python frames all of programming as these small triumphs; it makes the boring fun.”—Hilary Mason, Founder of Fast Forward Labs and Data Scientist in Residence at Accel “Do you need Automate the Boring Stuff with Python? Yes, if you want to enhance your workflow by using automation, this is an excellent place to start. Highly recommended.” —Network World “Valuable to have on your shelf...an extremely useful book.” —Kids, Code, and Computer Science Magazine "Automate the Boring Stuff with Python is perfect for anyone who has menial tasks they don't want to spend hours doing." —GeekMom "Whether you prefer working through a book, or learning by watching, or both together, Automate the Boring Stuff will have you productive in Python in no time." —Serdar Yegulalp, InfoWorld"If you seriously want to know how much Python helps with automation, my favorite place is the Automate Boring Stuff with Python book, a simply awesome book." —Javin Paul, Hacker Noon"This is certainly a much more engaging way to learn Python . . . it gets you all excited by the prospect of making cool little programs that will save you time."—Andrew Lau, AndrewLauActuary.com"I've found both the book and Udemy course of Automate the Boring Stuff with Python by Al Sweigart to be really helpful."—Mark S, @Awful_Curious"Best Python book you can buy today."—Rodrigo Ribeiro, @mcapablancaTable of ContentsAcknowledgmentsIntroductionPart I: Python Programming BasicsChapter 1: Python BasicsChapter 2: Flow ControlChapter 3: FunctionsChapter 4: ListsChapter 5: Dictionaries and Structuring DataChapter 6: Manipulating StringsPart II: Automating TasksChapter 7: Pattern Matching with Regular ExpressionsChapter 8: Input ValidationChapter 9: Reading and Writing FilesChapter 10: Organizing FilesChapter 11: DebuggingChapter 12: Web ScrapingChapter 13: Working with Excel SpreadsheetsChapter 14: Working with Google SheetsChapter 15: Working with PDF and Word DocumentsChapter 16: Working with CSV Files and JSON DataChapter 17: Keeping Time, Scheduling Tasks, and Launching ProgramsChapter 18: Sending Email and Text MessagesChapter 19: Manipulating ImagesChapter 20: Controlling the Keyboard and Mouse with GUI AutomationAppendix A: Installing Third-Party ModulesAppendix B: Running ProgramsAppendix C: Answers to the Practice Questions
£34.19
Manning Publications Kubernetes in Action
Book SynopsisDescription With Kubernetes, users don't have to worry about which specific machine in their data center their application is running on. Each layer in their application is decoupled from other layers so they can scale, update, and maintain them independently. Kubernetes in Action teaches developers how to use Kubernetes to deploy self-healing scalable distributed applications. By the end, readers will be able to build and deploy applications in a proper way to take full advantage of the Kubernetes platform. Key features • Easy to follow guide • Hands-on examples • Clearly-written Audience The book is for both application developers as well as system administrators who want to learn about Kubernetes from the developer’s perspective. About the Technology Kubernetes abstracts away the hardware infrastructure and exposes your whole datacenter as a single enormous computational resource.
£43.19
Pearson Education (US) Code That Fits in Your Head
Book SynopsisMark Seemann, a former economist, found a second career as a programmer and has worked as a web and enterprise developer since the late 1990s. He is a Certified Rockstar Developer and has written a Jolt Award-winning book about Dependency Injection, given more than a hundred international conference talks, and authored video courses for both Pluralsight and Clean Coders. Mark has regularly published his blog ( blog.ploeh.dk) since 2006.Trade Review"We progress in software by standing on the shoulders of those who came before us. Mark's vast experience ranges from philosophical and organisational considerations right down to the precise details of writing code. In this book, you're offered an opportunity to build on that experience. Use it." --Adam Ralph, speaker, tutor, and software simplifier, Particular Software "I've been reading Mark's blogs for years and he always manages to entertain while at the same time offering deep technical insights. Code That Fits in Your Head follows in that vein, offering a wealth of information to any software developer looking to take their skills to the next level." --Adam Tornhill, founder of CodeScene, author of Software Design X-Rays and Your Code as a Crime Scene "My favorite thing about this book is how it uses a single code base as a working example. Rather than having to download separate code samples, you get a single Git repository with the entire application. Its history is handcrafted to show the evolution of the code alongside the concepts being explained in the book. As you read about a particular principle or technique, you'll find a direct reference to the commit that demonstrates it in practice. Of course, you're also free to navigate the history at your own leisure, stopping at any stage to inspect, debug, or even experiment with the code. I've never seen this level of interactivity in a book before, and it brings me special joy because it takes advantage of Git's unique design in a new constructive way." --Enrico Campidoglio, independent consultant, speaker and Pluralsight author "Mark Seemann not only has decades of experience architecting and building large software systems, but is also one of the foremost thinkers on how to scale and manage the complex relationship between such systems and the teams that build them." --Mike Hadlow, freelance software consultant and blogger "Mark writes, 'Successful software endures'--this book will help you to write that kind of software." --Bryan Hogan, software architect, podcaster, blogger "Mark has an extraordinary ability to help others think deeply about the industry and profession of software development. With every interview on .NET Rocks! I have come away knowing I would have to go back and listen to my own show to really take in everything we discussed." --Richard Campbell, co-host, .NET Rocks!Table of ContentsSeries Editor Foreword xixPreface xxiiiAbout the Author xxix Part I: Acceleration 1Chapter 1: Art or Science? 3 1.1 Building a House 4 1.2 Growing a Garden 7 1.3 Towards Engineering 8 1.4 Conclusion 14 Chapter 2: Checklists 15 2.1 An Aid to Memory 15 2.2 Checklist for a New Code Base 17 2.3 Adding Checks to Existing Code Bases 29 2.4 Conclusion 32 Chapter 3: Tackling Complexity 33 3.1 Purpose 34 3.2 Why Programming Is Difficult 38 3.3 Towards Software Engineering 44 3.4 Conclusion 46 Chapter 4: Vertical Slice 49 4.1 Start with Working Software 50 4.2 Walking Skeleton 53 4.3 Outside-in 60 4.4 Complete the Slice 77 4.5 Conclusion 85 Chapter 5: Encapsulation 87 5.1 Save the Data 87 5.2 Validation 92 5.3 Protection of Invariants 105 5.4 Conclusion 108 Chapter 6: Triangulation 111 6.1 Short-Term versus Long-Term Memory 111 6.2 Capacity 114 6.3 Conclusion 127 Chapter 7: Decomposition 129 7.1 Code Rot 129 7.2 Code That Fits in Your Brain 136 7.3 Conclusion 153 Chapter 8: API Design 155 8.1 Principles of API Design 156 8.2 API Design Example 168 8.3 Conclusion 176 Chapter 9: Teamwork 177 9.1 Git 178 9.2 Collective Code Ownership 187 9.3 Conclusion 199 Part II: Sustainability 201Chapter 10: Augmenting Code 203 10.1 Feature Flags 204 10.2 The Strangler Pattern 209 10.3 Versioning 218 10.4 Conclusion 220 Chapter 11: Editing Unit Tests 223 11.1 Refactoring Unit Tests 223 11.2 See Tests Fail 233 11.3 Conclusion 234 Chapter 12: Troubleshooting 235 12.1 Understanding 235 12.2 Defects 240 12.3 Bisection 250 12.4 Conclusion 255 Chapter 13: Separation of Concerns 257 13.1 Composition 258 13.2 Cross-Cutting Concerns 267 13.3 Conclusion 274 Chapter 14: Rhythm 275 14.1 Personal Rhythm 276 14.2 Team Rhythm 282 14.3 Conclusion 285 Chapter 15: The Usual Suspects 287 15.1 Performance 288 15.2 Security 292 15.3 Other Techniques 300 15.4 Conclusion 308 Chapter 16: Tour 309 16.1 Navigation 309 16.2 Architecture 318 16.3 Usage 323 16.4 Conclusion 326 Appendix A: List of Practices 329 A.1 The 50/72 Rule 329 A.2 The 80/24 Rule 330 A.3 Arrange Act Assert 330 A.4 Bisection 330 A.5 Checklist for A New Code Base 331 A.6 Command Query Separation 331 A.7 Count the Variables 331 A.8 Cyclomatic Complexity 331 A.9 Decorators for Cross-Cutting Concerns 332 A.10 Devil's Advocate 332 A.11 Feature Flag 332 A.12 Functional Core, Imperative Shell 333 A.13 Hierarchy of Communication 333 A.14 Justify Exceptions from the Rule 333 A.15 Parse, Don't Validate 334 A.16 Postel's Law 334 A.17 Red Green Refactor 334 A.18 Regularly Update Dependencies 335 A.19 Reproduce Defects as Tests 335 A.20 Review Code 335 A.21 Semantic Versioning 335 A.22 Separate Refactoring of Test and Production Code 335 A.23 Slice 336 A.24 Strangler 336 A.25 Threat-Model 337 A.26 Transformation Priority Premise 337 A.27 X-driven Development 337 A.28 X Out Names 338 Bibliography 339Index 349
£26.99
Manning Publications Data Pipelines with Apache Airflow
Book SynopsisPipelines can be challenging to manage, especially when your data has to flow through a collection of application components, servers, and cloud services. Airflow lets you schedule, restart, and backfill pipelines, and its easy-to-use UI and workflows with Python scripting has users praising its incredible flexibility. Data Pipelines with Apache Airflow takes you through best practices for creating pipelines for multiple tasks, including data lakes, cloud deployments, and data science. Data Pipelines with Apache Airflow teaches you the ins-and-outs of the Directed Acyclic Graphs (DAGs) that power Airflow, and how to write your own DAGs to meet the needs of your projects. With complete coverage of both foundational and lesser-known features, when you’re done you’ll be set to start using Airflow for seamless data pipeline development and management. Key Features Framework foundation and best practices Airflow's execution and dependency system Testing Airflow DAGs Running Airflow in production For data-savvy developers, DevOps and data engineers, and system administrators with intermediate Python skills. About the technology Data pipelines are used to extract, transform and load data to and from multiple sources, routing it wherever it’s needed -- whether that’s visualisation tools, business intelligence dashboards, or machine learning models. Airflow streamlines the whole process, giving you one tool for programmatically developing and monitoring batch data pipelines, and integrating all the pieces you use in your data stack. Bas Harenslak and Julian de Ruiter are data engineers with extensive experience using Airflow to develop pipelines for major companies including Heineken, Unilever, and Booking.com. Bas is a committer, and both Bas and Julian are active contributors to Apache Airflow.
£29.99
No Starch Press,US Official Scratch Coding Cards, The (scratch 3.0):
Book SynopsisNow updated for Scratch 3.0, this 75-card deck features interactive programming projects you can make with Scratch, a free-to-use graphical programming language used by millions of kids around the world. The front of each card shows an activity, like Pong, Write an Interactive Story, Create a Virtual Pet, Play Hide and Seek. The back shows how to put code blocks together to make projects come to life! Along the way, kids learn coding concepts like sequencing, conditionals, and variables.
£16.14
Manning Publications Rust in Action
Book SynopsisRust is a new systems programming language that gives you the low-level power of C with the elegance and ease of languages like Ruby and Python. Rust is thread safe, enabling "fearless concurrency". Rust in Action introduces the Rust programming language by exploring numerous systems programming concepts and techniques. You'll be learning Rust by delving into how computers work under the hood. You'll find yourself playing with persistent storage, memory, networking and even tinkering with CPU instructions. The book takes you through using Rust to extend other applications and teaches you tricks to write blindingly fast code. You'll also discover parallel and concurrent programming. · Concurrent and parallel programming Sharing resources with locks or atomic operations Avoiding programming with global state Message passing inside your applications Memory management and garbage collection Readers need intermediate programming skills and familiarity with general computer science concepts, the command line, and networking.
£43.19
Pearson Education (US) Functional Design
Book SynopsisRobert C. Martin (Uncle Bob) wrote his first line of code at the age of 12 in 1964 and has been employed as a programmer since 1970. He is cofounder of cleancoders.com, offering online video training for software developers, and is founder of Uncle Bob Consulting LLC, offering software consulting, training, and skill development services to major corporations worldwide. He served as the Master Craftsman at 8th Light, Inc., a Chicago-based software consulting firm. Mr. Martin has published dozens of articles in various trade journals, authored many books, and is a regular speaker at international conferences and trade shows.Table of ContentsForeword xiiiPreface xvAcknowledgments xxiAbout the Author xxiii Part I: Functional Basics 1 Chapter 1: Immutability 3What Is Functional Programming? 4The Problem with Assignment 7So Why Is It Called Functional? 10No Change of State? 12Immutability 15 Chapter 2: Persistent Data 17On Cheating 19Making Copies 20Structural Sharing 23 Chapter 3: Recursion and Iteration 27Iteration 28Recursion 32 Chapter 4: Laziness 37Lazy Accumulation 40OK, but Why? 41Coda 42 Chapter 5: Statefulness 43When We MUST Mutate 47Software Transactional Memory (STM) 48Life Is Hard, Software Is Harder 51 Part II: Comparative Analysis 53 Chapter 6: Prime Factors 55Java Version 56Clojure Version 60Conclusion 63 Chapter 7: Bowling Game 65Java Version 66Clojure Version 71Conclusion 75 Chapter 8: Gossiping Bus Drivers 77Java Solution 78Clojure 88Conclusion 93 Chapter 9: Object-Oriented Programming 95Functional Payroll 98Namespaces and Source Files 107Conclusion 108 Chapter 10: Types 109 Part III: Functional Design 115 Chapter 11: Data Flow 117 Chapter 12: SOLID 125The Single Responsibility Principle (SRP) 126The Open-Closed Principle (OCP) 131The Liskov Substitution Principle (LSP) 138The Interface Segregation Principle (ISP) 147The Dependency Inversion Principle (DIP) 152 Part IV: Functional Pragmatics 181 Chapter 13: Tests 183But What about the REPL? 184What about Mocks? 184Property-Based Testing 186A Diagnostic Technique 190Functional 197 Chapter 14: GUI 199Turtle-Graphics in Quil 200 Chapter 15: Concurrency 215Conclusion 225 Part V: Design Patterns 227 Chapter 16: Design Patterns Review 229Patterns in Functional Programming 233Abstract Server 233Adapter 236Command 242Composite 249Decorator 260Visitor 264Abstract Factory 274Conclusion 281Postscript: OO Poison? 282 Part VI: Case Study 285 Chapter 17: Wa-Tor 287Scratch That Itch 309Showers Solve Problems 312It's Time to Wildly Reproduce 322What about the Sharks? 324Conclusion 335 Afterword 337 Index 341
£34.19
No Starch Press Practical Deep Learning 2nd Edition
Book SynopsisPractical Deep Learning, 2nd Edition is your gateway into AI, equipping you with the knowledge and confidence to build powerful AI models using the latest architectures and techniques.If you’ve been curious about artificial intelligence and machine learning but didn’t know where to start, this is the book you’ve been waiting for. Focusing on the subfield of machine learning known as deep learning, it explains core concepts and gives you the foundation you need to start building your own models. Rather than simply outlining recipes for using existing toolkits, Practical Deep Learning, 2nd Edition teaches you the why of deep learning and will inspire you to explore further.All you need is basic familiarity with computer programming and high school math—the book will cover the rest. After an introduction to Python, you’ll move through key topics like how to build a good training dataset, work with the scikit-learn and Keras libraries, and evaluate your models’ performance.You’ll also learn: How to use classic machine learning models like k-Nearest Neighbors, Random Forests, and Support Vector Machines How neural networks work and how they’re trained How to use convolutional neural networks How to develop a successful deep learning model from scratch You’ll conduct experiments along the way, building to a final case study that incorporates everything you’ve learned.This second edition is thoroughly revised and updated, and adds six new chapters to further your exploration of deep learning from basic CNNs to more advanced models. New chapters cover fine tuning, transfer learning, object detection, semantic segmentation, multilabel classification, self-supervised learning, generative adversarial networks, and large language models.The perfect introduction to this dynamic, ever-expanding field, Practical Deep Learning, 2nd Edition will give you the skills and confidence to dive into your own machine learning projects.
£47.24
The Pragmatic Programmers Distributed Services with Go: Your Guide to
Book SynopsisThis is the book for Gophers who want to learn how to build distributed systems. You know the basics of Go and are eager to put your knowledge to work. Build distributed services that are highly available, resilient, and scalable. This book is just what you need to apply Go to real-world situations. Level up your engineering skills today. Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essentials of storage handling, then work your way through networking a client and server, and finally to distributing server instances, deployment, and testing. All this will make coding in your day job or side projects easier, faster, and more fun. Create your own distributed services and contribute to open source projects. Build networked, secure clients and servers with gRPC. Gain insights into your systems and debug issues with observable services instrumented with metrics, logs, and traces. Operate your own Certificate Authority to authenticate internal web services with TLS. Automatically handle when nodes are added or removed to your cluster with service discovery. Coordinate distributed systems with replicated state machines powered by the Raft consensus algorithm. Lay out your applications and libraries to be modular and easy to maintain. Write CLIs to configure and run your applications. Run your distributed system locally and deploy to the cloud with Kubernetes. Test and benchmark your applications to ensure they're correct and fast. Dive into writing Go and join the hundreds of thousands who are using it to build software for the real world. What You Need: Go 1.13+ and Kubernetes 1.16+
£35.14
Manning Publications Python Concurrency with asyncio
Book Synopsis"This is one of the best technical books I've ever read. The writing is so good, and it covers an incredible amount of knowledge. Hands down, this is the best reference material on using asyncio anywhere." - Kent R. Spillner Learn how to speed up slow Python code with concurrent programming and the cutting-edge asyncio library. Python is flexible, versatile, and easy to learn. It can also be very slow compared to lower-level languages. Python Concurrency with asyncio teaches you how to boost Python's performance by applying a variety of concurrency techniques. You'll learn how the complex-but-powerful asyncio library can achieve concurrency with just a single thread and use asyncio's APIs to run multiple web requests and database queries simultaneously. The book covers using asyncio with the entire Python concurrency landscape, including multiprocessing and multithreading. about the technologyThe time demands of running code synchronously quickly overload standard Python and slow your programs to a crawl. Python's Asynchronous I/O library asyncio was built to solve these performance problems by making it easy to divide and schedule computational tasks so they can be run independently. asyncio concurrently handles multiple operations without a drop in throughput or responsiveness, making your apps lightning fast and easier to scale. about the bookPython Concurrency with asyncio teaches you to write concurrent Python code that will boost the speed of your apps and APIs. The book demystifies asynchio's unique single-threaded concurrency model, giving you a behind-the-scenes understanding of the library and its new async/await syntax. Hard-to-grok concurrency topics are broken down into simple flowcharts so you can easily see how your coroutines and tasks are running. You'll learn to apply asyncio to solve common performance problems, such as batch database jobs, slow web servers, and scaling microservices. All examples you'll build are designed to be usable in the real world, including a clever command line SQL client that can run multiple slow queries at the same time. By the time you're done, you'll even be able to combine asyncio with traditional multiprocessing and multithreading techniques for huge improvements to performance. what's insideUse coroutines and tasks alongside async/await syntax to run code concurrentlyBuild web APIs and make concurrency web requests with aiohttpRun thousands of SQL queries concurrentlyCreate a map-reduce job that can process gigabytes of data concurrentlyUse threading with asyncio to mix blocking code with asyncio code about the readerFor intermediate Python programmers. No previous experience of concurrency required. about the authorMatthew Fowler has over 15 years of software engineering experience in roles from architect to engineering director. He has worked on Python codebases in the machine learning space, as well as led development of a Python-based ecommerce site with tens of millions of users.Trade Review"Read this to write better, faster, leaner Python services!" Dimitrios Kouzis-Loukas "Do you want to understand Concurrency in Python? Because you've been doing it wrong." Didier Garcia "Understanding the information in this book would make all of us better Python programmers." Charles M. Shelton "This is one of the best technical books I've ever read. The writing is so good, and it covers an incredible amount of knowledge. Hands down, this is the best reference material on using asyncio anywhere." Kent R. Spillner "The book is excellent, I really liked the author's approach and the examples that were brought to explain the concepts." William Jamir Silva "Even if you think you know asyncio then you should read this book to find out about the parts that you actually knew nothing about!" Richard Vaughan
£47.99
Pearson Education (US) Pandas for Everyone
Book SynopsisDaniel Chen is a graduate student in the Interdisciplinary PhD program in Genetics, Bioinformatics & Computational Biology (GBCB) at Virginia Polytechnic Institute and State University (Virginia Tech). He is involved with Software Carpentry as an instructor, Mentoring Committee Member, and currently serves as the Assessment Committee Chair. He completed his Masters in Public Health at Columbia University Mailman School of Public Health in Epidemiology with a certificate in Advanced Epidemiology and currently extending his Master's thesis work in the Social and Decision Analytics Laboratory under the Virginia Bioinformatics Institute on attitude diffusion in social networks.Table of ContentsForeword by Anne M. Brown xxiii Foreword by Jared Lander xxv Preface xxvii Changes in the Second Edition xxxix Part I: Introduction 1 Chapter 1. Pandas DataFrame Basics 3 Learning Objectives 3 1.1 Introduction 3 1.2 Load Your First Data Set 4 1.3 Look at Columns, Rows, and Cells 6 1.4 Grouped and Aggregated Calculations 23 1.5 Basic Plot 27 Conclusion 28 Chapter 2. Pandas Data Structures Basics 31 Learning Objectives 31 2.1 Create Your Own Data 31 2.2 The Series 33 2.3 The DataFrame 42 2.4 Making Changes to Series and DataFrames 45 2.5 Exporting and Importing Data 52 Conclusion 63 Chapter 3. Plotting Basics 65 Learning Objectives 65 3.1 Why Visualize Data? 65 3.2 Matplotlib Basics 66 3.3 Statistical Graphics Using matplotlib 72 3.4 Seaborn 78 3.5 Pandas Plotting Method 111 Conclusion 115 Chapter 4. Tidy Data 117 Learning Objectives 117 Note About This Chapter 117 4.1 Columns Contain Values, Not Variables 118 4.2 Columns Contain Multiple Variables 122 4.3 Variables in Both Rows and Columns 126 Conclusion 129 Chapter 5. Apply Functions 131 Learning Objectives 131 Note About This Chapter 131 5.1 Primer on Functions 131 5.2 Apply (Basics) 133 5.3 Vectorized Functions 138 5.4 Lambda Functions (Anonymous Functions) 141 Conclusion 142 Part II: Data Processing 143 Chapter 6. Data Assembly 145 Learning Objectives 145 6.1 Combine Data Sets 145 6.2 Concatenation 146 6.3 Observational Units Across Multiple Tables 154 6.4 Merge Multiple Data Sets 160 Conclusion 167 Chapter 7. Data Normalization 169 Learning Objectives 169 7.1 Multiple Observational Units in a Table (Normalization) 169 Conclusion 173 Chapter 8. Groupby Operations: Split-Apply-Combine 175 Learning Objectives 175 8.1 Aggregate 176 8.2 Transform 184 8.3 Filter 188 8.4 The pandas.core.groupby.DataFrameGroupBy object 190 8.5 Working with a MultiIndex 195 Conclusion 199 Part III: Data Types 203 Chapter 9. Missing Data 203 Learning Objectives 203 9.1 What Is a NaN Value? 203 9.2 Where Do Missing Values Come From? 205 9.3 Working with Missing Data 210 9.4 Pandas Built-In NA Missing 216 Conclusion 218 Chapter 10. Data Types 219 Learning Objectives 219 10.1 Data Types 219 10.2 Converting Types 220 10.3 Categorical Data 225 Conclusion 227 Chapter 11. Strings and Text Data 229 Introduction 229 Learning Objectives 229 11.1 Strings 229 11.2 String Methods 233 11.3 More String Methods 234 11.4 String Formatting (F-Strings) 236 11.5 Regular Expressions (RegEx) 239 11.6 The regex Library 247 Conclusion 247 Chapter 12. Dates and Times 249 Learning Objectives 249 12.1 Python's datetime Object 249 12.2 Converting to datetime 250 12.3 Loading Data That Include Dates 253 12.4 Extracting Date Components 254 12.5 Date Calculations and Timedeltas 257 12.6 Datetime Methods 259 12.7 Getting Stock Data 261 12.8 Subsetting Data Based on Dates 263 12.9 Date Ranges 266 12.10 Shifting Values 270 12.11 Resampling 276 12.12 Time Zones 278 12.13 Arrow for Better Dates and Times 280 Conclusion 280 Part IV: Data Modeling 281 Chapter 13. Linear Regression (Continuous Outcome Variable) 283 13.1 Simple Linear Regression 283 13.2 Multiple Regression 287 13.3 Models with Categorical Variables 289 13.4 One-Hot Encoding in scikit-learn with Transformer Pipelines 294 Conclusion 296 Chapter 14. Generalized Linear Models 297 About This Chapter 297 14.1 Logistic Regression (Binary Outcome Variable) 297 14.2 Poisson Regression (Count Outcome Variable) 304 14.3 More Generalized Linear Models 308 Conclusion 309 Chapter 15. Survival Analysis 311 15.1 Survival Data 311 15.2 Kaplan Meier Curves 312 15.3 Cox Proportional Hazard Model 314 Conclusion 317 Chapter 16. Model Diagnostics 319 16.1 Residuals 319 16.2 Comparing Multiple Models 324 16.3 k-Fold Cross-Validation 329 Conclusion 334 Chapter 17. Regularization 335 17.1 Why Regularize? 335 17.2 LASSO Regression 337 17.3 Ridge Regression 338 17.4 Elastic Net 340 17.5 Cross-Validation 341 Conclusion 343 Chapter 18. Clustering 345 18.1 k-Means 345 18.2 Hierarchical Clustering 351 Conclusion 356 Part V. Conclusion 357 Chapter 19. Life Outside of Pandas 359 19.1 The (Scientific) Computing Stack 359 19.2 Performance 360 19.3 Dask 360 19.4 Siuba 360 19.5 Ibis 361 19.6 Polars 361 19.7 PyJanitor 361 19.8 Pandera 361 19.9 Machine Learning 361 19.10 Publishing 362 19.11 Dashboards 362 Conclusion 362 Chapter 20. It's Dangerous To Go Alone! 363 20.1 Local Meetups 363 20.2 Conferences 363 20.3 The Carpentries 364 20.4 Podcasts 364 20.5 Other Resources 365 Conclusion 365 Appendices 367 A. Concept Maps 369B. Installation and Setup 373C. Command Line 377D. Project Templates 379E. Using Python 381F. Working Directories 383G. Environments 385H. Install Packages 389I. Importing Libraries 391J. Code Style 393K. Containers: Lists, Tuples, and Dictionaries 395L. Slice Values 399M. Loops 401N. Comprehensions 403O. Functions 405P. Ranges and Generators 409Q. Multiple Assignment 413R. Numpy ndarray 415S. Classes 417T. SettingWithCopyWarning 419U. Method Chaining 423V. Timing Code 427W. String Formatting 429X. Conditionals (if-elif-else) 433Y. New York ACS Logistic Regression Example 435Z. Replicating Results in R 443 Index 451
£34.19
Elsevier - Health Sciences Division MATLAB
Book SynopsisTable of ContentsPart 1 Introduction to Programming Using MATLAB 1. Introduction to MATLAB 2. Vectors and Matrices 3. Introduction to MATLAB Programming 4. Selection Statements 5. Loop Statements and Vectorizing Code 6. MATLAB Programs 7. Text Manipulation 8. Data Structures Part 2 Advanced Topics for Problem Solving with MATLAB 9. Data Transfer 10. Advanced Functions 11. Introduction to Object-Oriented Programming and Graphics 12. Advanced Plotting Techniques 13. Sights and Sounds 14. Advanced Mathematics 15. Introduction to Machine Learning
£46.76
Mike Murach & Associates Inc. Murach's C# (8th Edition)
Book Synopsis
£45.74
Rheinwerk Publishing Inc. Node.js
Book SynopsisIf you’re developing server-side JavaScript applications, you need Node.js! Start with the basics of the Node.js environment: installation, application structure, and modules. Then follow detailed code examples to learn about web development using frameworks like Express and Nest.js.
£37.79
In Easy Steps Limited Scratch Programming in easy steps
Book SynopsisThe Scratch programming language is widely used in schools and on the Raspberry Pi. Its drag-and-drop commands make it an ideal language for all ages to learn to program. And this popular book, Scratch Programming in easy steps, now fully updated for Scratch 3, is packed with ideas and games that illustrate what's possible with Scratch.Scratch makes it easy to create your own games, animations, music, art or applications. It's the perfect way to learn programming because it takes away a lot of the complexity. That means you can focus on having great ideas and bringing them to life. With Scratch Programming in easy steps, 2nd edition as your companion, you'll learn how to: Build games that require skill, knowledge or quick fingersAdd musicCreate eye-catching visual effectsKeep scoreAvoid common pitfalls and learn how to fix bugsScratch Programming in easy steps, 2nd edition will help you to get creative and become a super Scratcher!
£10.44
Pearson Education (US) C20 for Programmers
Book Synopsis Paul Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is a graduate of MIT, where he studied Information Technology. He holds the Java Certified Programmer and Java Certified Developer designations, and is an Oracle Java Champion. Through Deitel & Associates, Inc., he has delivered hundreds of programming courses worldwide to clients, including Cisco, IBM, Siemens, Sun Microsystems, Dell, Fidelity, NASA at the Kennedy Space Center, the National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Nortel Networks, Puma, iRobot, Invensys and many more. He and his co-author, Dr. Harvey M. Deitel, are the world's best-selling programming-language textbook/professional book/video authors. Dr. Harvey Deitel, Chairman and Chief Strategy Officer of Deitel & Associates, Inc., has over 50 years of experience in the computer field. Dr. Deitel earned B.S. and M.S. degreeTrade ReviewFrom Marc Gregoire, Software Architect, Nikon Metrology, Microsoft Visual C++ MVP and Author of Professional C++, 5/e: "C++20 is a big update for the C++ language and its standard library, introducing numerous new features. Some of these will drastically change the way we write and organize our code. C++20 for Programmers is a great book to learn C++. This latest edition is updated to include new C++20 features bringing you up to speed with writing modern and well-structured C++ code. Everything is introduced in an easy-to-read, step-by-step manner with the aid of compact, to-the-point code examples. I like the objects-natural approach and examples. For example, the ZIP discussion shows how powerful it is to use third-party libraries that implement complicated things--this allows you to write and read ZIP files in just a few lines of your own code. Another very nice and interesting objects-natural example shows encrypting and decrypting text with just a few lines of code." "I especially like that you've stressed to avoid using pointers but instead use modern functionality such as std::array, std::vector, std::string, and so on. I also like the very nice objects natural section, explaining std::span. A nice introduction to containers, iterators, and algorithms, the range-based for loop, and functional programming. Good introduction to classes. Good discussion of modern runtime- and compile-time polymorphism techniques. A very good chapter on operator overloading. Nice exceptions chapter--I like the look ahead to contracts for C++23 or later! I like the chapter 'Templates, C++20 Concepts and Metaprogramming.' It touches on several more advanced features, but it is still easy to read and to follow the examples. Nice chapter on C++20 modules--it contains just the right amount of details for this book." From Dr. Daisy Hollman, ISO C++ Standards Committee Member: "I'm a big fan of talking about objects early and often--it's nice to see that my pedagogical instincts in this matter are supported by at least some experts. :-) I love the emphasis on code readability throughout. The emphasis on safe programming in this book is excellent. I really like the 'objects natural' case study with the zip library. I'm a big fan of introducing the class template array before the language version of arrays, and I also like the use of vector as a case study. I absolutely love the emphasis on avoiding pointers. Well done! I'm also a big fan of the section on span. The use of std::string_view in Figure 9.2 is exactly what we had in mind when we designed it." "In the chapter, 'OOP: Inheritance and Runtime Polymorphism,' it's awesome that NVI (non-virtual interface idiom) is covered. I really like the discussion of real-world consequences of implementation inheritance. 'Operator Overloading, Copy/Move Semantics and Smart Pointers' is a great chapter." From Inbal Levi, SolarEdge Technologies, ISO C++ Foundation director, ISO C++ SG9 (Ranges) chair, ISO C++ Standards Committee: " C++20 for Programmers provides a great introduction to C++20 through simple and useful examples. 'C++20 formatting with the {fmt} library' is a great and important explanation--it clarifies the relation between standard library implementations and open-source libraries. Examples (especially cryptography) in the 'Functions and an Intro to Function Templates' chapter are great. The chapter, 'Strings, string_views, Text Files, CSV Files and Regex' is well written, great examples. I think both the use case and the reference to OWASP (Open Web Application Security Project) as a knowledge resource will do a great deal for the new developer. The chapter 'OOP: Inheritance and Runtime Polymorphism,' presents some very interesting design patterns. The chapter, 'Operator Overloading, Copy/Move Semantics and Smart Pointers,' is great, the explanations and example class are good and informative." From Danny Kalev, Ph.D. and Certified System Analyst and Software Engineer, Former ISO C++ Standards Committee Member: "The Deitels have included all of the useful new C++20 features in a readable and up-to-date book with numerous code examples aimed to transport you swiftly and smoothly into the era of Modern C++ programming. The code has been rigorously tested with three leading compilers. Covers the latest C++20 programming and design idioms. All the relevant hands-on knowledge for designing efficient and reusable concurrent C++20 apps." "The chapter, 'Strings, string_views, Text Files, CSV Files and Regex,' is one of the best chapters in any C++ book I've read. Kudos on the Titanic dataset. 'Operator Overloading, Copy/Move Semantics and Smart Pointers' discusses the Special Five member functions, emphasizing the differences between copy constructors and assignment operators, and between copying and moving. The chapter, 'Standard Library Containers and Iterators,' covers the major concepts of standard library containers, iterators, algorithms and container adaptors--all with C++20-compliant code. The chapter, 'Standard Library Algorithms and C++20 Ranges & Views,' covers advanced C++20 features, including iterators and their requirements, the C++20 ranges facilities and related algorithms, functional programming using functors and lambdas, and brief discussion about parallelization. 'Templates, C++20 Concepts and Metaprogramming' is one of the best chapters of this book. Not only is it clear and easy to read, it's also up to date with the latest C++20 features. The new C++20 concepts are explained and demonstrated very well, as are variadic templates, the more traditional notion of type traits and finally, the pick of the crop is template metaprogramming. Writing about modules is quite a challenge--this chapter presents them clearly and in detail. I loved the jaw-dropping improvement in translation unit sizes achieved by importing a header unit using C++20 modules rather than the preprocessor to include a header." "Coroutines, one of C++20's 'big four' features, are explained clearly. The main concepts associated with coroutines, i.e., co_await, co_yield and co_return, are demonstrated using easy-to-follow code listings, as are more advanced issues such as tasks and executors. Another noteworthy point is the balanced coverage of third-party coroutines support libraries, since C++20 doesn't provide its own yet." From Arthur O'Dwyer, C++ trainer, Chair of CppCon's Back to Basics track, author of several accepted C++17/20/23 proposals and the book Mastering the C++17 STL: "The chapter, 'OOP: Inheritance and Runtime Polymorphism,' is thorough on all the permutations of private, public, data members, function members, virtual, non-virtual, etc. Very obviously concerned with being up-to-date with C++17 and C++20--that's excellent! You emphasize override and final, which is good. You also emphasize 'prefer composition over inheritance' and NVI (non-virtual interface idiom), which I like. I'm very happy that you show the new ways and say they're good. That's great. C++20 Modules are relegated to their own chapter near the end of the book, but their treatment is not superficial; the chapter demonstrates some non-trivial features such as module partitions, and includes step-by-step instructions for building the sample code on all three mainstream implementations. Covers C++20 Concepts and Ranges confidently and in depth. New features such as std::format, std::span and concepts are used heavily throughout the code examples. The fun part of the chapter, 'Control Statements: Part 1,' is integrating the third-party libraries [in the objects-natural case study] and . 'Strings, string_views, Text Files, CSV Files and Regex' is a solid chapter. I like presenting string and string_view together as a unit. The rapidcsv [objects-natural] case study is a really good idea. The chapter 'Exceptions and a Look Forward to Contracts' presents a pretty clear narrative focus on exceptions and error handling. In the chapter 'C++20 Coroutines,' the choice to use tl::generator and concurrencpp::result is good." From José Antonio González Seco, Parliament of Andalusia: "Ideal for professionals who want to learn modern C++ or improve their skills with it. Covers C++20 in a clear and practical way, with an impressive amount of high-quality references, a strong focus on performance and security, and an 'objects natural' approach very useful for learning how to integrate external libraries in your projects. Great coverage of modules, with clear explanations." From Saar Raz, Senior Software Engineer, Swimm.io and Implementor of C++20 Concepts in Clang: "The chapter 'Templates, C++20 Concepts and Metaprogramming' covers a lot of ground and important features, such as concept-based overloading, fold expressions and constexpr if. It also goes into great detail explaining how the metaprogramming works. The explanation about the need for coroutines is excellent and provides many use cases, building a strong case for the feature. Gives a high level of understanding of the main low-level concepts of coroutine implementation--it helped me better grasp those concepts." From Anthony Williams, Member of the British Standards Institution C++ Standards Panel, Director of Just Software Solutions Ltd., Author of C++ Concurrency in Action, 2/e: "Gives concrete information on how to write code using modules. I like that the chapter 'Parallel Algorithms and Concurrency: A High-Level View' doesn't go too deep on the lower-level things and starts with the parallel algorithms. Introduces coroutines clearly, with simple examples using open-source libraries." From Andreas Fertig, Independent C++ Trainer and Consultant, Creator of cppinsights.io, Author of Programming with C++20: "Paul and Harvey do an excellent job teaching modern C++ using C++20. Templates are a huge beast and the chapter 'Templates, C++20 Concepts and Metaprogramming' gives a good overview. The chapter 'C++20 Modules: Large-Scale Development' is a good write-up of modules and how they work--it covers all the parts one needs to start with or convert to modules. An excellent introduction to multithreading and concurrency. In the chapter 'C++20 Coroutines,' I especially liked the overview of coroutine use-cases." Some Reviews from Earlier Editions--and the Reviewers' Affiliations at the Time "A great introduction to object-oriented programming in C++. I wish I'd had it when I was learning the language. Provides helpful tips that are relevant to real problems in the software industry." --Gordon Hogenson, Microsoft "I like how the text emphasizes the importance of style, comments and consistency." --Renato Golin, LLVM Compiler Engineer (now a Senior Research Engineer at Microsoft) "A stellar overview of how polymorphism works--the section on how it's done is great." --Gašper Ažman, A9.com Search Technologies and Co-author, C++ Today: The Beast Is Back "Gets you into C++ programming quickly with important tips, loads of insights and gradual progression towards advanced concepts. A great tour of C++ for beginners learning an industrial-strength programming language." --Dean Michael Berris, Google, Maintainer of cpp-netlib and Former ISO C++ Committee Member (now a Principal Software Engineer at Microsoft) "I liked that the material doesn't skirt around the complex nature of C++, and instead explains all the aspects of the example programs." --Jonathan Wakely, Redhat, ISO C++ Committee SecretaryTable of ContentsPreface xxi Before You Begin xliii Chapter 1: Intro and Test-Driving Popular, Free C++ Compilers 1 1.1 Introduction 2 1.2 Test-Driving a C++20 Application 4 1.3 Moore's Law, Multi-Core Processors and Concurrent Programming 16 1.4 A Brief Refresher on Object Orientation 17 1.5 Wrap-Up 20 Chapter 2: Intro to C++20 Programming 21 2.1 Introduction 22 2.2 First Program in C++: Displaying a Line of Text 22 2.3 Modifying Our First C++ Program 25 2.4 Another C++ Program: Adding Integers 26 2.5 Arithmetic 30 2.6 Decision Making: Equality and Relational Operators 31 2.7 Objects Natural: Creating and Using Objects of Standard-Library Class string 35 2.8 Wrap-Up 38 Chapter 3: Control Statements: Part 1 39 3.1 Introduction 40 3.2 Control Structures 40 3.3 if Single-Selection Statement 43 3.4 if…else Double-Selection Statement 44 3.5 while Iteration Statement 47 3.6 Counter-Controlled Iteration 48 3.7 Sentinel-Controlled Iteration 50 3.8 Nested Control Statements 54 3.9 Compound Assignment Operators 57 3.10 Increment and Decrement Operators 58 3.11 Fundamental Types Are Not Portable 60 3.12 Objects-Natural Case Study: Arbitrary-Sized Integers 61 3.13 C++20: Text Formatting with Function format 65 3.14 Wrap-Up 67 Chapter 4: Control Statements: Part 2 69 4.1 Introduction 70 4.2 Essentials of Counter-Controlled Iteration 70 4.3 for Iteration Statement 71 4.4 Examples Using the for Statement 74 4.5 Application: Summing Even Integers 74 4.6 Application: Compound-Interest Calculations 75 4.7 do…while Iteration Statement 78 4.8 switch Multiple-Selection Statement 80 4.9 C++17 Selection Statements with Initializers 85 4.10 break and continue Statements 86 4.11 Logical Operators 88 4.12 Confusing the Equality (==) and Assignment (=) Operators 92 4.13 Objects-Natural Case Study: Using the miniz-cpp Library to Write and Read ZIP files 94 4.14 C++20 Text Formatting with Field Widths and Precisions 98 4.15 Wrap-Up 100 Chapter 5: Functions and an Intro to Function Templates 101 5.1 Introduction 102 5.2 C++ Program Components 103 5.3 Math Library Functions 103 5.4 Function Definitions and Function Prototypes 105 5.5 Order of Evaluation of a Function's Arguments 108 5.6 Function-Prototype and Argument-Coercion Notes 108 5.7 C++ Standard Library Headers 111 5.8 Case Study: Random-Number Generation 113 5.9 Case Study: Game of Chance; Introducing Scoped enums 119 5.10 Scope Rules 124 5.11 Inline Functions 128 5.12 References and Reference Parameters 129 5.13 Default Arguments 132 5.14 Unary Scope Resolution Operator 133 5.15 Function Overloading 134 5.16 Function Templates 137 5.17 Recursion 139 5.18 Example Using Recursion: Fibonacci Series 142 5.19 Recursion vs. Iteration 145 5.20 Lnfylun Lhqtomh Wjtz Qarcv: Qjwazkrplm xzz Xndmwwqhlz 147 5.21 Wrap-Up 150 Chapter 6: arrays, vectors, Ranges and Functional-Style Programming 153 6.1 Introduction 154 6.2 arrays 155 6.3 Declaring arrays 155 6.4 Initializing array Elements in a Loop 155 6.5 Initializing an array with an Initializer List 158 6.6 C++11 Range-Based for and C++20 Range-Based for with Initializer 159 6.7 Calculating array Element Values and an Intro to constexpr 161 6.8 Totaling array Elements 163 6.9 Using a Primitive Bar Chart to Display array Data Graphically 164 6.10 Using array Elements as Counters 165 6.11 Using arrays to Summarize Survey Results 166 6.12 Sorting and Searching arrays 168 6.13 Multidimensional arrays 170 6.14 Intro to Functional-Style Programming 174 6.15 Objects-Natural Case Study: C++ Standard Library Class Template vector 180 6.16 Wrap-Up 187 Chapter 7: (Downplaying) Pointers in Modern C++ 189 7.1 Introduction 190 7.2 Pointer Variable Declarations and Initialization 192 7.3 Pointer Operators 192 7.4 Pass-by-Reference with Pointers 195 7.5 Built-In Arrays 199 7.6 Using C++20 to_array to Convert a Built-In Array to a std::array 201 7.7 Using const with Pointers and the Data Pointed To 202 7.8 sizeof Operator 205 7.9 Pointer Expressions and Pointer Arithmetic 208 7.10 Objects-Natural Case Study: C++20 spans--Views of Contiguous Container Elements 210 7.11 A Brief Intro to Pointer-Based Strings 216 7.12 Looking Ahead to Other Pointer Topics 220 7.13 Wrap-Up 220 Chapter 8: strings, string_views, Text Files, CSV Files and Regex 221 8.1 Introduction 222 8.2 string Assignment and Concatenation 223 8.3 Comparing strings 225 8.4 Substrings 226 8.5 Swapping strings 227 8.6 string Characteristics 227 8.7 Finding Substrings and Characters in a string 230 8.8 Replacing and Erasing Characters in a string 232 8.9 Inserting Characters into a string 234 8.10 C++11 Numeric Conversions 235 8.11 C++17 string_view 236 8.12 Files and Streams 239 8.13 Creating a Sequential File 240 8.14 Reading Data from a Sequential File 243 8.15 C++14 Reading and Writing Quoted Text 245 8.16 Updating Sequential Files 246 8.17 String Stream Processing 247 8.18 Raw String Literals 249 8.19 Objects-Natural Case Study: Reading and Analyzing a CSV File Containing Titanic Disaster Data 250 8.20 Objects-Natural Case Study: Intro to Regular Expressions 259 8.21 Wrap-Up 267 Chapter 9: Custom Classes 269 9.1 Introduction 270 9.2 Test-Driving an Account Object 271 9.3 Account Class with a Data Member and Set and Get Member Functions 272 9.4 Account Class: Custom Constructors 275 9.5 Software Engineering with Set and Get Member Functions 279 9.6 Account Class with a Balance 280 9.7 Time Class Case Study: Separating Interface from Implementation 283 9.8 Compilation and Linking Process 290 9.9 Class Scope and Accessing Class Members 291 9.10 Access Functions and Utility Functions 292 9.11 Time Class Case Study: Constructors with Default Arguments 292 9.12 Destructors 298 9.13 When Constructors and Destructors Are Called 298 9.14 Time Class Case Study: A Subtle Trap--Returning a Reference or a Pointer to a private Data Member 302 9.15 Default Assignment Operator 304 9.16 const Objects and const Member Functions 306 9.17 Composition: Objects as Members of Classes 308 9.18 friend Functions and friend Classes 313 9.19 The this Pointer 314 9.20 static Class Members: Classwide Data and Member Functions 320 9.21 Aggregates in C++20 324 9.22 Objects-Natural Case Study: Serialization with JSON 326 9.23 Wrap-Up 333 Chapter 10: OOP: Inheritance and Runtime Polymorphism 335 10.1 Introduction 336 10.2 Base Classes and Derived Classes 339 10.3 Relationship Between Base and Derived Classes 341 10.4 Constructors and Destructors in Derived Classes 349 10.5 Intro to Runtime Polymorphism: Polymorphic Video Game 350 10.6 Relationships Among Objects in an Inheritance Hierarchy 351 10.7 Virtual Functions and Virtual Destructors 357 10.8 Abstract Classes and Pure virtual Functions 362 10.9 Case Study: Payroll System Using Runtime Polymorphism 363 10.10 Runtime Polymorphism, Virtual Functions and Dynamic Binding "Under the Hood" 373 10.11 Non-Virtual Interface (NVI) Idiom 376 10.12 Program to an Interface, Not an Implementation 383 10.13 Runtime Polymorphism with std::variant and std::visit 391 10.14 Multiple Inheritance 397 10.15 protected Class Members: A Deeper Look 405 10.16 public, protected and private Inheritance 406 10.17 More Runtime Polymorphism Techniques; Compile-Time Polymorphism 408 10.18 Wrap-Up 412 Chapter 11: Operator Overloading, Copy/Move Semantics and Smart Pointers 415 11.1 Introduction 416 11.2 Using the Overloaded Operators of Standard Library Class string 418 11.3 Operator Overloading Fundamentals 423 11.4 (Downplaying) Dynamic Memory Management with new and delete 425 11.5 Modern C++ Dynamic Memory Management: RAII and Smart Pointers 427 11.6 MyArray Case Study: Crafting a Valuable Class with Operator Overloading 430 11.7 C++20 Three-Way Comparison Operator (<=>) 459 11.8 Converting Between Types 462 11.9 explicit Constructors and Conversion Operators 463 11.10 Overloading the Function Call Operator () 466 11.11 Wrap-Up 466 Chapter 12: Exceptions and a Look Forward to Contracts 467 12.1 Introduction 468 12.2 Exception-Handling Flow of Control 471 12.3 Exception Safety Guarantees and noexcept 476 12.4 Rethrowing an Exception 477 12.5 Stack Unwinding and Uncaught Exceptions 479 12.6 When to Use Exception Handling 481 12.7 Constructors, Destructors and Exception Handling 483 12.8 Processing new Failures 487 12.9 Standard Library Exception Hierarchy 490 12.10 C++'s Alternative to the finally Block: Resource Acquisition Is Initialization (RAII) 493 12.11 Some Libraries Support Both Exceptions and Error Codes 493 12.12 Logging 494 12.13 Looking Ahead to Contracts 495 12.14 Wrap-Up 503 Chapter 13: Standard Library Containers and Iterators 505 13.1 Introduction 506 13.2 Introduction to Containers 508 13.3 Working with Iterators 513 13.4 A Brief Introduction to Algorithms 518 13.5 Sequence Containers 518 13.6 vector Sequence Container 519 13.7 list Sequence Container 526 13.8 deque Sequence Container 531 13.9 Associative Containers 533 13.10 Container Adaptors 543 13.11 bitset Near Container 547 13.12 Optional: A Brief Intro to Big O 549 13.13 Optional: A Brief Intro to Hash Tables 552 13.14 Wrap-Up 553 Chapter 14: Standard Library Algorithms and C++20 Ranges & Views 555 14.1 Introduction 556 14.2 Algorithm Requirements: C++20 Concepts 558 14.3 Lambdas and Algorithms 560 14.4 Algorithms 563 14.5 Function Objects (Functors) 603 14.6 Projections 608 14.7 C++20 Views and Functional-Style Programming 611 14.8 Intro to Parallel Algorithms 617 14.9 Standard Library Algorithm Summary 619 14.10 A Look Ahead to C++23 Ranges 622 14.11 Wrap-Up 623 Chapter 15: Templates, C++20 Concepts and Metaprogramming 625 15.1 Introduction 626 15.2 Custom Class Templates and Compile-Time Polymorphism 629 15.3 C++20 Function Template Enhancements 634 15.4 C++20 Concepts: A First Look 636 15.5 Type Traits 644 15.6 C++20 Concepts: A Deeper Look 648 15.7 Testing C++20 Concepts with static_assert 659 15.8 Creating a Custom Algorithm 661 15.9 Creating a Custom Container and Iterators 663 15.10 Default Arguments for Template Type Parameters 678 15.11 Variable Templates 678 15.12 Variadic Templates and Fold Expressions 679 15.13 Template Metaprogramming 693 15.14 Wrap-Up 705 Chapter 16: C++20 Modules: Large-Scale Development 707 16.1 Introduction 708 16.2 Compilation and Linking Before C++20 710 16.3 Advantages and Goals of Modules 711 16.4 Example: Transitioning to Modules--Header Units 712 16.5 Modules Can Reduce Translation Unit Sizes and Compilation Times 715 16.6 Example: Creating and Using a Module 716 16.7 Global Module Fragment 724 16.8 Separating Interface from Implementation 725 16.9 Partitions 732 16.10 Additional Modules Examples 740 16.11 Migrating Code to Modules 746 16.12 Future of Modules and Modules Tooling 746 16.13 Wrap-Up 748 Chapter 17: Parallel Algorithms and Concurrency: A High-Level View 755 17.1 Introduction 756 17.2 Standard Library Parallel Algorithms (C++17) 759 17.3 Multithreaded Programming 767 17.4 Launching Tasks with std::jthread 771 17.5 Producer–Consumer Relationship: A First Attempt 776 17.6 Producer–Consumer: Synchronizing Access to Shared Mutable Data 783 17.7 Producer–Consumer: Minimizing Waits with a Circular Buffer 795 17.8 Readers and Writers 804 17.9 Cooperatively Canceling jthreads 805 17.10 Launching Tasks with std::async 808 17.11 Thread-Safe, One-Time Initialization 815 17.12 A Brief Introduction to Atomics 816 17.13 Coordinating Threads with C++20 Latches and Barriers 820 17.14 C++20 Semaphores 826 17.15 C++23: A Look to the Future of C++ Concurrency 830 17.16 Wrap-Up 831 Chapter 18: C++20 Coroutines 833 18.1 Introduction 834 18.2 Coroutine Support Libraries 835 18.3 Installing the concurrencpp and generator Libraries 837 18.4 Creating a Generator Coroutine with co_yield and the generator Library 837 18.5 Launching Tasks with concurrencpp 841 18.6 Creating a Coroutine with co_await and co_return 845 18.7 Low-Level Coroutines Concepts 853 18.8 C++23 Coroutines Enhancements 855 18.9 Wrap-Up 856 Appendix A: Operator Precedence and Grouping 857 Appendix B: Character Set 859 Index 861 Online Chapters and Appendices Chapter 19: Stream I/O and C++20 Text Formatting Chapter 20: Other Topics and a Look Toward the Future of C++ Appendix C: Number Systems Appendix D: Preprocessor Appendix E: Bit Manipulation
£40.49
Pearson Education (US) Captain Code
Book Synopsis Ben Forta is, first and foremost, an educator who has been teaching in some capacity since he was a teenager (many centuries ago). He is Adobe's Senior Director of Education Initiatives, and has more than three decades of experience in the technology sector in product development, support, training, and product marketing. Ben is the award-winning author of more than 40 books, some of which have been translated into 16 languages, and many of which have become college textbooks. Through his books, lectures, lessons, and videos, Ben has taught coding skills to over a million people. Ben lives in Oak Park, MI, with his wife Marcy and their children. He welcomes your emails at ben@forta.com and invites you to visit him online at http://forta.com/. Shmuel Forta is an engineer, coder, maker, tinkerer, and teacher. He is a software developer at General Motors and has years of programming experience, including both writingTrade Review" This is the book I needed that I did not know I needed. Having taught myself Python and having taught students, there are still some gaps in my knowledge that Captain Code quickly filled. The overall design of the book is wonderful and easy to read. All of the questions I have normally had when it comes to Python are answered on the pages. The code is cleanly written and the ability to scan a QR code so you can copy the code digitally is a major time-saver. What is most evident about this book is that it has been written by people that have worked with students. Too often books are written for students by people who have never taught and it never translates well on the pages. Captain Code is accessible for students and teachers and I think it is a must have for any classroom that is exploring Python. I know I will keep one at home for me and a few more in the classroom." ---Nicholas Provenzano, TheNerdyTeacher, MACUL OutstandingTechnology Using Teacher of the Year, and ISTE Outstanding Teacher of the YearTable of ContentsIntroduction xv PART I: IT'S ALL FUN AND GAMES 1 Chapter 1 Getting Started 3 Understanding Computer Programming 4 What is a computer? 4 How do we talk to computers? 5 What is Python? 8 Setting Things Up 9 Installing Python 9 Installing and Configuring Visual Studio Code 10 Creating a Work Folder 13 Writing Your First Python Program 15 Selecting Your Work Folder 16 It's Coding Time! 17 Summary 19 Chapter 2 Mad Libs 21 Understanding Functions 22 Using Variables 23 Creating a Variable 24 Using a Variable 24 Some Important Variable Rules 25 Variables, More Variables, and Even More Variables 26 Getting User Input 28 Playing Mad Libs 30 Write Your Story 30 Add Variables 30 Get User Input 32 Summary 33 Chapter 3 Roll the Dice 35 Using Libraries 36 The random Library 36 Generating Random Numbers 37 Choosing a Random Item 38 “3” Is Not 3 41 Commenting Your Code 43 One Die, Two Dice 45 Summary 49 Chapter 4 Calculate the Day 51 Working with Dates 52 The datetime Library 52 Using the datetime Class 55 Making Decisions 56 The if Statement 56 What else? 58 if Revisited 59 Testing for Other Options 61 Using in 62 Beating the Mathematician 63 Handling Numeric Inputs 63 Putting It All Together 64 An Alternate Solution 67 Summary 67 Chapter 5 Rock Paper Scissors 69 More Strings 70 Game Time 72 Handling User Input 72 The Game Code 74 One Last Tweak 76 Summary 77 Chapter 6 Secret Codes 79 Lists 80 Creating Lists 80 Accessing List Items 82 Changing List Items 83 Adding and Removing Items 84 Finding Items 85 Sorting 86 Loop-de-Loop 89 Looping Through Items 90 Looping Through Numbers 92 Nested Loops 93 Cracking the Code 95 Encrypting Characters 96 Modulus Math 97 Encryption Code 98 Decryption Code 102 Summary 104 Chapter 7 Guess the Number 105 Conditional Loops 106 Game Time 111 The Basic Game 111 Putting It All Together 116 Summary 120 Chapter 8 Becoming a Coder 121 How Coders Code 122 Have a Plan 122 Think Small 123 Game Components 124 Restricting User Input 125 Storing User Guesses 128 Displaying Lists 129 Masking Characters 131 Summary 136 Chapter 9 Hangman 137 Game Time 138 So How Does It Work? 141 Summary 148 Chapter 10 Keep Going 149 Birthday Countdown 150 Program Requirements 150 Program Flow 150 Some Tips 151 Tip Calculator 152 Program Requirements 152 Program Flow 153 Some Tips (Pun Intended) 153 Password Generator 154 Program Requirements 154 Program Flow 155 Some Tips 155 Summary 159 PART II: ON AN ADVENTURE 161 Chapter 11 Getting Func-ky 163 Functions Revisited 164 Creating a Function 165 Passing Arguments 167 Returning Values 171 Summary 175 Chapter 12 Exploring 177 Game Concept 178 Game Structure 179 Prompting for Options 181 Processing Options 182 Create a Work Folder 183 Game Time 184 Test It 189 Summary 191 Chapter 13 Cleanup Time 193 Optimizing Your Code 194 String Externalization 196 Creating the Strings File 196 Using Externalized Strings 200 Summary 201 Chapter 14 Reduce, Reuse, Recycle, Refactor 203 Understanding Refactoring 204 Identifying Refactoring Opportunities 205 Creating a User Choice Component 207 Designing a Reusable Component 208 Creating the User Options Function 213 Updating Your Code 218 Summary 221 Chapter 15 Carrying (and Using) Stuff 223 Planning the Inventory System 224 Creating a Dictionary 225 Working with Dictionaries 226 Lists of Dictionaries 228 The Inventory System 229 Creating an Inventory 230 Plugging In the Inventory System 232 Using the Inventory System 233 Displaying the Inventory 238 Summary 239 Chapter 16 Keeping It Classy 241 The Player System 242 Creating a Player Class 243 Creating the Class 243 Defining Properties 244 Creating Methods 247 Initializing the Class 250 Using Our New Class 251 Summary 255 Chapter 17 Color Your World 257 Installing Third-Party Libraries 258 Using Colorama 259 Importing and Initializing the Library 259 Coloring Your Output 260 Summary 264 Chapter 18 Keep Going 265 Health and Lives 266 Shopping for Items 271 Random Events 275 Battling Enemies 277 Saving and Restoring 280 Summary 282 PART III: RACING AROUND 283 Chapter 19 Crazy Driver 285 Introducing Pygame 286 Prepping the Game 286 Game Concept 286 Installing Pygame 288 Creating Work Folders 288 Obtaining Images 289 Getting Started 289 Initializing Pygame 290 Displaying Stuff 294 The Game Loop 295 Summary 300 Chapter 20 Image-ine the Possibilities 301 Files and Folders 302 Setting the Background 305 Placing the Cars 310 Summary 317 Chapter 21 We Like to Move It 319 Moving the Enemy 320 Moving the Player 323 Summary 327 Chapter 22 Crash, Bang, Boom 329 You Crashed, Game Over 330 Tracking Score 332 Increasing Difficulty 334 Summary 336 Chapter 23 Finishing Touches 337 Game Over Revisited 338 Pause 341 Varying Enemies 343 Ice Cubes 348 Summary 351 Chapter 24 Keep Going 353 Splash Screen 354 Scores and High Scores 354 Oil Slick 356 Multiple Enemies 357 And Then 358 Summary 359 What Next? 361 There's a Lot More to Python 362 Web Development 362 Mobile App Development 364 Game Development 364 And Then 365 Index 367 Bonus Online Chapter 25 Tinkering, Testing, and Debugging Revisited (Online Only)
£18.04
Pearson Education (US) Functional and Concurrent Programming
Book SynopsisMichel Charpentier is an associate professor with the Computer Science department at the University of New Hampshire (UNH). His interests over the years have ranged from distributed systems to formal verification and mobile sensor networks. He has been with UNH since 1999 and currently teaches courses in programming languages, concurrency, formal verification, and model-checking.Table of ContentsForeword by Cay Horstmann xxiii Preface xxv Acknowledgments xxxv About the Author xxxvii Part I. Functional Programming 1 Chapter 1: Concepts of Functional Programming 3 1.1 What Is Functional Programming? 3 1.2 Functions 4 1.3 From Functions to Functional Programming Concepts 6 1.4 Summary 7 Chapter 2: Functions in Programming Languages 9 2.1 Defining Functions 9 2.2 Composing Functions 10 2.3 Functions Defined as Methods 12 2.4 Operators Defined as Methods 12 2.5 Extension Methods 13 2.6 Local Functions 14 2.7 Repeated Arguments 15 2.8 Optional Arguments 16 2.9 Named Arguments 16 2.10 Type Parameters 17 2.11 Summary 19 Chapter 3: Immutability 21 3.1 Pure and Impure Functions 21 3.2 Actions 23 3.3 Expressions Versus Statements 25 3.4 Functional Variables 26 3.5 Immutable Objects 28 3.6 Implementation of Mutable State 29 3.7 Functional Lists 31 3.8 Hybrid Designs 32 3.9 Updating Collections of Mutable/Immutable Objects 35 3.10 Summary 36 Chapter 4: Case Study: Active–Passive Sets 39 4.1 Object-Oriented Design 39 4.2 Functional Values 41 4.3 Functional Objects 43 4.4 Summary 44 Chapter 5: Pattern Matching and Algebraic Data Types 47 5.1 Functional Switch 47 5.2 Tuples 48 5.3 Options 50 5.4 Revisiting Functional Lists 51 5.5 Trees 53 5.6 Illustration: List Zipper 56 5.7 Extractors 59 5.8 Summary 60 Chapter 6: Recursive Programming 63 6.1 The Need for Recursion 63 6.2 Recursive Algorithms 65 6.3 Key Principles of Recursive Algorithms 67 6.4 Recursive Structures 69 6.5 Tail Recursion 71 6.6 Examples of Tail Recursive Functions 73 6.7 Summary 77 Chapter 7: Recursion on Lists 79 7.1 Recursive Algorithms as Equalities 79 7.2 Traversing Lists 80 7.3 Returning Lists 82 7.4 Building Lists from the Execution Stack 84 7.5 Recursion on Multiple/Nested Lists 85 7.6 Recursion on Sublists Other Than the Tail 88 7.7 Building Lists in Reverse Order 90 7.8 Illustration: Sorting 92 7.9 Building Lists Efficiently 94 7.10 Summary 96 Chapter 8: Case Study: Binary Search Trees 99 8.1 Binary Search Trees 99 8.2 Sets of Integers as Binary Search Trees 100 8.3 Implementation Without Rebalancing 102 8.4 Self-Balancing Trees 107 8.5 Summary 113 Chapter 9: Higher-Order Functions 115 9.1 Functions as Values 115 9.2 Currying 118 9.3 Function Literals 120 9.4 Functions Versus Methods 123 9.5 Single-Abstract-Method Interfaces 124 9.6 Partial Application 125 9.7 Closures 130 9.8 Inversion of Control 133 9.9 Summary 133 Chapter 10: Standard Higher-Order Functions 137 10.1 Functions with Predicate Arguments 137 10.2 map and foreach 140 10.3 atMap 141 10.4 fold and reduce 146 10.5 iterate, tabulate, and unfold 148 10.6 sortWith, sortBy, maxBy, and minBy 149 10.7 groupBy and groupMap 150 10.8 Implementing Standard Higher-Order Functions 152 10.9 foreach, map, atMap, and for-Comprehensions 152 10.10 Summary 155 Chapter 11: Case Study: File Systems as Trees 157 11.1 Design Overview 157 11.2 A Node-Searching Helper Function 158 11.3 String Representation 158 11.4 Building Trees 160 11.5 Querying 164 11.6 Navigation 168 11.7 Tree Zipper 169 11.8 Summary 172 Chapter 12: Lazy Evaluation 173 12.1 Delayed Evaluation of Arguments 173 12.2 By-Name Arguments 174 12.3 Control Abstraction 176 12.4 Internal Domain-Specifc Languages 179 12.5 Streams as Lazily Evaluated Lists 180 12.6 Streams as Pipelines 182 12.7 Streams as Infinite Data Structures 184 12.8 Iterators 184 12.9 Lists, Streams, Iterators, and Views 187 12.10 Delayed Evaluation of Fields and Local Variables 190 12.11 Illustration: Subset-Sum 191 12.12 Summary 193 Chapter 13: Handling Failures 195 13.1 Exceptions and Special Values 195 13.2 Using Option 197 13.3 Using Try 198 13.4 Using Either 199 13.5 Higher-Order Functions and Pipelines 201 13.6 Summary 204 Chapter 14: Case Study: Trampolines 205 14.1 Tail-Call Optimization 205 14.2 Trampolines for Tail-Calls 206 14.3 Tail-Call Optimization in Java 207 14.4 Dealing with Non-Tail-Calls 209 14.5 Summary 213 A Brief Interlude 215 Chapter 15: Types (and Related Concepts) 217 15.1 Typing Strategies 217 15.2 Types as Sets 222 15.3 Types as Services 223 15.4 Abstract Data Types 224 15.5 Type Inference 225 15.6 Subtypes 229 15.7 Polymorphism 232 15.8 Type Variance 235 15.9 Type Bounds 241 15.10 Type Classes 245 15.11 Summary 250 Part II. Concurrent Programming 253 Chapter 16: Concepts of Concurrent Programming 255 16.1 Non-sequential Programs 255 16.2 Concurrent Programming Concepts 258 16.3 Summary 259 Chapter 17: Threads and Nondeterminism 261 17.1 Threads of Execution 261 17.2 Creating Threads Using Lambda Expressions 263 17.3 Nondeterministic Behavior of Multithreaded Programs 263 17.4 Thread Termination 264 17.5 Testing and Debugging Multithreaded Programs 266 17.6 Summary 268 Chapter 18: Atomicity and Locking 271 18.1 Atomicity 271 18.2 Non-atomic Operations 273 18.3 Atomic Operations and Non-atomic Composition 274 18.4 Locking 278 18.5 Intrinsic Locks 279 18.6 Choosing Locking Targets 281 18.7 Summary 283 Chapter 19: Thread-Safe Objects 285 19.1 Immutable Objects 285 19.2 Encapsulating Synchronization Policies 286 19.3 Avoiding Reference Escape 288 19.4 Public and Private Locks 289 19.5 Leveraging Immutable Types 290 19.6 Thread-Safety 293 19.7 Summary 295 Chapter 20: Case Study: Thread-Safe Queue 297 20.1 Queues as Pairs of Lists 297 20.2 Single Public Lock Implementation 298 20.3 Single Private Lock Implementation 301 20.4 Applying Lock Splitting 303 20.5 Summary 305 Chapter 21: Thread Pools 307 21.1 Fire-and-Forget Asynchronous Execution 307 21.2 Illustration: Parallel Server 309 21.3 Different Types of Thread Pools 312 21.4 Parallel Collections 314 21.5 Summary 318 Chapter 22: Synchronization 321 22.1 Illustration of the Need for Synchronization 321 22.2 Synchronizers 324 22.3 Deadlocks 325 22.4 Debugging Deadlocks with Thread Dumps 328 22.5 The Java Memory Model 330 22.6 Summary 335 Chapter 23: Common Synchronizers 337 23.1 Locks 337 23.2 Latches and Barriers 339 23.3 Semaphores 341 23.4 Conditions 343 23.5 Blocking Queues 349 23.6 Summary 353 Chapter 24: Case Study: Parallel Execution 355 24.1 Sequential Reference Implementation 355 24.2 One New Thread per Task 356 24.3 Bounded Number of Threads 357 24.4 Dedicated Thread Pool 359 24.5 Shared Thread Pool 360 24.6 Bounded Thread Pool 361 24.7 Parallel Collections 362 24.8 Asynchronous Task Submission Using Conditions 362 24.9 Two-Semaphore Implementation 367 24.10 Summary 368 Chapter 25: Futures and Promises 369 25.1 Functional Tasks 369 25.2 Futures as Synchronizers 371 25.3 Timeouts, Failures, and Cancellation 374 25.4 Future Variants 375 25.5 Promises 375 25.6 Illustration: Thread-Safe Caching 377 25.7 Summary 379 Chapter 26: Functional-Concurrent Programming 381 26.1 Correctness and Performance Issues with Blocking 381 26.2 Callbacks 384 26.3 Higher-Order Functions on Futures 385 26.4 Function atMap on Futures 388 26.5 Illustration: Parallel Server Revisited 390 26.6 Functional-Concurrent Programming Patterns 393 26.7 Summary 397 Chapter 27: Minimizing Thread Blocking 399 27.1 Atomic Operations 399 27.2 Lock-Free Data Structures 402 27.3 Fork/Join Pools 405 27.4 Asynchronous Programming 406 27.5 Actors 407 27.6 Reactive Streams 411 27.7 Non-blocking Synchronization 412 27.8 Summary 414 Chapter 28: Case Study: Parallel Strategies 417 28.1 Problem Definition 417 28.2 Sequential Implementation with Timeout 419 28.3 Parallel Implementation Using invokeAny 420 28.4 Parallel Implementation Using CompletionService 421 28.5 Asynchronous Implementation with Scala Futures 422 28.6 Asynchronous Implementation with CompletableFuture 426 28.7 Caching Results from Strategies 427 28.8 Summary 431 Appendix A. Features of Java and Kotlin 433 A.1 Functions in Java and Kotlin 433 A.2 Immutability 436 A.3 Pattern Matching and Algebraic Data Types 437 A.4 Recursive Programming 439 A.5 Higher-Order Functions 440 A.6 Lazy Evaluation 446 A.7 Handling Failures 449 A.8 Types 451 A.9 Threads 453 A.10 Atomicity and Locking 454 A.11 Thread-Safe Objects 455 A.12 Thread Pools 457 A.13 Synchronization 459 A.14 Futures and Functional-Concurrent Programming 460 A.15 Minimizing Thread Blocking 461 Glossary 463 Index 465
£37.79
In Easy Steps Limited Python in easy steps
Book SynopsisPython in easy steps, 2nd edition instructs you how to program in the powerful Python language, giving complete examples that illustrate each aspect with colorized source code.Python in easy steps, 2nd edition begins by explaining how to install the free Python interpreter so you can quickly begin to create your own executable programs by copying the book''s examples. It demonstrates all the Python language basics before moving on to provide examples of Object Oriented Programming (OOP) and CGI scripting to handle web form data. The book concludes by demonstrating how you can use your acquired knowledge to create and deploy graphical windowed applications. Python in easy steps, 2nd edition makes no assumption you have previous knowledge of any programming language so it''s ideal for the newcomer to computer programming. It has an easy-to-follow style that will appeal to programmers moving from another programming language, and to the student who is studying Python programming at school or college, and to those seeking a career in computing who need a fundamental understanding of computer programming. The Python 3.x language is under active development so frequent new releases are made available as small improvements are added to the language and Python in easy steps, 2nd edition features the very latest versions of Python at the time of publication. Python development is one of evolution, rather than revolution, so the examples provided in the book can be used in subsequent releases - simply download the latest version of Python then follow the easy steps. Python is the language used to program the Raspberry Pi - covered by Raspberry Pi in easy steps and Raspberry Pi 3 in easy steps. This second edition was updated to cover Python 3.7, but from the 2022 reprint it covers Python 3.10.
£14.07
Pearson Education (US) C Templates
Book SynopsisDavid Vandevoorde started programming C++ in the late 1980s. After obtaining a PhD from the Rensselaer Polytechnic Institute, he became technical lead of Hewlett-Packard's C++ compiler team. In 1999 he joined the Edison Design Group (EDG), whose C++ compiler technology is widely recognized as the industry's most advanced. He is an active member of the C++ Standard Committee and a moderator of the newsgroup comp.lang.c++.moderated (which he co-founded). He is the author of C++ Solutions, the companion to The C++ Programming Language, 3rd Edition. Nicolai M. Josuttis is well known for his best-selling de-facto standard bookThe C++ Standard Library - A Tutorial and Reference. He is an independent technical consultant who designs object-oriented software for the telecommunications, traffic, finance, and manufacturing industries. He is an active member of the C++ Standard Committee and a partner at System Bauhaus, a GermTable of ContentsPreface xxiii Acknowledgments for the Second Edition xxv Acknowledgments for the First Edition xxvii About This Book xxix Part I: The Basics 1 Chapter 1: Function Templates 3 1.1 A First Look at Function Templates 3 1.2 Template Argument Deduction 7 1.3 Multiple Template Parameters 9 1.4 Default Template Arguments 13 1.5 Overloading Function Templates 15 1.6 But, Shouldn’t We . . . ? 20 1.7 Summary 21 Chapter 2: Class Templates 23 2.1 Implementation of Class Template Stack 23 2.2 Use of Class Template Stack 27 2.3 Partial Usage of Class Templates 29 2.4 Friends 30 2.5 Specializations of Class Templates 31 2.6 Partial Specialization 33 2.7 Default Class Template Arguments 36 2.8 Type Aliases38 2.9 Class Template Argument Deduction 40 2.10 Templatized Aggregates 43 2.11 Summary 44 Chapter 3: Nontype Template Parameters 45 3.1 Nontype Class Template Parameters 45 3.2 Nontype Function Template Parameters 48 3.3 Restrictions for Nontype Template Parameters 49 3.4 Template Parameter Type auto 50 3.5 Summary 54 Chapter 4: Variadic Templates 55 4.1 Variadic Templates 55 4.2 Fold Expressions 58 4.3 Application of Variadic Templates 60 4.4 Variadic Class Templates and Variadic Expressions 61 4.5 Summary 66 Chapter 5: Tricky Basics 67 5.1 Keyword typename 67 5.2 Zero Initialization 68 5.3 Using this-> 70 5.4 Templates for Raw Arrays and String Literals 71 5.5 Member Templates 74 5.6 Variable Templates 80 5.7 Template Template Parameters 83 5.8 Summary 89 Chapter 6: Move Semantics and enable_if<> 91 6.1 Perfect Forwarding 91 6.2 Special Member Function Templates 95 6.3 Disable Templates with enable_if<> 98 6.4 Using enable_if<> 99 6.5 Using Concepts to Simplify enable_if<> Expressions 103 6.6 Summary 104 Chapter 7: By Value or by Reference? 105 7.1 Passing by Value 106 7.2 Passing by Reference 108 7.3 Using std::ref() and std::cref() 112 7.4 Dealing with String Literals and Raw Arrays 115 7.5 Dealing with Return Values 117 7.6 Recommended Template Parameter Declarations 118 7.7 Summary 121 Chapter 8: Compile-Time Programming 123 8.1 Template Metaprogramming 123 8.2 Computing with constexpr 125 8.3 Execution Path Selection with Partial Specialization 127 8.4 SFINAE (Substitution Failure Is Not An Error) 129 8.5 Compile-Time if 134 8.6 Summary 135 Chapter 9: Using Templates in Practice 137 9.1 The Inclusion Model 137 9.2 Templates and inline 140 9.3 Precompiled Headers 141 9.4 Decoding the Error Novel 143 9.5 Afternotes 149 9.6 Summary 150 Chapter 10: Basic Template Terminology 151 10.1 “Class Template” or “Template Class”? 151 10.2 Substitution, Instantiation, and Specialization 152 10.3 Declarations versus Definitions 153 10.4 The One-Definition Rule 154 10.5 Template Arguments versus Template Parameters 155 10.6 Summary 156 Chapter 11: Generic Libraries 157 11.1 Callables 157 11.2 Other Utilities to Implement Generic Libraries 164 11.3 Perfect Forwarding Temporaries 167 11.4 References as Template Parameters 167 11.5 Defer Evaluations 171 11.6 Things to Consider When Writing Generic Libraries 172 11.7 Summary 173 Part II: Templates in Depth 175 Chapter 12: Fundamentals in Depth 177 12.1 Parameterized Declarations 177 12.2 Template Parameters 185 12.3 Template Arguments 192 12.4 Variadic Templates 200 12.5 Friends 209 12.6 Afternotes 213 Chapter 13: Names in Templates 215 13.1 Name Taxonomy 215 13.2 Looking Up Names 217 13.3 Parsing Templates 224 13.4 Inheritance and Class Templates 236 13.5 Afternotes 240 Chapter 14: Instantiation 243 14.1 On-Demand Instantiation 243 14.2 Lazy Instantiation 245 14.3 The C++ Instantiation Model 249 14.4 Implementation Schemes 255 14.5 Explicit Instantiation 260 14.6 Compile-Time if Statements 263 14.7 In the Standard Library 265 14.8 Afternotes 266 Chapter 15: Template Argument Deduction 269 15.1 The Deduction Process 269 15.2 Deduced Contexts 271 15.3 Special Deduction Situations 273 15.4 Initializer Lists 274 15.5 Parameter Packs 275 15.6 Rvalue References 277 15.7 SFINAE (Substitution Failure Is Not An Error) 284 15.8 Limitations of Deduction 286 15.9 Explicit Function Template Arguments 291 15.10 Deduction from Initializers and Expressions 293 15.11 Alias Templates 312 15.12 Class Template Argument Deduction 313 15.13 Afternotes 321 Chapter 16: Specialization and Overloading 323 16.1 When “Generic Code” Doesn’t Quite Cut It 323 16.2 Overloading Function Templates 326 16.3 Explicit Specialization 338 16.4 Partial Class Template Specialization 347 16.5 Partial Variable Template Specialization 351 16.6 Afternotes 352 Chapter 17: Future Directions 353 17.1 Relaxed typename Rules 354 17.2 Generalized Nontype Template Parameters 354 17.3 Partial Specialization of Function Templates 356 17.4 Named Template Arguments 358 17.5 Overloaded Class Templates 359 17.6 Deduction for Nonfinal Pack Expansions 360 17.7 Regularization of void 361 17.8 Type Checking for Templates 361 17.9 Reflective Metaprogramming 363 17.10 Pack Facilities 365 17.11 Modules 366 Part III: Templates and Design 367 Chapter 18: The Polymorphic Power of Templates 369 18.1 Dynamic Polymorphism 369 18.2 Static Polymorphism 372 18.3 Dynamic versus Static Polymorphism 375 18.4 Using Concepts 377 18.5 New Forms of Design Patterns 379 18.6 Generic Programming 380 18.7 Afternotes 383 Chapter 19: Implementing Traits 385 19.1 An Example: Accumulating a Sequence 385 19.2 Traits versus Policies and Policy Classes 394 19.3 Type Functions 401 19.4 SFINAE-Based Traits 416 19.5 IsConvertibleT 428 19.6 Detecting Members 431 19.7 Other Traits Techniques 440 19.8 Type Classification 448 19.9 Policy Traits 458 19.10 In the Standard Library 461 19.11 Afternotes 462 Chapter 20: Overloading on Type Properties 465 20.1 Algorithm Specialization 465 20.2 Tag Dispatching 467 20.3 Enabling/Disabling Function Templates 469 20.4 Class Specialization 477 20.5 Instantiation-Safe Templates 482 20.6 In the Standard Library 487 20.7 Afternotes 488 Chapter 21: Templates and Inheritance 489 21.1 The Empty Base Class Optimization (EBCO) 489 21.2 The Curiously Recurring Template Pattern (CRTP) 495 21.3 Mixins 508 21.4 Named Template Arguments 512 21.5 Afternotes 515 Chapter 22: Bridging Static and Dynamic Polymorphism 517 22.1 Function Objects, Pointers, and std::function<> 517 22.2 Generalized Function Pointers 519 22.3 Bridge Interface 522 22.4 Type Erasure 523 22.5 Optional Bridging 525 22.6 Performance Considerations 527 22.7 Afternotes 528 Chapter 23: Metaprogramming 529 23.1 The State of Modern C++ Metaprogramming 529 23.2 The Dimensions of Reflective Metaprogramming 537 23.3 The Cost of Recursive Instantiation 539 23.4 Computational Completeness 542 23.5 Recursive Instantiation versus Recursive Template Arguments 542 23.6 Enumeration Values versus Static Constants 543 23.7 Afternotes 545 Chapter 24: Typelists 549 24.1 Anatomy of a Typelist 549 24.2 Typelist Algorithms 551 24.3 Nontype Typelists 566 24.4 Optimizing Algorithms with Pack Expansions 569 24.5 Cons-style Typelists 571 24.6 Afternotes 573 Chapter 25: Tuples 575 25.1 Basic Tuple Design 576 25.2 Basic Tuple Operations 579 25.3 Tuple Algorithms 581 25.4 Expanding Tuples 592 25.5 Optimizing Tuple 593 25.6 Tuple Subscript 599 25.7 Afternotes 601 Chapter 26: Discriminated Unions 603 26.1 Storage 604 26.2 Design 606 26.3 Value Query and Extraction 610 26.4 Element Initialization, Assignment and Destruction 611 26.5 Visitors 617 26.6 Variant Initialization and Assignment 624 26.7 Afternotes 628 Chapter 27: Expression Templates 629 27.1 Temporaries and Split Loops 630 27.2 Encoding Expressions in Template Arguments 635 27.3 Performance and Limitations of Expression Templates 646 27.4 Afternotes 647 Chapter 28: Debugging Templates 651 28.1 Shallow Instantiation 652 28.2 Static Assertions 654 28.3 Archetypes 655 28.4 Tracers 657 28.5 Oracles 662 28.6 Afternotes 662 Appendixes 663 Appendix A: The One-Definition Rule 663 A.1 Translation Units 663 A.2 Declarations and Definitions 664 A.3 The One-Definition Rule in Detail 665 Appendix B: Value Categories 673 B.1 Traditional Lvalues and Rvalues 673 B.2 Value Categories Since C++11 674 B.3 Checking Value Categories with decltype 678 B.4 Reference Types 679 Appendix C: Overload Resolution 681 C.1 When Does Overload Resolution Kick In? 681 C.2 Simplified Overload Resolution 682 C.3 Overloading Details 688 Appendix D: Standard Type Utilities 697 D.1 Using Type Traits 697 D.2 Primary and Composite Type Categories 702 D.3 Type Properties and Operations 709 D.4 Type Construction 728 D.5 Other Traits 732 D.6 Combining Type Traits 734 D.7 Other Utilities 737 Appendix E: Concepts 739 E.1 Using Concepts 739 E.2 Defining Concepts 742 E.3 Overloading on Constraints 743 E.4 Concept Tips 746 Bibliography 749 Glossary 759 Index 771
£53.54
O'Reilly Media 21st Century C
Book SynopsisThrow out your old ideas of C, and relearn a programming language that's substantially outgrown its origins. With this revised edition of 21st Century C, you'll discover up-to-date techniques missing from other C tutorials, whether you're new to the language or just getting reacquainted.
£29.99
Microsoft Press,U.S. Adaptive Code: Agile coding with design patterns
Book SynopsisWrite code that can adapt to changes. By applying this book’s principles, you can create code that accommodates new requirements and unforeseen scenarios without significant rewrites. Gary McLean Hall describes Agile best practices, principles, and patterns for designing and writing code that can evolve more quickly and easily, with fewer errors, because it doesn’t impede change. Now revised, updated, and expanded, Adaptive Code, Second Edition adds indispensable practical insights on Kanban, dependency inversion, and creating reusable abstractions. Drawing on over a decade of Agile consulting and development experience, McLean Hall has updated his best-seller with deeper coverage of unit testing, refactoring, pure dependency injection, and more. Master powerful new ways to: • Write code that enables and complements Scrum, Kanban, or any other Agile framework • Develop code that can survive major changes in requirements • Plan for adaptability by using dependencies, layering, interfaces, and design patterns • Perform unit testing and refactoring in tandem, gaining more value from both • Use the “golden master” technique to make legacy code adaptive • Build SOLID code with single-responsibility, open/closed, and Liskov substitution principles • Create smaller interfaces to support more-diverse client and architectural needs • Leverage dependency injection best practices to improve code adaptability • Apply dependency inversion with the Stairway pattern, and avoid related anti-patterns About You This book is for programmers of all skill levels seeking more-practical insight into design patterns, SOLID principles, unit testing, refactoring, and related topics. Most readers will have programmed in C#, Java, C++, or similar object-oriented languages, and will be familiar with core procedural programming techniques.Table of Contents Chapter 1 Introduction to Scrum Chapter 2 Introduction to Kanban Chapter 3 Dependencies and layering Chapter 4 Interfaces and design patterns Chapter 5 Testing Chapter 6 Refactoring Chapter 7 The single responsibility principle Chapter 8 The open/closed principle Chapter 9 The Liskov substitution principle Chapter 10 Interface segregation Chapter 11 Dependency inversion Chapter 12 Dependency injection Chapter 13 Coupling, cohesion, and connascence
£33.29
O'Reilly Media Think Bayes
Book SynopsisIf you know how to program, you're ready to tackle Bayesian statistics. With this book, you'll learn how to solve statistical problems with Python code instead of mathematical formulas, using discrete probability distributions rather than continuous mathematics.
£33.74
O'Reilly Media Practical C Programming 2e
Book SynopsisA complete introduction to C++ is provided for the beginning programmer in this guide. It is also suitable for C programmers migrating to C++, emphasising a practical approach including how to understand other people's code.Trade Review"When I picked up Practical C++ I was very skeptical, I've read numerous books aimed at beginner/intermediate readers and very few of them left any lasting impression on me. This book however, did! It's an excellent book, and it feels like it's written by a programmer and not an academic as most tend to. Not only are you going to learn about C++ in the easiest way possible, you're going to learn a lot of tips from someone who's been developing in C++ a long time. ... But I can't say enough good things about this book, it covers a lot more than C++, and it has a whole chapter on program design. This book is all you need to get started with C++. The title says Practical C++ and I'd say it's very practical. Highly recommended." - Peter Waller, news@UKTable of ContentsPreface Part I. The Basics 1. What Is C++? A Brief History of C++ C++ Organization How to Learn C++ 2. The Basics of Program Writing Programs from Conception to Execution Creating a Real Program Getting Help in Unix Getting Help in an IDE Programming Exercises 3. Style Comments C++ Code Naming Style Coding Religion Indentation and Code Format Clarity Simplicity Consistency and Organization Further Reading Summary 4. Basic Declarations and Expressions Basic Program Structure Simple Expressions The std::cout Output Object Variables and Storage Variable Declarations Assignment Statements Floating-Point Numbers Floating-Point Divide Versus Integer Divide Characters Wide Characters Boolean Type Programming Exercises Answers to Chapter Questions 5. Arrays, Qualifiers, and Reading Numbers Arrays Strings Reading Data Initializing Variables Multidimensional Arrays C-Style Strings Types of Integers Types of Floats Constant and Reference Declarations Qualifiers Hexadecimal and Octal Constants Operators for Performing Shortcuts Side Effects Programming Exercises Answers to Chapter Questions 6. Decision and Control Statements if Statement else Statement How Not to Use std::strcmp Looping Statements while Statement break Statement continue Statement The Assignment Anywhere Side Effect Programming Exercises Answers to Chapter Questions 7. The Programming Process Setting Up Your Work Area The Specification Code Design The Prototype The Makefile Testing Debugging Maintenance Revisions Electronic Archaeology Mark Up the Program Use the Debugger Use the Text Editor as a Browser Add Comments Programming Exercises Part II. Simple Programming 8. More Control Statements for Statement switch Statement switch, break, and continue Programming Exercises Answers to Chapter Questions 9. Variable Scope and Functions Scope and Storage Class Namespaces Functions Summary of Parameter Types Recursion Structured Programming Basics Real-World Programming Programming Exercises Answers to Chapter Questions 10. The C++ Preprocessor define Statement Conditional Compilation include Files Parameterized Macros Advanced Features Summary Programming Exercises Answers to Chapter Questions 11. Bit Operations Bit Operators The AND Operator (&) Bitwise OR (|) The Bitwise Exclusive OR (^) The Ones Complement Operator (NOT) (~) The Left and Right Shift Operators (<<, >>) Setting, Clearing, and Testing Bits Bitmapped Graphics Programming Exercises Answers to Chapter Questions Part III. Advanced Types and Classes 12. Advanced Types Structures Unions typedef enum Type Bit Members or Packed Structures Arrays of Structures Programming Exercises Answers to Chapter Questions 13. Simple Classes Stacks Improved Stack Using a Class Introduction to Constructors and Destructors Automatically Generated Member Functions Shortcuts Style Structures Versus Classes Programming Exercises 14. More on Classes Friends Constant Functions Constant Members Static Member Variables Static Member Functions The Meaning of static Programming Exercises 15. Simple Pointers const Pointers Pointers and Printing Pointers and Arrays The reinterpret_cast Pointers and Structures Command-Line Arguments Programming Exercises Answers to Chapter Questions Part IV. Advanced Programming Concepts 16. File Input/Output C++ File I/O Conversion Routines Binary and ASCII Files The End-of-Line Puzzle Binary I/O Buffering Problems Unbuffered I/O Designing File Formats C-Style I/O Routines C-Style Conversion Routines C-Style Binary I/O C- Versus C++- Style I/O Programming Exercises Answers to Chapter Questions 17. Debugging and Optimization Code Reviews Serial Debugging Going Through the Output Interactive Debuggers Debugging a Binary Search Interactive Debugging Tips and Tricks Runtime Errors Optimization How to Optimize Case Study: Inline Functions Versus Normal Functions Case Study: Optimizing a Color-Rendering Algorithm Programming Exercises Answers to Chapter Questions 18. Operator Overloading Creating a Simple Fixed-Point Class Operator Functions Operator Member Functions Warts Full Definition of the Fixed-Point Class Programming Exercises Answers to Chapter Questions 19. Floating Point Floating-Point Format Floating Addition/Subtraction Multiplication and Division Overflow and Underflow Roundoff Error Accuracy Minimizing Roundoff Error Determining Accuracy Precision and Speed Power Series Programming Exercises 20. Advanced Pointers Pointers, Structures, and Classes delete Operator Linked Lists Ordered Linked Lists Doubly Linked Lists Trees Printing a Tree The Rest of the Program Data Structures for a Chess Program Programming Exercises Answers to Chapter Questions 21. Advanced Classes Derived Classes Virtual Functions Virtual Classes Function Hiding in Derived Classes Constructors and Destructors in Derived Classes The dynamic_cast Operator Summary Programming Exercises Answers to Chapter Questions Part V. Other Language Features 22. Exceptions Adding Exceptions to the Stack Class Exceptions Versus assert Programming Exercises 23. Modular Programming Modules Public and Private The extern Storage Class Headers The Body of the Module A Program to Use Infinite Arrays The Makefile for Multiple Files Using the Infinite Array Dividing a Task into Modules Module Design Guidelines Programming Exercises 24. Templates What Is a Template? Templates: The Hard Way Templates: The C++ Way Function Specialization Class Templates Class Specialization Implementation Details Advanced Features Summary Programming Exercises 25. Standard Template Library STL Basics Class List-A Set of Students Creating a Waiting List with the STL List Storing Grades in a STL Map Putting It All Together Practical Considerations When Using the STL Getting More Information Exercises 26. Program Design Design Goals Design Factors Design Principles Coding Objects Real-World Design echniques Conclusion 27. Putting It All Together Requirements Code Design Coding Functional Description Testing Revisions A Final Warning Program Files Programming Exercises 28. From C to C++ K&R-Style Functions struct malloc and free Turning Structures into Classes setjmp and longjmp Mixing C and C++ Code Summary Programming Exercise 29. C++'s Dustier Corners do/while goto The ? : Construct The Comma Operator Overloading the ( ) Operator Pointers to Members The asm Statement The mutable Qualifier Run Time Type Identification Trigraphs Answers to Chapter Questions 30. Programming Adages General Design Declarations switch Statement Preprocessor Style Compiling The Ten Commandments for C++ Programmers Final Note Answers to Chapter Questions Part VI. Appendixes A. ASCII Table B. Ranges C. Operator Precedence Rules D. Computing Sine Using a Power Series E. Resources Index
£31.99
Pearson Education Core Java Volume I
Book SynopsisCay S. Horstmann is the author of Modern JavaScript for the Impatient (2020), Core Java for the Impatient, Third Edition (2022), Scala for the Impatient, Second Edition (2016), and Java SE 8 for the Really Impatient (2014), all from Addison-Wesley. He has written more than a dozen other books for professional programmers and computer science students. He is an emeritus professor of computer science at San Jose State University and a Java Champion.
£43.19