Software Engineering for Robotics
The topics covered in this book range from modeling and programming languages and environments, via approaches for design and verification, to issues of ethics and regulation. In terms of techniques, there are results on model-based engineering, product lines, mission specification, component-based development, simulation, testing, and proof. Applications range from manufacturing to service robots, to autonomous vehicles, and even robots than evolve in the real world. A final chapter summarizes issues on ethics and regulation based on discussions from a panel of experts. The origin of this book is a two-day event, entitled RoboSoft, that took place in November 2019, in London. Organized with the generous support of the Royal Academy of Engineering and the University of York, UK, RoboSoft brought together more than 100 scientists, engineers and practitioners from all over the world, representing 70 international institutions. Theintended readership includes researchers and practitioners with all levels of experience interested in working in the area of robotics, and software engineering more generally. The chapters are all self-contained, include explanations of the core concepts, and finish with a discussion of directions for further work.Chapters 'Towards Autonomous Robot Evolution', 'Composition, Separation of Roles and Model-Driven Approaches as Enabler of a Robotics Software Ecosystem' and 'Verifiable Autonomy and Responsible Robotics' are available open access under a Creative Commons Attribution 4.0 International License via link.springer.com.
Theoretical Aspects of Software Engineering
This book constitutes the proceedings of the 16th International Conference on Theoretical Aspects of Software Engineering, TASE 2022, held in Cluj-Napoca, Romania, July 2022. The 21 full regular papers presented together with 5 short papers in this book were carefully reviewed and selected from 71 submissions. The topics of the papers covering various fields in software engineering and the latest developments in in formal and theoretical software engineering methods and techniques.
You Belong In Tech
You belong in tech.Even if you don't look like the hackers in the movies.Even if you don't have a degree.Even if you've had three careers before.In 2020, opera singer and new mother Anna McDougall realised she needed a change. She had tried coding as a kid and was excited about a technological future, but couldn't help but wonder "If I try learning this now, will I be laughed out of the room?".Since then, Anna has not only forged her own career in software engineering, but has also helped hundreds of career changers find their way into tech. Now, she distils all her best advice and insight into one book, designed to take you from zero knowledge or experience through to signing a contract for your first tech job.This is not a motivational quote book: it is a jam-packed, super-practical guide with step-by-step instructions for learning the skills, standing out from the crowd, and nailing the interview process.Chapter titles include: What Skills, Tools, or Programming Languages Should You Learn?How Can I Learn Programming Given My Life Circumstances?The (Mostly) Unwritten Rules of Coding CommunitiesSocial Media Profiles: Dos and Don'tsMentoring and Coaching'How Do I Know I'm Ready?' Mental Preparation for the Job SearchCreating an Application Kit (CV, Cover Letter, Portfolio)Understanding the Classic Job Interview Stages for Tech... and much more!
Linux Kernel Debugging
Effectively debug kernel modules, device drivers, and the kernel itself by gaining a solid understanding of powerful open source tools and advanced kernel debugging techniquesKey Features- Fully understand how to use a variety of kernel and module debugging tools and techniques using examples- Learn to expertly interpret a kernel Oops and identify underlying defect(s)- Use easy-to-look up tables and clear explanations of kernel-level defects to make this complex topic easyBook DescriptionThe Linux kernel is at the very core of arguably the world's best production-quality OS. Debugging it, though, can be a complex endeavor.Linux Kernel Debugging is a comprehensive guide to learning all about advanced kernel debugging. This book covers many areas in-depth, such as instrumentation-based debugging techniques (printk and the dynamic debug framework), and shows you how to use Kprobes. Memory-related bugs tend to be a nightmare - two chapters are packed with tools and techniques devoted to debugging them. When the kernel gifts you an Oops, how exactly do you interpret it to be able to debug the underlying issue? We've got you covered. Concurrency tends to be an inherently complex topic, so a chapter on lock debugging will help you to learn precisely what data races are, including using KCSAN to detect them. Some thorny issues, both debug- and performance-wise, require detailed kernel-level tracing; you'll learn to wield the impressive power of Ftrace and its frontends. You'll also discover how to handle kernel lockups, hangs, and the dreaded kernel panic, as well as leverage the venerable GDB tool within the kernel (KGDB), along with much more.By the end of this book, you will have at your disposal a wide range of powerful kernel debugging tools and techniques, along with a keen sense of when to use which.What You Will Learn- Explore instrumentation-based printk along with the powerful dynamic debug framework- Use static and dynamic Kprobes to trap into kernel/module functions- Catch kernel memory defects with KASAN, UBSAN, SLUB debug, and kmemleak- Interpret an Oops in depth and precisely identify it s source location- Understand data races and use KCSAN to catch evasive concurrency defects- Leverage Ftrace and trace-cmd to trace the kernel flow in great detail- Write a custom kernel panic handler and detect kernel lockups and hangs- Use KGDB to single-step and debug kernel/module source codeWho this book is forThis book is for Linux kernel developers, module/driver authors, and testers interested in debugging and enhancing their Linux systems at the level of the kernel. System administrators who want to understand and debug the internal infrastructure of their Linux kernels will also find this book useful. A good grasp on C programming and the Linux command line is necessary. Some experience with kernel (module) development will help you follow along.Table of Contents- A General Introduction to Debugging Software- Approaches to Kernel Debugging- Debug via Instrumentation - printk and Friends- Debug via Instrumentation - Kprobes- Debugging Kernel Memory Issues - Part 1- Debugging Kernel Memory Issues - Part 2- Oops! Interpreting the Kernel Bug Diagnostic- Lock Debugging- Tracing the Kernel Flow- Kernel Panic, Lockups, and Hangs- Using Kernel GDB (KGDB)- A Few More Kernel Debugging Approaches
Hands-On Visual Studio 2022
Learn to design, develop, debug, and deploy technologies by harnessing the full power of Visual Studio 2022 by discovering its new features and exclusive techniquesKey Features: - Discover solutions to common problems faced while using Visual Studio 2022- Explore tips, tricks, and best practices and discover ways to overcome source-code challenges- Deep dive into Visual Studio's new features and unleash its potential to enhance your coding journeyBook Description: Visual Studio 2022 is the complete and ideal integrated development environment (IDE) for creating large, complex, and scalable applications. It is one of the most complete tools available for development, especially with Microsoft technologies.This book will teach you how to take advantage of the tools available with this IDE to write clean code faster. You'll begin by learning how to set up and start Visual Studio 2022 and how to use all the tools provided by this IDE. You will then explore key combinations, tips, and additional utilities that can help you to code faster and review your code constantly. Next, you will see how to compile, debug, and inspect your project to analyze its current behavior using Visual Studio. The book also shows you how to insert reusable blocks of code writing simple statements. Later, you will learn about visual aids and artificial intelligence that will help you improve productivity and understand what is going on in the project.By the end of this book, you will be able to set up your development environment using Visual Studio 2022, personalize the tools and layout, and use shortcuts and extensions to improve your productivity.What You Will Learn: - Understand what s new in Visual Studio 2022- Discover the various code tools to improve productivity- Explore the benefits of using .NET 6 in Visual Studio 2022- Perform compilation, debugging, and version control comfortably- Become well-versed with various shortcuts, tricks, tips, and tools to improve productivity within Visual Studio 2022- Implement remote and collaborative work with Visual Studio 2022Who this book is for: This book is for .NET software developers focusing on web development and web developers who want to learn about the new features, tools, and features available in Visual Studio 2022. Basic knowledge of HTML, CSS, and JavaScript or frameworks such as React and Angular is assumed.Table of Contents- Getting Started with Visual Studio 2022- Configuring the IDE- Improvements in Visual Studio 2022- Creating Projects and Templates- Debugging and Compiling Your Projects- Adding Code Snippets- Coding Efficiently with AI and Code Views- Web Tools and Hot Reload- Styling and Clean up Tools- Publishing Projects- Implementing Git Integration- Sharing Code with Live Share- Working with Extensions in Visual Studio- Using Popular Extensions- Learning Keyboard Shortcuts
Integrated Formal Methods
This book constitutes the refereed proceedings of the 17th International Conference on Integrated Formal Methods, IFM 2022, held in Lugano, Switzerland, in June 2022. The 14 full papers and 2 short papers were carefully reviewed and selected from 46 submissions. The papers are categorized into the following topical sub-headings: Invited Papers; Cooperative and Relational Verification; B Method; Time; Probability; learning and Synthesis; Security; Stats Analysis and Testing; PhD Symposium Presentations.
Structural Information and Communication Complexity
This book constitutes the refereed conference proceedings of the 29th International Colloquium on Structural Information and Communication Complexity, SIROCCO 2022, held in Paderborn, Germany, in June 2022. The 16 full papers presented in this book were carefully reviewed and selected from 30 submissions. SIROCCO is devoted to the study of the interplay between structural knowledge, communication, and computing in decentralized systems of multiple communicating entities. Special emphasis is given to innovative approaches leading to better understanding of the relationship between computing and communication.
Formal Techniques for Distributed Objects, Components, and Systems
This book constitutes the refereed proceedings of the 42nd IFIP WG 6.1 International Conference on Formal Techniques for Distributed Objects, Components, and Systems, FORTE 2022, held in Lucca, Italy, in June 2022, as part of the 17th International Federated Conference on Distributed Computing Techniques, DisCoTec 2022.The 12 regular papers presented were carefully reviewed and selected from 28 submissions. They cover topics such as: software quality, reliability, availability, and safety; security, privacy, and trust in distributed and/or communicating systems; service-oriented, ubiquitous, and cloud computing systems; component-and model-based design; object technology, modularity, and software adaptation; self-stabilisation and self-healing/organising; and verification, validation, formal analysis, and testing of the above.
The Logic of Software. a Tasting Menu of Formal Methods
This Festschrift, dedicated to Reiner H瓣hnle on the occasion of his 60th birthday, contains papers written by many of his closest collaborators.After positions at Karlsruhe Institute of Technology and Chalmers University of Technology, since 2011 Reiner has been the chaired professor of Software Engineering at Technische Universit瓣t Darmstadt, where his team focuses on the formal verification of object-oriented software, the formal modeling and specification of highly adaptive software systems, and formal modeling and analysis in domains such as biological systems and railroad operations. His work is characterized by achievements in theory and in practical implementations, significant collaborations include the KeY project and the development of the ABS language. He has served as chair and editor of important related academic conferences, and coauthored almost 200 academic publications. The contributions in this volume reflect Reiner's main research focus: formal methods, in particular applied to software verification.
Reuse and Software Quality
This book constitutes the proceedings of the 20th International Conference on Software and Systems Reuse, ICSR 2022, held in Montpellier, France in June 2022. The 7 full papers and 2 short papers included in this book were carefully reviewed and selected from 29 submissions. The papers were organized in topical sections named: Code Recommendations and Ruse; Learning and Reuse; Evolution and Reuse; Quality, Longevity and Reuse.
Iot-Enabled Unobtrusive Surveillance Systems for Smart Campus Safety
IoT-enabled Unobtrusive Surveillance Systems for Smart Campus Safety Enables readers to understand a broad area of state-of-the-art research in physical IoT-enabled security IoT-enabled Unobtrusive Surveillance Systems for Smart Campus Safety describes new techniques in unobtrusive surveillance that enable people to act and communicate freely, while at the same time protecting them from malevolent behavior. It begins by characterizing the latest on surveillance systems deployed at smart campuses, miniatures of smart cities with more demanding frameworks that enable learning, social interaction, and creativity, and by performing a comparative assessment in the area of unobtrusive surveillance systems for smart campuses. A proposed taxonomy for IoT-enabled smart campus unfolds in five research dimensions: (1) physical infrastructure; (2) enabling technologies; (3) software analytics; (4) system security; and (5) research methodology. By applying this taxonomy and by adopting a weighted scoring model on the surveyed systems, the book presents the state of the art and then makes a comparative assessment to classify the systems. Finally, the book extracts valuable conclusions and inferences from this classification, providing insights and directions towards required services offered by unobtrusive surveillance systems for smart campuses. IoT-enabled Unobtrusive Surveillance Systems for Smart Campus Safety includes specific discussion of: Smart campus's prior work taxonomies and classifications, a proposed taxonomy, and an adopted weight scoring model Personal consumer benefits and potential social dilemmas encountered when adopting an unobtrusive surveillance system Systems that focus on smart buildings, public spaces, smart lighting and smart traffic lights, smart labs, and smart campus ambient intelligence A case study of a spatiotemporal authentication unobtrusive surveillance system for smart campus safety and emerging issues for further research directions IoT-enabled Unobtrusive Surveillance Systems for Smart Campus Safety is an essential resource for computer science and engineering academics, professionals, and every individual who is working and doing research in the area of unobtrusive surveillance systems and physical security to face malevolent behavior in smart campuses.
A Programmer’s Introduction to Windows DNA
A table of contents is not available for this title.
Cracking C Programming Interview
Develop strong understanding of C principles through popular challenges and solutionsKey FeaturesExtensive coverage of C principles and its applications with a thorough explanation.Includes 500+ interview questions on C data structures, arrays, with detailed solutions.Perfect for campus interviews and GATE, ISRO, and BARC career exams.Description"Cracking C Programming Interview" gives aspiring programmers and job seekers every opportunity to prepare for and succeed in competitive interviews with companies that work in the technology industry. This book provides the most comprehensive information available on solutions and coding scenario examples for you to practice with. Furthermore, the book includes hundreds of difficult programming tasks and coding situations.This book ensures that applicable C programming principles, and the suitable selection of data structures are applied in every question, and problem statement presented. By assisting you in strengthening your programming principles and most competitive interview questions, this book keeps the potential to serve as a doorway to major technology incubators such as Amazon, Facebook, Google, VMware, and Microsoft.What you will learnUnleash answers to extensive C programming questions interviewed in technology companies.Range of scenarios and examples to explore programming strategies.Learn to distinguish among compile, link, and load time errors.Understand procedural programming and the memory layout of a running C program.Using examples, learn about structs, pointers, arrays, strings, etc.Who this book is forThis book targets aspiring programmers, job seekers, recent IT grads, and professional developers who want to brush up on their knowledge of C fundamentals through questions and problems and expert solutions.Table of Contents1. A Touch to C2. Group-1 Questions and Explanations3. Group-2 Questions and Explanations4. Group-3 Questions and Explanations5. Group-4 Questions and Explanations6. Group-5 Questions and Explanations7. Group-6 Questions and Explanations8. Group-7 Questions and Explanations9. Sample PapersRead more
Agile Processes in Software Engineering and Extreme Programming
This open access book constitutes the proceedings of the 23rd International Conference on Agile Software Development, XP 2022, which was held in Copenhagen, Denmark, in June 2022. XP is the premier agile software development conference combining research and practice. It is a unique forum where agile researchers, practitioners, thought leaders, coaches, and trainers get together to present and discuss their most recent innovations, research results, experiences, concerns, challenges, and trends. XP conferences provide an informal environment to learn and trigger discussions and welcome both people new to agile and seasoned agile practitioners. This year's conference was held with the theme "Agile in the Era of Hybrid Work". The 13 full papers and 1 short paper presented in this volume were carefully reviewed and selected from 40 submissions. They were organized in topical sections named: agile practices; agile processes; and agile in the large.
Programming in Two Semesters
This highly accessible textbook teaches programming from first principles. In common with many programming courses, it uses Python as the introductory programming language before going on to use Java as the vehicle for more advanced programming concepts. The first part, which teaches Python, covers fundamental programming concepts, such as data types and control structures and functions. It introduces more complex data types such as lists and dictionaries and also deals with file handling. It introduces object-oriented concepts and ends with a case study bringing together all the topics of the first semester. The second part uses Java to teach advanced concepts and centres around object-oriented programming, teaching key object-oriented concepts such as inheritance and polymorphism. The semester again ends with an advanced case study bringing together all the topics of the second semester. Topics and features: Assumes no prior knowledge, and makes the transition from Python to Java a smooth process Features numerous exercises and also an illustrative case study for each language Examines procedural and object-oriented methodologies, as well as design principles Covers such advanced topics as interfaces and lambda expressions, exceptions and Collections Includes a chapter on graphics programming in Python using Tkinter Introduces the latest Java technology for graphical interfaces, JavaFX Explains design concepts using UML notation Offering a gentle introduction to the field and assuming no prerequisite background, Programming in Two Semesters is the ideal companion to undergraduate modules in software development or programming. In addition, it will serve as a strong primer for professionals looking to strengthen their knowledge of programming with these languages.
Requirements Engineering for Software and Systems
Solid requirements engineering has increasingly been recognized as the key to improved, on-time, and on-budget delivery of software and systems projects. New software tools are emerging that are empowering practicing engineers to improve their requirements engineering habits. However, these tools are not usually easy to use without significant training. Requirements Engineering for Software and Systems, Fourth Edition is intended to provide a comprehensive treatment of the theoretical and practical aspects of discovering, analyzing, modeling, validating, testing, and writing requirements for systems of all kinds, with an intentional focus on software-intensive systems. It brings into play a variety of formal methods, social models, and modern requirements writing techniques to be useful to practicing engineers. The book is intended for professional software engineers, systems engineers, and senior and graduate students of software or systems engineering. Since the first edition, there have been made many changes and improvements to this textbook. Feedback from instructors, students, and corporate users was used to correct, expand, and improve the materials. The fourth edition features two newly added chapters: "On Non-Functional Requirements" and "Requirements Engineering: Road Map to the Future." The latter provides a discussion on the relationship between requirements engineering and such emerging and disruptive technologies as Internet of Things, Cloud Computing, Blockchain, Artificial Intelligence, and Affective Computing. All chapters of the book were significantly expanded with new materials that keep the book relevant to current industrial practices. Readers will find expanded discussions on new elicitation techniques, agile approaches (e.g., Kanpan, SAFe, and DEVOps), requirements tools, requirements representation, risk management approaches, and functional size measurement methods. The fourth edition also has significant additions of vignettes, exercises, and references. Another new feature is scannable QR codes linked to sites containing updates, tools, videos, and discussion forums to keep readers current with the dynamic field of requirements engineering.
Swift Recipes for IOS Developers
Boost your iOS developer career by learning from real-life examples and start writing code for one of the most successful platforms ever. No matter if you're an experienced developer or just a beginner, you'll find something new and something useful for your future projects here. All of the recipes in this book are taken from real-life commercial projects that have been approved by Apple and published on the App Store. You won't write "Hello, world!" and similar programs. Instead you'll see how to parse different data formats; run JavaScript code right inside your iOS app; and enhance storyboard editor with several simple extensions. You'll make beautiful modern-looking dialogs with blurs, shadows and rounded corners using only a few lines of code, and safely convert data after analyzing text strings. Go on to animate your layout and get your app shored up to crash as little as possible Each recipe offers a code snippet to copy and paste to your project as a tool to boost your knowledge, as well as, create plug-and-play features. Each of recipe shows the description for each line of code while explaining the logic of it, contains references to documentation, and gives you an opportunity to modify or write something similar that fits your project better. A good piece of code should not work but also be short, clear, and stable. And that combo will be our priority in these code recipes. Well-written code snippets must run in any environment and be easily transferrable from one project to another. Most of the provided recipes will migrate from one project to another with little to no changes at all, and with years of real-world application have proven themselves to be useful and stable. Dive into the world of iOS development and write clear, functioning, and safe Swift code! What You'll LearnParse, convert, and print Swift data Develop stunning UIs quickly Write effective and portable Swift extensions Make your code cleaner and safer Who This Book Is ForBeginners in iOS development who want to improve their skills with real-life examples. Developers switching to mobile development from other areas. All iOS developers looking for code recipes.
Up and Running with Dax for Power Bi
Take a concise approach to learning how DAX, the function language of Power BI and PowerPivot, works. This book focuses on explaining the core concepts of DAX so that ordinary folks can gain the skills required to tackle complex data analysis problems. But make no mistake, this is in no way an introductory book on DAX. A number of the topics you will learn, such as the concepts of context transition and table expansion, are considered advanced and challenging areas of DAX.While there are numerous resources on DAX, most are written with developers in mind, making learning DAX appear an overwhelming challenge, especially for those who are coming from an Excel background or with limited coding experience. The reality is, to hit the ground running with DAX, it's not necessary to wade through copious pages on rarified DAX functions and the technical aspects of the language. There are just a few mandatory concepts that must be fully understood before DAX can be mastered. Knowledge of everything else in DAX is built on top of these mandatory aspects. Author Alison Box has been teaching and working with DAX for over eight years, starting with DAX for PowerPivot, the Excel add-in, before moving into the Power BI platform. The guide you hold in your hands is an outcome of these years of experience explaining difficult concepts in a way that people can understand. Over the years she has refined her approach, distilling down the truth of DAX which is "you can take people through as many functions as you like, but it's to no avail if they don't truly understand how it all works." You will learn to use DAX to gain powerful insights into your data by generating complex and challenging business intelligence calculations including, but not limited to: Calculations to control the filtering of information to gain better insight into the data that matters to youCalculations across dates such as comparing data for thesame period last year or the previous periodFinding rolling averages and rolling totalsComparing data against targets and KPIs or against average and maximum valuesUsing basket analysis, such as "of customers who bought product X who also bought product Y"Using "what if" analysis and scenariosFinding "like for like" salesDynamically showing TopN/BottomN percent of customers or products by salesFinding new and returning customers or sales regions in each month or each year Who This Book Is ForExcel users and non-technical users of varying levels of ability or anyone who wants to learn DAX for Power BI but lacks the confidence to do so
System Firmware
Find the right bootloader solution or combination of firmware required to boot a platform considering its security, product features, and optimized boot solutions. This book covers system boot firmware, focusing on real-world firmware migration from closed source to open source adaptation. The book provides an architectural overview of popular boot firmware. This includes both closed sourced and/or open source in nature, such as Unified Extensible Firmware Interface (UEFI), coreboot, and Slim Bootloader and their applicable market segments based on product development and deployment requirements. Traditional system firmware is often complex and closed sourced whereas modern firmware is still a kind of hybrid between closed and open source. But what might a future firmware model look like? The most simplistic boot firmware solution uses open source firmware development. This book helps you decide how to choose the right boot firmware for your products and developyour own boot firmware using open source. Coverage includes: Why open source firmware is used over closed sourceThe pros and cons of closed and open source firmwareA hybrid work model: for faster bring-up activity using closed source, binary integrated with open source firmware What You Will LearnUnderstand the architecture of standard and popular boot firmwarePick the correct bootloader for your required target hardwareDesign a hybrid workflow model for the latest chipset platformUnderstand popular payload architectures and offerings for embedded systemsSelect the right payload for your bootloader solution to boot to the operating systemOptimize the system firmware boot time based on your target hardware requirementKnow the product development cycle using open source firmware developmentWho This Book Is For Embedded firmware and software engineers migrating the product development from closed source firmware to open source firmware for product adaptation needs as well as engineers working for open source firmware development. A secondary audience includes engineers working on various bootloaders such as open source firmware, UEFI, and Slim Bootloader development, as well as undergraduate and graduate students working on developing firmware skill sets.
Programming 101
Programming permeates almost all aspects of our lives. This includes being active on social media, shopping online, and participating in virtual courses. It also includes driving a car and using many devices. This book will teach you the basics of programming using the Processing programming language and provide practice with logical, algorithmic thinking. It can provide insight into what is involved in producing the technical infrastructure of our world. While reading this book, you can build programs based on your own ideas, using images you create or acquire and making connections to activities you enjoy. The chapters in the book will demonstrate the process of programming, starting with formulating an idea, planning, building on past projects, and refining the work, similar to writing an essay or composing a song. This approach will guide you to make use of logic and mathematics to produce beautiful effects. The text contains an Appendix with an introduction to p5.js, a way to produce JavaScript programs with Processing functionality for drawing, images, and interactions to publish on the Web. The term for program in Processing is sketch. The Processing language has been constructed by visual artists using the Java programming language as a base. However, the sketches featured in this book and typical in Processing are far more than static drawings; they incorporate interaction, animation, video, audio, and accessing files on the local computer and on the Web. Technical features are introduced and explained in the context of complete examples: games (Snake, Hangman, jigsaw, slingshot), making a collage of family images and video clips, preparing directions for folding an origami model, rotating objects in 3D, and others. Programming is a fun, creative, expressive pursuit. It does require attention to details and can be frustrating. Still, there is very little that comparesto the satisfaction of building a program out of nothing and making it work (or taking an existing program and fixing a problem, or adding a feature and making it better). Programming 101 is your gateway to making this happen. What You'll Learn Gain basic programming skills Build fun and creative programs Use files for making a holiday card or a sequence of instructions Combine videos, images, and graphics in a Processing sketch Connections to other programming languages, most especially Java and JavaScript Who This Book Is For Anyone who has been thinking about trying programming, or has tried, but needs assistance. Anyone who wants to use their own creativity and artistic talents. Anyone who wants to know what is involved in the technology that is present in our lives. Anyone who wants to know what is involved in the technology that is present in our lives.
Getting Started with the Uno Platform and Winui 3
Get ready to build applications that can run anywhere using the Uno Platform and WinUI.Modern application development can be an intimidating and complex topic, especially when you are building cross-platform applications that need to support multiple operating systems and form factors. There are so many options when it comes to frameworks and selecting the right one for your enterprise is critical in delivering a successful product to market. For the developer who has zero experience building apps with Xamarin, UWP, WinUI, or the Uno Platform, this book deconstructs those complex concepts into tangible building blocks so that productivity gains are immediately recognized.You will start off learning basic concepts and get a bird's-eye view of the enabling technologies to ensure that you feel comfortable with the tools and terminology. From there, you will learn about some of the more popular options in the .NET ecosystem, understand their attributes and shortcomings, and learn why the Uno Platform is ideal for building a cross-platform application that targets Android, iOS, Windows, WASM (Web Assembly), Linux, and MacOS. Then, you will follow a product release timeline that takes you through building an application, introducing key concepts at every step of the way. Each section of the book is chock full of tips and edge case documentations for the different platforms.What You Will Learn Manage multi-targeting solutions: specifically, how to handle the different project headsEffectively write cross-platform software and handle the edge cases of the different platformsUnderstand the fundamentals of working with Uno Platform WinUI appsExplore enterprise-grade application architecture using MVVMUnderstand Dependency Injection and how it applies to application architecture Who This Book Is ForDevelopers who understand some basics of C# and object-oriented programming
Openshmem and Related Technologies. Openshmem in the Era of Exascale and Smart Networks
This book constitutes the proceedings of the 8th OpenSHMEM Workshop, held in virtually in August 2021. The 11 full papers and 1 short paper presented in this book were carefully reviewed and selected for inclusion in this volume from 18 submissions. The papers are organized in the following topical sections: Applications and Implementations, Tools and Benchmarks, and Applications and Implementations.
Testing Software and Systems
This book constitutes the refereed proceedings of the 33rd IFIP WG 6.1 International Conference on Testing Software and Systems, ICTSS 2021, which was supposed to be held in London, UK, but was held virtually due to the COVID-19 pandemic. The 10 regular papers and 7 short papers presented were carefully reviewed and selected from 36 submissions. Additionally, the volume includes 6 project reports. The papers are divided into the following topical subheadings: Finite State Machine-based Testing; Test Generation and Selection; AI-based Techniques; Use Cases; Project Reports.
Reliability, Safety, and Security of Railway Systems. Modelling, Analysis, Verification, and Certification
This book constitutes the refereed proceedings of the 4th International Conference on Reliability, Safety, and Security of Railway Systems, RSSRail 2022, held in Paris, France, in June 2022. The 16 full papers presented in this book were carefully reviewed and selected from numerous submissions. They cover a range of topics including railways system and infrastructure advance modelling; scheduling and track planning; safety process and validation; modelling; formal verification; and security.
Recent Trends in Algebraic Development Techniques
This book constitutes the thoroughly refereed post-conference proceedings of the 25th International Workshop on Algebraic Development Techniques, WADT 2020, held virtually in April 2020.The 7 revised papers presented together with an invited paper were carefully reviewed and selected from 9 submissions. The contributed presentations covered a range of topics about the algebraic approach to system specification, which encompasses many aspects of the formal design of software systems. Originally born as formal method for reasoning about abstract data types, the algebraic approach now covers new specification frameworks and programming paradigms (such as object-oriented, aspect-oriented, agent-oriented, logic, and higher-order functional programming) as well as a wide range of application areas (including information systems, concurrent, distributed, and mobile systems).
Quantum Computing Compact
What is the phenomenon of quantum entanglement? If you read popular science literature, there is talk of socks that are red and blue at the same time, but monochromatic - how is that supposed to work? If you read scientific literature, you have to have knowledge of functional analysis.This book vividly builds the bridge between the experiments that led to quantum entanglement and the algorithm for teleportation, assuming only an elementary knowledge of mathematics.
NASA Formal Methods
This book constitutes the proceedings of the 14th International Symposium on NASA Formal Methods, NFM 2022, held in Pasadena, USA, during May 24-27, 2022. The 33 full and 6 short papers presented in this volume were carefully reviewed and selected from 118submissions. The volume also contains 6 invited papers. The papers deal with advances in formal methods, formal methods techniques, and formal methods in practice. The focus on topics such as interactive and automated theorem proving; SMT and SAT solving; model checking; use of machine learning and probabilistic reasoning in formal methods; formal methods and graphical modeling languages such as SysML or UML; usability of formal method tools and application in industry, etc.
Agile Software Engineering Skills
This textbook is about working in teams to create functioning software. It covers skills in agile software development methods, team working, version control and continuous integration and shows readers how to apply some of the latest ideas from lean, agile and Kanban. Part I, which focuses on People, describes various project roles and the skills needed to perform each role. This includes members of self-organizing teams, scrum masters, product owners and activities for managing other stakeholders. The skills needed to create Product artefacts are detailed in Part II. These include skills to create agile requirements, architectures, designs as well as development and security artefacts. The agile development Process to coordinate with co-workers is described in Part III. It introduces the skills needed to facilitate an incremental process and to use software tools for version control and automated testing. Eventually some more advanced topics are explained in Part IV. These topics include large projects comprising multiple cooperating teams, automating deployment, cloud software services, DevOps and evolving live systems. This textbook addresses significant competencies in the IEEE/ACM Computing Curricula Task Force 2020. It includes nearly 100 exercises for trying out and applying the skills needed for agile software development. Hints, tips and further advice about tackling the exercises are presented at the end of each chapter, and a case study project, with downloadable source code from an online repository, integrates the skills learned across the chapters. In addition, further example software projects are also available there. This way, the book provides a hands-on guide to working on a development project as part of a team, and is inspired by the needs of early career practitioners as well as undergraduate software engineering and computer science students.
Developments in Language Theory
This book constitutes the proceedings of the 26th International Conference on Developments in Language Theory, DLT 2022, which was held in Tampa, FL, USA, during May, 2022. The conference took place in an hybrid format with both in-person and online participation. The 21 full papers included in these proceedings were carefully reviewed and selected from 32 submissions. The DLT conference series provides a forum for presenting current developments in formal languages and automata.
Animated Program Design
This textbook presents a systematic methodology for program development by using design recipes, i.e. a series of steps, each with a specific outcome, that takes a problem solver from a problem statement to a working and tested programmed solution. It introduces the reader to generative recursion, heuristic searching, accumulative recursion, tail recursion, iteration, mutation, loops, program correctness, and vectors. It uses video game development to make the content fun while at the same time teaching problem-solving techniques. The book is divided into four parts. Part I presents introductory material on basic problem solving and program design. It starts by reviewing the basic steps of a design recipe using structural recursion on a list. It then proceeds to review code refactoring-a common technique used to refine programs when a better or more elegant way is found to solve a problem-and introduces the reader to randomness. Next, Part II explores a new type of recursioncalled generative recursion. It navigates the reader through examples involving fractal image generation, efficient sorting, and efficient searching techniques such as binary, depth-first, and breadth-first search. Part III then explores a new type of recursion called accumulative (or accumulator) recursion. Examples used include finding a path in a graph, improving insertion sorting, and list-folding operations. Finally, Part IV explores mutation. To aid the reader in properly sequencing mutations it presents Hoare Logic and program correctness. In addition, it introduces vectors, vector processing, in-place operations, and circular data. Throughout the whole book complexity analysis and empirical experimentation is used to evaluate solutions.This textbook targets undergraduates at all levels as well as graduate students wishing to learn about program design. It details advanced types of recursion, a disciplined approach to the use of mutation, and illustrates the design process by developing a video game exploiting iterative refinement.
The History of .Net Web Development and the Core That Was No More
Beginning Azure Static Web Apps
Create rich and dynamic web applications on the Azure cloud platform using static web development techniques built around Blazor WebAssembly, APIs, and Markup, while leveraging the paradigm commonly known as JAMstack. This book starts off showing you how to create an environment for deploying your first application. You will create an Azure Static Web App using a Blazor WebAssembly application and adding dynamic content using an Azure function before deploying from GitHub. You will learn to debug your Static Web App locally, both inside of Visual Studio and from the command line using a simple Static Web App CLI command. The book takes a deep dive into the CLI to allow you to emulate all of the features available in the Azure environment. You will learn the authentication and authorizing options with your app and create new blog posts with the post creation function. Included in the book is setting a custom domain and discussion of the options. The book also explores the differences between the free and standard hosting tiers for Static Web Apps.After reading this book, you will be able to create Azure Static Web Apps using Blazor technology.What Will You LearnConnect with external authentication services from Twitter, Google, Microsoft, GitHub, and moreWork with the GitHub deployment flow, including using staging environmentsExplore the scaffolded Blazor appUnderstand differences between the pricing tiers and know which to chooseWho This Book Is ForWeb developers looking to deploy feature-rich applications to the cloud
The Kubernetes Operator Framework Book
Design and deploy an operator for personal use and public distribution and get to grips with writing, packaging, and distributing a basic operator for a Kubernetes clusterKey Features: Develop a holistic understanding of operators and the Operator FrameworkLearn to design and develop your own operators as per industry standardsFind out how to implement best practices and troubleshoot Kubernetes operatorsBook Description: From incomplete collections of knowledge and varying design approaches to technical knowledge barriers, Kubernetes users face various challenges when developing their own operators. Knowing how to write, deploy, and pack operators makes cluster management automation much easier - and that's what this book is here to teach you.Beginning with operators and Operator Framework fundamentals, the book delves into how the different components of Operator Framework (such as the Operator SDK, Operator Lifecycle Manager, and OperatorHub.io) are used to build operators. You'll learn how to write a basic operator, interact with a Kubernetes cluster in code, and distribute that operator to users. As you advance, you'll be able to develop a sample operator in the Go programming language using Operator SDK tools before running it locally with Operator Lifecycle Manager, and also learn how to package an operator bundle for distribution. The book covers best practices as well as sample applications and case studies based on real-world operators to help you implement the concepts you've learned.By the end of this Kubernetes book, you'll be able to build and add application-specific operational logic to a Kubernetes cluster, making it easier to automate complex applications and augment the platform.What You Will Learn: Gain insight into the Operator Framework and the benefits of operatorsImplement standard approaches for designing an operatorDevelop an operator in a stepwise manner using the Operator SDKPublish operators using distribution options such as OperatorHub.ioDeploy operators using different Operator Lifecycle Manager optionsDiscover how Kubernetes development standards relate to operatorsApply knowledge learned from the case studies of real-world operatorsWho this book is for: This book is for DevOps and cloud engineers, Kubernetes engineers, SREs, developers, and cloud architects interested in automating the management of their Kubernetes clusters. It assumes a basic understanding of core Kubernetes topics or familiarity with Kubernetes and container orchestration.
Rancher Deep Dive
Effectively build, manage, and secure your Kubernetes workloads to implement CI/CDKey Features: Gain a complete understanding of how Rancher worksDiscover how to design and deploy Kubernetes clusters using RancherUnderstand how to extend Kubernetes and Rancher's capabilities to take your apps to the next levelBook Description: Knowing how to use Rancher enables you to manage multiple clusters and applications without being locked into a vendor's platform. This book will guide you through Rancher's capabilities while deepening your understanding of Kubernetes and helping you to take your applications to a new level.The book begins by introducing you to Rancher and Kubernetes, helping you to learn and implement best practices. As you progress through the chapters, you'll understand the strengths and limitations of Rancher and Kubernetes and discover all the different ways to deploy Rancher. You'll also find out how to design and deploy Kubernetes clusters to match your requirements. The concluding chapters will show you how to set up a continuous integration and continuous deployment (CI/CD) pipeline for deploying applications into a Rancher cluster, along with covering supporting services such as image registries and Helm charts.By the end of this Kubernetes book, you'll be able to confidently deploy your mission-critical production workloads on Rancher-managed Kubernetes clusters.What You Will Learn: Deploy Rancher in a production-ready configurationArchitect an application cluster to support mission-critical workloadsBuild the type of Kubernetes cluster that makes sense for your environmentDiscover the tools and services needed to make a new, ready-to-deploy clusterPrepare your applications to be deployed into Rancher for KubernetesExpand your Kubernetes cluster by providing additional services such as Longhorn, OPA, and monitoringWho this book is for: This book is for DevOps engineers looking to deploy Kubernetes in a fast and easy way. A basic understanding of Linux administration and containerization is needed to get the most out of this book.
Parallel Algorithms
This book is an introduction to the field of parallel algorithms and the underpinning techniques to realize the parallelization. The emphasis is on designing algorithms within the timeless and abstracted context of a high-level programming language. The focus of the presentation is on practical applications of the algorithm design using different models of parallel computation. Each model is illustrated by providing an adequate number of algorithms to solve some problems that quite often arise in many applications in science and engineering.The book is largely self-contained, presuming no special knowledge of parallel computers or particular mathematics. In addition, the solutions to all exercises are included at the end of each chapter.The book is intended as a text in the field of the design and analysis of parallel algorithms. It includes adequate material for a course in parallel algorithms at both undergraduate and graduate levels.
Link Reversal Algorithms
Link reversal is a versatile algorithm design technique that has been used in numerous distributed algorithms for a variety of problems. The common thread in these algorithms is that the distributed system is viewed as a graph, with vertices representing the computing nodes and edges representing some other feature of the system (for instance, point-to-point communication channels or a conflict relationship). Each algorithm assigns a virtual direction to the edges of the graph, producing a directed version of the original graph. As the algorithm proceeds, the virtual directions of some of the links in the graph change in order to accomplish some algorithm-specific goal. The criterion for changing link directions is based on information that is local to a node (such as the node having no outgoing links) and thus this approach scales well, a feature that is desirable for distributed algorithms. This monograph presents, in a tutorial way, a representative sampling of the work on link-reversal-based distributed algorithms. The algorithms considered solve routing, leader election, mutual exclusion, distributed queueing, scheduling, and resource allocation. The algorithms can be roughly divided into two types, those that assume a more abstract graph model of the networks, and those that take into account more realistic details of the system. In particular, these more realistic details include the communication between nodes, which may be through asynchronous message passing, and possible changes in the graph, for instance, due to movement of the nodes. We have not attempted to provide a comprehensive survey of all the literature on these topics. Instead, we have focused in depth on a smaller number of fundamental papers, whose common thread is that link reversal provides a way for nodes in the system to observe their local neighborhoods, take only local actions, and yet cause global problems to be solved. We conjecture that future interesting uses of link reversal are yetto be discovered. Table of Contents: Introduction / Routing in a Graph: Correctness / Routing in a Graph: Complexity / Routing and Leader Election in a Distributed System / Mutual Exclusion in a Distributed System / Distributed Queueing / Scheduling in a Graph / Resource Allocation in a Distributed System / Conclusion
Swarm Intelligence
This book presents the fundamentals of swarm intelligence, from classic algorithms to emerging techniques. It presents comprehensive theoretical foundations and examples using the main Computational Intelligence methods in programming languages ​​such as Python, Java and MATLAB(R). Real-world applications are also presented in areas as diverse as Medicine, Biology and industrial applications. The book is organized into two parts. The first part provides an introduction to swarming algorithms and hybrid techniques. In the second part, real world applications of swarm intelligence are presented to illustrate how swarm algorithms can be used in applications of optimization and pattern recognition, reviewing the principal methods and methodologies in swarm intelligence.
The Data Path Less Traveled
Become proficient in using heuristics within the data science pipeline to produce higher quality results in less time.Although data professionals have used heuristics for many years within optimization-related applications, heuristics have been a vibrant area of research in various data-related areas, from machine learning to image processing. Heuristics also play a role in niche applications such as cybersecurity. In addition, the advent of AI and other data-driven methodologies have brought heuristics to the forefront of data-related work.In this book, we explore heuristics from a practical perspective. We illustrate how heuristics can help you solve challenging problems through simple examples and real-life situations. Apply Jaccard Similarity and a variant, F1 score, Entropy, Ectropy, Area Under Curve, Particle Swarm Optimization, and Genetic Algorithms (along with GA variants). Beyond just exhibiting the various known and lesser-known heuristics available today, we also examine how you can go about creating your own through a simple and functional framework. Code notebooks enable you to practice all of the techniques and explore a few of your own.There is no doubt that the data-driven paradigm is here to stay. There are many ways to stand out in it as a data professional, with AI-related know-how being at the top of the list. However, equally impactful can be the creative tools (heuristics) that make such technologies feasible and scalable. Unfortunately, this is a way that not many people care to follow as it's off the beaten path. Are you up for the challenge?
Cognitive Fusion for Target Tracking
The adaptive configuration of nodes in a sensor network has the potential to improve sequential estimation performance by intelligently allocating limited sensor network resources. In addition, the use of heterogeneous sensing nodes provides a diversity of information that also enhances estimation performance. This work reviews cognitive systems and presents a cognitive fusion framework for sequential state estimation using adaptive configuration of heterogeneous sensing nodes and heterogeneous data fusion. This work also provides an application of cognitive fusion to the sequential estimation problem of target tracking using foveal and radar sensors.
Java Software Development with Event B
The cost of fixing software design flaws after the completion of a software product is so high that it is vital to come up with ways to detect software design flaws in the early stages of software development, for instance, during the software requirements, the analysis activity, or during software design, before coding starts. It is not uncommon that software requirements are ambiguous or contradict each other. Ambiguity is exacerbated by the fact that software requirements are typically written in a natural language, which is not tied to any formal semantics. A palliative to the ambiguity of software requirements is to restrict their syntax to boilerplates, textual templates with placeholders. However, as informal requirements do not enjoy any particular semantics, no essential properties about them (or about the system they attempt to describe) can be proven easily. Formal methods are an alternative to address this problem. They offer a range of mathematical techniques and mathematical tools to validate software requirements in the early stages of software development. This book is a living proof of the use of formal methods to develop software. The particular formalisms that we use are EVENT B and refinement calculus. In short: (i) software requirements as written as User Stories; (ii) they are ported to formal specifications; (iii) they are refined as desired; (iv) they are implemented in the form of a prototype; and finally (v) they are tested for inconsistencies. If some unit-test fails, then informal as well as formal specifications of the software system are revisited and evolved. This book presents a case study of software development of a chat system with EVENT B and a case study of formal proof of properties of a social network.
Agile Product and Project Management
Use this comprehensive Agile product and project management guide with real-world case studies and examples for self-learning or as a student textbook. Whether you are a CEO or a student, this book will take you from Agile delivery to team topology and product-market fit.Agile delivery is becoming a mainstream project management framework, increasing demand for an understanding of modern related concepts. Agile Product and Project Management covers IT delivery and project management basics while approaching IT as a customer-centric product delivery ecosystem. The book covers two major topics: building the RIGHT product and building the product RIGHT. Each chapter builds on the materials in the previous chapter. Terminology and exercises are introduced sequentially. The book takes you on a journey from identifying a product using Agile principles to delivering and iterating on this process, step-by-step. The final chapter providespractical advice on role-based interviews, career progression, professional certifications and affiliations, and communities of practice. You'll Learn The Objectives and Key Results (OKR) framework, which explains why every project has to align with organizational objectives and how these objectives are used to measure project successAgile (Scrum, Kanban, XP), Waterfall, and hybrid product and project management practices, and how to apply the "working backwards" framework from the customer to IT projectsThe Lean Startup framework of product design, based on the "build-measure-learn" feedback loop, and compared with Waterfall requirements gathering and project scope managementDesign Thinking and customer research practicesThe product backlog taxonomy (epic, user story, subtask, bug, etc.), prioritization techniques, ongoing backlog maintenance, and stakeholder communicationMajor aspects of IT delivery, including Agile teams, roles, frameworks, and success criteriaWaterfall planning and Scrum, in detail, including its Sprint structure, artifacts, roles, and ceremonies (meetings) as well as a comparison of Agile scaling frameworksCase studies of modern technology leaders, from startups to FAANGExamples of release plans and delivery reports based on actual projects in a wide range of companies, ways to minimize technical debt, implement DevOps, and establish quality management practices for software productsEffective ways of managing dependencies and delivering products that delight customers and made the Silicon Valley giants successful and allowed for rapid business growth Who This Book Is ForGraduate students specializing in computer science, information systems, project management, and related management areas; practitioners seeking professional development; and project management professionals looking to growtheir careers into Agile product and project management
Principles of Transactional Memory
Transactional memory (TM) is an appealing paradigm for concurrent programming on shared memory architectures. With a TM, threads of an application communicate, and synchronize their actions, via in-memory transactions. Each transaction can perform any number of operations on shared data, and then either commit or abort. When the transaction commits, the effects of all its operations become immediately visible to other transactions; when it aborts, however, those effects are entirely discarded. Transactions are atomic: programmers get the illusion that every transaction executes all its operations instantaneously, at some single and unique point in time. Yet, a TM runs transactions concurrently to leverage the parallelism offered by modern processors. The aim of this book is to provide theoretical foundations for transactional memory. This includes defining a model of a TM, as well as answering precisely when a TM implementation is correct, what kind of properties it can ensure, what are the power and limitations of a TM, and what inherent trade-offs are involved in designing a TM algorithm. While the focus of this book is on the fundamental principles, its goal is to capture the common intuition behind the semantics of TMs and the properties of existing TM implementations. Table of Contents: Introduction / Shared Memory Systems / Transactional Memory: A Primer / TM Correctness Issues / Implementing a TM / Further Reading / Opacity / Proving Opacity: An Example / Opacity vs.\ Atomicity / Further Reading / The Liveness of a TM / Lock-Based TMs / Obstruction-Free TMs / General Liveness of TMs / Further Reading / Conclusions
Engineer Your Software!
Software development is hard, but creating good software is even harder, especially if your main job is something other than developing software. Engineer Your Software! opens the world of software engineering, weaving engineering techniques and measurement into software development activities. Focusing on architecture and design, Engineer Your Software! claims that no matter how you write software, design and engineering matter and can be applied at any point in the process. Engineer Your Software! provides advice, patterns, design criteria, measures, and techniques that will help you get it right the first time. Engineer Your Software! also provides solutions to many vexing issues that developers run into time and time again. Developed over 40 years of creating large software applications, these lessons are sprinkled with real-world examples from actual software projects. Along the way, the author describes common design principles and design patterns that can make life a lot easierfor anyone tasked with writing anything from a simple script to the largest enterprise-scale systems.
Sensor Analysis for the Internet of Things
While it may be attractive to view sensors as simple transducers which convert physical quantities into electrical signals, the truth of the matter is more complex. The engineer should have a proper understanding of the physics involved in the conversion process, including interactions with other measurable quantities. A deep understanding of these interactions can be leveraged to apply sensor fusion techniques to minimize noise and/or extract additional information from sensor signals. Advances in microcontroller and MEMS manufacturing, along with improved internet connectivity, have enabled cost-effective wearable and Internet of Things sensor applications. At the same time, machine learning techniques have gone mainstream, so that those same applications can now be more intelligent than ever before. This book explores these topics in the context of a small set of sensor types. We provide some basic understanding of sensor operation for accelerometers, magnetometers, gyroscopes, and pressure sensors. We show how information from these can be fused to provide estimates of orientation. Then we explore the topics of machine learning and sensor data analytics.
Kickstart Modern Android Development with Jetpack and Kotlin
Explore modern Android development in Kotlin 1.6.10 with this condensed hands-on guide to building reliable apps using libraries such as Compose, ViewModel, Hilt, Retrofit, Flow, and moreKey Features: Explore Jetpack libraries and other modern technologies for Android developmentImprove the architectural design of your Android appsEnhance the quality of your Android projects' code bases and applications using the latest librariesBook Description: With Jetpack libraries, you can build and design high-quality, robust Android apps that have an improved architecture and work consistently across different versions and devices. This book will help you understand how Jetpack allows developers to follow best practices and architectural patterns when building Android apps while also eliminating boilerplate code.Developers working with Android and Kotlin will be able to put their knowledge to work with this condensed practical guide to building apps with the most popular Jetpack libraries, including Jetpack Compose, ViewModel, Hilt, Room, Paging, Lifecycle, and Navigation. You'll get to grips with relevant libraries and architectural patterns, including popular libraries in the Android ecosystem such as Retrofit, Coroutines, and Flow while building modern applications with real-world data.By the end of this Android app development book, you'll have learned how to leverage Jetpack libraries and your knowledge of architectural concepts for building, designing, and testing robust Android applications for various use cases.What You Will Learn: Integrate popular Jetpack libraries such as Compose, ViewModel, Hilt, and Navigation into real Android apps with KotlinApply modern app architecture concepts such as MVVM, dependency injection, and clean architectureExplore Android libraries such as Retrofit, Coroutines, and FlowIntegrate Compose with the rest of the Jetpack libraries or other popular Android librariesWork with other Jetpack libraries such as Paging and Room while integrating a real REST API that supports paginationTest Compose UI and the application logic through unit testsWho this book is for: This book is for junior and intermediate-level Android developers looking to level up their Android development skills to develop high-quality apps using Jetpack libraries and other cutting-edge technologies. Beginners with knowledge of Android development fundamentals will also find this book useful. Familiarity with Kotlin is assumed.
The History of .Net Web Development and the Core That Was No More
Concepts of Object-Oriented Programming with Visual Basic
This book is about object-oriented programming and how it is implemented in Microsoft Visual Basic. The author presupposes a basic exposure to Visual Basic, but provides a thorough first introduction to object-oriented programming. As a result, students and programmers working with Visual Basic will find much of interest in this book.
Understanding JavaScript Promises
Since promises were added to JavaScript in 2015, they have become an integral part of the language. A good understanding of how promises work is more important than ever in becoming a proficient JavaScript developer. This book begins by explaining the basic concepts behind promises, including what they are, how to use them, and how to create your own. You'll then build upon these basic concepts to learn how to chain promises together and how to respond to multiple promises at once. Once you've learned these advanced concepts, you'll move on to learn how promises work with async functions and how to track unhandled promise rejections. All of the concepts discussed are grounded in real world examples so you learn not just how to use a particular technique, but also why and when to use it. It doesn't matter if you're writing JavaScript for web browsers, Node.js, or Deno, this book will teach you everything you need to know about promises.