This textbook explains the concepts and techniques required to write programs that can handle large amounts of data efficiently. Project-oriented and classroom-tested, the book presents a number of important algorithms supported by examples that bring meaning to the problems faced by computer programmers. The idea of computational complexity is also introduced, demonstrating what can and cannot be computed efficiently so that the programmer can make informed judgements about the algorithms they use. Features: includes both introductory and advanced data structures and algorithms topics, with suggested chapter sequences for those respective courses provided in the preface; provides learning goals, review questions and programming exercises in each chapter, as well as numerous illustrative examples; offers downloadable programs and supplementary files at an associated website, with instructor materials available from the author; presents a primer on Python for those from a different language background.
This book is the first to present a rich selection of over 30 real-world cases of how leading organizations conduct Business Process Management (BPM). The cases stem from a diverse set of industry sectors and countries on different continents, reporting on best practices and lessons learned. The book showcases how BPM can contribute to both exploitation and exploration in a digital world. All cases are presented using a uniform structure in order to provide valuable insights and essential guidance for students and practitioners.
This fourth Edition presents new examples on submodules, derived type i/o, object oriented programming, abstract interfaces and procedure pointers, C interop, sorting and searching, statistics and converting to more modern versions of Fortran. Key Features Highlights the core language features of modern Fortran including data typing, array processing, control structures, functions, subroutines, modules and submodules, user defined types, pointers, operator overloading, generic programming, parallel programming, abstract interfaces, procedure pointers Pinpoints common problems that occur when programming Illustrates the use of several compilers Introduction to Programming with Fortran has been written for the complete beginner with little or no programming background as well as existing Fortran programmers and those with programming experience in other languages
John Vince describes a range of mathematical topics to provide a foundation for an undergraduate course in computer science, starting with a review of number systems and their relevance to digital computers, and finishing with differential and integral calculus. Readers will find that the author´s visual approach will greatly improve their understanding as to why certain mathematical structures exist, together with how they are used in real-world applications. Each chapter includes full-colour illustrations to clarify the mathematical descriptions, and in some cases, equations are also coloured to reveal vital algebraic patterns. The numerous worked examples will consolidate comprehension of abstract mathematical concepts. Foundation Mathematics for Computer Science covers number systems, algebra, logic, trigonometry, coordinate systems, determinants, vectors, matrices, geometric matrix transforms, differential and integral calculus, and reveals the names of the mathematicians behind such inventions. During this journey, John Vince touches upon more esoteric topics such as quaternions, octonions, Grassmann algebra, Barycentric coordinates, transfinite sets and prime numbers. Whether you intend to pursue a career in programming, scientific visualisation, systems design, or real-time computing, you should find the author´s literary style refreshingly lucid and engaging, and prepare you for more advanced texts.
O´Reilly´s bestselling book on Linux´s bash shell is at it again. Now that Linux is an established player both as a server and on the desktop Learning the bash Shell has been updated and refreshed to account for all the latest changes. Indeed, this third edition serves as the most valuable guide yet to the bash shell. As any good programmer knows, the first thing users of the Linux operating system come face to face with is the shell the UNIX term for a user interface to the system. In other words, it´s what lets you communicate with the computer via the keyboard and display. Mastering the bash shell might sound fairly simple but it isn´t. In truth, there are many complexities that need careful explanation, which is just what Learning the bash Shell provides. If you are new to shell programming, the book provides an excellent introduction, covering everything from the most basic to the most advanced features. And if you´ve been writing shell scripts for years, it offers a great way to find out what the new shell offers. Learning the bash Shell is also full of practical examples of shell commands and programs that will make everyday use of Linux that much easier. With this book, programmers will learn: - How to install bash as your login shell - The basics of interactive shell use, including UNIX file and directory structures, standard I/O, and background jobs - Command line editing, history substitution, and key bindings - How to customize your shell environment without programming - The nuts and bolts of basic shell programming, flow control structures, command-line options and typed variables - Process handling, from job control to processes, coroutines and subshells - Debugging techniques, such as trace and verbose modes - Techniques for implementing system-wide shell customization and features related to system security
Turing´s famous 1936 paper introduced a formal definition of a computing machine, a Turing machine. This model led to both the development of actual computers and to computability theory, the study of what machines can and cannot compute. This book presents classical computability theory from Turing and Post to current results and methods, and their use in studying the information content of algebraic structures, models, and their relation to Peano arithmetic. The author presents the subject as an art to be practiced, and an art in the aesthetic sense of inherent beauty which all mathematicians recognize in their subject. Part I gives a thorough development of the foundations of computability, from the definition of Turing machines up to finite injury priority arguments. Key topics include relative computability, and computably enumerable sets, those which can be effectively listed but not necessarily effectively decided, such as the theorems of Peano arithmetic. Part II includes the study of computably open and closed sets of reals and basis and nonbasis theorems for effectively closed sets. Part III covers minimal Turing degrees. Part IV is an introduction to games and their use in proving theorems. Finally, Part V offers a short history of computability theory. The author has honed the content over decades according to feedback from students, lecturers, and researchers around the world. Most chapters include exercises, and the material is carefully structured according to importance and difficulty. The book is suitable for advanced undergraduate and graduate students in computer science and mathematics and researchers engaged with computability and mathematical logic.
Build a microservices architecture with Spring Boot, by evolving an application from a small monolith to an event-driven architecture composed of several services. This book follows an incremental approach to teach microservice structure, test-driven development, Eureka, Ribbon, Zuul, and end-to-end tests with Cucumber. Author Moises Macero follows a very pragmatic approach to explain the benefits of using this type of software architecture, instead of keeping you distracted with theoretical concepts. He covers some of the state-of-the-art techniques in computer programming, from a practical point of view. You´ll focus on what´s important, starting with the minimum viable product but keeping the flexibility to evolve it. What You´ll Learn Build microservices with Spring Boot Use event-driven architecture and messaging with RabbitMQ Create RESTful services with Spring Master service discovery with Eureka and load balancing with Ribbon Route requests with Zuul as your API gateway Write end-to-end rests for an event-driven architecture using Cucumber Carry out continuous integration and deployment Who This Book Is For Those with at least some prior experience with Java programming. Some prior exposure to Spring Boot recommended but not required.
An indispensable collection of practical tips and real-world advice for tackling common Python problems and taking your code to the next level. Features interviews with high-profile Python developers who share their tips, tricks, best practices, and real-world advice gleaned from years of experience. Sharpen your Python skills as you dive deep into the Python programming language with Serious Python. You´ll cover a range of advanced topics like multithreading and memorization, get advice from experts on things like designing APIs and dealing with databases, and learn Python internals to help you gain a deeper understanding of the language itself. Written for developers and experienced programmers, Serious Python brings together over 15 years of Python experience to teach you how to avoid common mistakes, write code more efficiently, and build better programs in less time. As you make your way through the book´s extensive tutorials, you´ll learn how to start a project and tackle topics like versioning, layouts, coding style, and automated checks. You´ll learn how to package your software for distribution, optimize performance, use the right data structures, define functions efficiently, pick the right libraries, build future-proof programs, and optimize your programs down to the bytecode. You´ll also learn how to: - Make and use effective decorators and methods, including abstract, static, and class methods - Employ Python for functional programming using generators, pure functions, and functional functions - Extend flake8 to work with the abstract syntax tree (AST) to introduce more sophisticated automatic checks into your programs - Apply dynamic performance analysis to identify bottlenecks in your code - Work with relational databases and effectively manage and stream data with PostgreSQL If you´ve been looking for a way to take your Python skills from good to great, Serious Python will help you get there. Learn from the experts and get seriously good at Python with Serious Python!
Work with blockchain and understand its potential application beyond cryptocurrencies in the domains of healthcare, Internet of Things, finance, decentralized organizations, and open science. Featuring case studies and practical insights generated from a start-up spun off from the author´s own lab, this book covers a unique mix of topics not found in others and offers insight into how to overcome real hurdles that arise as the market and consumers grow accustomed to blockchain based start-ups. You´ll start with a review of the historical origins of blockchain and explore the basic cryptography needed to make the blockchain work for Bitcoin. You will then learn about the technical advancements made in the surrounded ecosystem: the Ethereum virtual machine, Solidity, Colored Coins, the Hyperledger Project, Blockchain-as-a-service offered through IBM, Microsoft and more. This book looks at the consequences of machine-to-machine transactions using the blockchain socially, technologically, economically and politically. Blockchain Enabled Applications provides you with a clear perspective of the ecosystem that has developed around the blockchain and the various industries it has penetrated. What You´ll Learn Implement the code-base from Fabric and Sawtooth, two open source blockchain-efforts being developed under the Hyperledger Project Evaluate the benefits of integrating blockchain with emerging technologies, such as machine learning and artificial intelligence in the cloud Use the practical insights provided by the case studies to your own projects or start-up ideas Set up a development environment to compile and manage projects Who This Book Is For Developers who are interested in learning about the blockchain as a data-structure, the recent advancements being made and how to implement the code-base. Decision makers within large corporations (product managers, directors or CIO level executives) interested in implementing the blockchain who need more practical insights and not just theory.
Build mobile apps that specifically target your company´s unique business needs, with the same ease of writing a simple spreadsheet! With this book, you will build business apps designed to work with your company´s systems and databases, without having to enlist the expertise of costly, professionally trained software developers. In Beginning PowerApps, author and business applications expert Tim Leung guides you step-by-step through the process of building your own mobile app. He assumes no technical background, although if you have worked with Excel, you are one step closer. He guides you through scenarios, such as what to do if you have existing databases with complex data structures and how to write screens that can connect to those data. You will come away with an understanding of how to set up screen navigation, manipulate data from within apps, and write solutions to perform specific tasks. What You´ll Learn Connect with data Write formulas Visualize your data through charts Work with global positioning systems (GPS) Build flows Import and export data Manage offline scenarios Develop custom application programming interfaces (API) Who This Book Is For Beginners and non-developers, and assumes no prior knowledge of PowerApps