Programmierung
Machine Learning - kurz & gut (2. Auflg.)
Der kompakte Schnelleinstieg in Machine Learning und Deep Learning in der neuen 2. Auflage 04/2021!Machine Learning beeinflusst heute beinahe alle Bereiche der Technik und der Gesellschaft. Dieses Buch bietet Interessierten, die einen technischen Hintergrund haben, die schnellstmögliche Einführung in das umfangreiche Themengebiet des maschinellen Lernens und der statistischen Datenanalyse. Dabei werden folgende Themen behandelt und mit praktischen Beispielen veranschaulicht:Datenimport und -vorbereitungSupervised LearningFeature-Auswahl, ModellvalidierungNeuronale Netze und Deep LearningUnsupervised LearningReinforcement LearningAnhand konkreter Datensätze lernen Sie einen typischen Workflow kennen: vom Datenimport über Datenbereinigung, Datenanalyse bis hin zur Datenvisualisierung. Die Codebeispiele basieren auf Python und den Bibliotheken Scikit-Learn, Pandas, NumPy, TensorFlow und Keras.Nach der Lektüre dieses Buchs haben Sie einen Überblick über das gesamte Thema und können Ansätze einordnen und bewerten. Das Buch vermittelt Ihnen eine solide Grundlage, um Ihre ersten eigenen Machine-Learning-Modelle zu trainieren und vertiefende Literatur zu verstehen.
JavaScript - Das Handbuch für die Praxis (7. Auflg.)
Seit 25 Jahren das begleitende Grundlagenwerk zu JavaScript, in 7. Auflage 04/2021JavaScript ist die Programmiersprache des Web und wird heute von mehr Softwareentwicklerinnen und -entwicklern eingesetzt als jede andere Sprache. Seit fast 25 Jahren dient ihnen dieser Bestseller als Praxishandbuch und zuverlässiger Begleiter. Die vorliegende siebte Auflage wurde vollständig aktualisiert und deckt die Version 2020 von JavaScript ab.Sie finden in diesem Buch spannende und aufschlussreiche Codebeispiele sowie neue und erweiterte Kapitel zu Klassen, Modulen, Iteratoren, Generatoren, Promises und async/await. Es richtet sich an Programmiererinnen und Programmierer, die JavaScript lernen möchten, und an alle in der Webentwicklung, die ein tieferes Verständnis für die Sprache entwickeln und sie noch besser beherrschen wollen.Unter anderem werden folgende Themen behandelt:Typen, Variablen, Operatoren, Anweisungen, Objekte und ArraysFunktionen, Klassen, Module, Iteratoren, Generatoren, Promises und async/awaitDie Standardbibliothek von JavaScript: Datenstrukturen, reguläre Ausdrücke, JSON, Internationalisierung und URLsDie Webplattform: Dokumente, Komponenten, Grafiken, Netzwerkoptionen, Speicher und ThreadsNode.js: Puffer, Dateien, Streams, Threads, Kindprozesse, Webclients und WebserverWerkzeuge und Spracherweiterungen für professionelle JavaScript-Entwickler
SAP SuccessFactors Talent: Volume 1
Take an in-depth look at SAP SuccessFactors talent modules with this complete guide to configuration, administration, and best practices. This two-volume series follows a logical progression of SAP SuccessFactors modules that should be configured to complete a comprehensive talent management solution. The authors walk you through fully functional simple implementations in the primary chapters for each module before diving into advanced topics in subsequent chapters.In volume 1, we start with a brief introduction. The next two chapters jump into the Talent Profile and Job Profile Builder. These chapters lay the structures and data that will be utilized across the remaining chapters which detail each module. The following eight chapters walk you through building, administering, and using a goal plan in the Goal Management module as well as performance forms in the Performance Management module. The book also expands on performance topics with the 360 form and continuous performance management in two additional chapters. We then dive into configuring the calibration tool and how to set up calibration sessions in the next two chapters before providing a brief conclusion.Within each topic, the book touches on the integration points with other modules as well as internationalization. The authors also provide recommendations and insights from real world experience. Having finished the book, you will have an understanding of what comprises a complete SAP SuccessFactors talent management solution and how to configure, administer, and use each module within it.You will:· Develop custom talent profile portlets· Integrate Job Profile Builder with SAP SuccessFactors talent modules· Set up security, group goals, and team goals in goals management with sample XML· Configure and launch performance forms including rating scales and route maps· Configure and administrate the calibration module and its best practicesSUSAN TRAYNOR is an SAP SuccessFactors Certified Professional with more than 21 years of progressive experience in SAP HCM and SuccessFactors implementations. You can follow her on LinkedIn.MICHAEL A. WELLENS, M.S. is a certified SAP SuccessFactors consultant with over 15 years of human resources information systems implementation experience. He has successfully launched a variety of core HR and talent management solutions across a variety of fortune 500 companies around the world. You can follow him on LinkedIn or on Twitter at @mike_wellens.VENKI KRISHNAMOORTHY is an SAP SuccessFactors consultant. Venki has over 15 years of experience as a functional lead, project manager, and program manager in HCM transformation projects. Venki has completed over 35 full lifecycle implementations of SuccessFactors projects across multiple modules. You can follow Venki on LinkedIn or on Twitter at @venki_sap.Chapter 1: An Introduction to SAP SuccessFactors Talent ModulesChapter 2: Talent ProfileChapter 3: Job Profile BuilderChapter 4: Basic Goal ManagementChapter 5: Alternate Goal Management Concepts and FunctionalityChapter 6: Introduction to Performance ManagementChapter 7: Performance Form Template SectionsChapter 8: Administering Performance Management FormsChapter 9: Using Performance Management FormsChapter 10: Performance Management XML and TranslationsChapter 11: Ask for Feedback, Get Feedback, Add Modifier, and Add SignerChapter 12: 360Chapter 13: Continuous Performance ManagementChapter 14: Calibration ConfigurationChapter 15: Calibration SessionsChapter 16: Conclusion
Beginning HCL Programming
Get started with programming and using the Hashicorp Language (HCL). This book introduces you to the HCL syntax and its ecosystem then it shows you how to integrate it as part of an overall DevOps approach.Next, you’ll learn how to implement infrastructure as code, specifically, using the Terraform template, a set of cloud infrastructure automation tools. As part of this discussion, you’ll cover Consul, a service mesh solution providing a full-featured control plane with service discovery, configuration, and segmentation functionality. You’ll integrate these with Vault to build HCL-based infrastructure as code solutions.Finally, you’ll use Jenkins and HCL to provision and maintain the infrastructure as code system. After reading and using Beginning HCL Programming, you'll have the know-how and source code to get started with flexible HCL for all your cloud and DevOps needs.WHAT YOU WILL LEARN* Get started with programming and using HCL* Use Vault, Consul, and Terraform * Apply HCL to infrastructure as codeDefine the Terraform template with HCL * Configure Consul using HCL* Use HCL to configure Vault* Provision and maintain infrastructure as code using Jenkins and HCLWHO THIS BOOK IS FORAnyone new to HCL but who does have at least some prior programming experience as well as knowledge of DevOps in general.PIERLUIGI RITI is a senior DevOps engineer at Coupa Software and Sunchronoss Technologies. Prior to that, he was a senior software engineer at Ericsson and Tata. His experience includes implementing DevOps in the cloud using Google Cloud Platform as well as AWS and Azure. Also, he has over ten years of extensive experience in more general design and development of different scale applications particularly in the telco and financial industries. He has quality development skills using the latest technologies including Java, J2EE, C#, F#, .NET, Spring .NET, EF, WPF, WF, WinForm, WebAPI, MVC, Nunit, Scala, Spring, JSP, EJB, Struts, Struts2, SOAP, REST, C, C++, Hibernate, NHibernate, Weblogic, XML, XSLT, Unix script, Ruby, and Python.DAVID FLYNN is an Associate Analyst in Employee Access Business Operations at Mastercard. He is an Electronic Engineer with experience in telecommunications, networks, software, security and Financial Systems. David started out as a Telecommunications Engineer working on Voice, data and wireless systems for Energis and later Nortel Networks supporting systems such as Lucent G3r, Alcatel E10 & Nortel Passport. He then did some time in Transport and Private security abroad before retraining in Computing, Cyber Security and Cloud Systems plus doing Cyber Security & Telecomm research for the Civil Service. He has completed separate Diplomas in Computing and Cloud focusing on Windows, C# , Google, AWS and Powershell amongst other technologies. David also has worked as a C# Engineer. More recently David has worked for various fintech companies including Bank Of America Merril Lynch focusing on technical & Application Support encompassing such technologies as Rsa Igl, Rsa SecurID, IBM Tam/Isam, Postgres/Oracle databases, Mainframe, Tandem, CyberArk, MaxPro and Active Directory.1 Introduction to HCLDefine the history of HCL, the basic syntax and, show the basic configuration syntax and the basic usage of the HCL2 The Hashicorp ecosystemShow the different software create by Hashicorpt like Vault, Consul, Terraform3 Introduction to GoA small introduction on the Go language, we use Go to define the configuration template described in the book4 Infrastructure As CodeDefine what is the Infrastructure as Code and how we can do that5 Introduction to the Cloud and DevOpsIn this chapter, we have a short introduction to the Cloud and the DevOps6 Use HCL for TerraformWe start to use the HCL for define Terraform template7 Consul HCLIn this chapter we introduce the HCL for Consul, we learn how to configure Consul using the HCL8 Vault HCLUse the HCL for configure Vault9 Infrastructure as Code with HCLDesign the Infrastructure as Code use the Hashicorp language, in particular, we use Terraform, Vault and Consul10 Provisioning and Maintain the Infrastructure as CodeIn this chapter, we see how to use Jenkins and the HCL for provisioning and maintain the infrastructure as code
Essential TypeScript 4
Learn the essentials and more of TypeScript, a popular superset of the JavaScript language that adds support for static typing. TypeScript combines the typing features of C# or Java with the flexibility of JavaScript, reducing typing errors and providing an easier path to JavaScript development.Author ADAM FREEMAN explains how to get the most from TypeScript 4 in this second edition of his best-selling book.He begins by describing the TypeScript language and the benefits it offers and then shows you how to use TypeScript in real-world scenarios, including development with the DOM API, and popular frameworks such as Angular and React. He starts from the nuts-and-bolts and builds up to the most advanced and sophisticated features.Each topic is covered clearly and concisely, and is packed with the details you need to be effective. The most important features are given a no-nonsense, in-depth treatment and chapters include common problems and teach you how to avoid them.WHAT YOU WILL LEARN* Gain a solid understanding of the TypeScript language and tools* Use TypeScript for client- and server-side development* Extend and customize TypeScript* Test your TypeScript code* Apply TypeScript with the DOM API, Angular, React, and Vue.js WHO THIS BOOK IS FORJavaScript developers who want to use TypeScript to create client-side or server-side applicationsADAM FREEMAN is an experienced IT professional who has held senior positions at a range of companies, most recently serving as chief technology officer and chief operating officer of a global bank. Now retired, he spends his time writing and long-distance running.PART 1 - GETTING STARTED WITH TYPESCRIPT1. Your First TypeScript Application2. Understanding TypeScript3. JavaScript Types Primer, Part 14. JavaScript Types Primer, Part 25. Using the TypeScript Compiler6. Testing and Debugging TypeScriptPART 2 - WORKING WITH TYPESCRIPT7. Understanding Status Types8. Using Functions9. Using Arrays, Tuples and Enums10. Working with Objects11. Working with Classes and Interfaces12. Using Generic Types13. Advanced Generic Types14. Working with JavaScriptPART 3 - CREATING WEB APPLICATIONS15. Creating a Stand-Alone Web App, Part 116. Creating a Stand-Alone Web App, Part 217. Creating an Angular App, Part 118. Creating an Angular App, Part 219. Creating a React App, Part 120. Creating a React App, Part 221. Creating a Vue.js App, Part 122. Creating a Vue.js App, Part 2
Deep Learning with Python
Master the practical aspects of implementing deep learning solutions with PyTorch, using a hands-on approach to understanding both theory and practice. This updated edition will prepare you for applying deep learning to real world problems with a sound theoretical foundation and practical know-how with PyTorch, a platform developed by Facebook’s Artificial Intelligence Research Group.You'll start with a perspective on how and why deep learning with PyTorch has emerged as an path-breaking framework with a set of tools and techniques to solve real-world problems. Next, the book will ground you with the mathematical fundamentals of linear algebra, vector calculus, probability and optimization. Having established this foundation, you'll move on to key components and functionality of PyTorch including layers, loss functions and optimization algorithms.You'll also gain an understanding of Graphical Processing Unit (GPU) based computation, which is essential for training deep learning models. All the key architectures in deep learning are covered, including feedforward networks, convolution neural networks, recurrent neural networks, long short-term memory networks, autoencoders and generative adversarial networks. Backed by a number of tricks of the trade for training and optimizing deep learning models, this edition of Deep Learning with Python explains the best practices in taking these models to production with PyTorch.WHAT YOU'LL LEARN* Review machine learning fundamentals such as overfitting, underfitting, and regularization.* Understand deep learning fundamentals such as feed-forward networks, convolution neural networks, recurrent neural networks, automatic differentiation, and stochastic gradient descent.* Apply in-depth linear algebra with PyTorch* Explore PyTorch fundamentals and its building blocks* Work with tuning and optimizing models WHO THIS BOOK IS FORBeginners with a working knowledge of Python who want to understand Deep Learning in a practical, hands-on manner.Nikhil S. Ketkar currently leads the Machine Learning Platform team at Flipkart, India’s largest e-commerce company. He received his Ph.D. from Washington State University. Following that he conducted postdoctoral research at University of North Carolina at Charlotte, which was followed by a brief stint in high frequency trading at Transmaket in Chicago. More recently he led the data mining team in Guavus, a startup doing big data analytics in the telecom domain and Indix, a startup doing data science in the e-commerce domain. His research interests include machine learning and graph theory.Jojo Moolayil is an artificial intelligence, deep learning, machine learning, and decision science professional with over five years of industrial experience and is a published author of the book Smarter Decisions – The Intersection of IoT and Decision Science. He has worked with several industry leaders on high-impact and critical data science and machine learning projects across multiple verticals. He is currently associated with Amazon Web Services as a research scientist. He was born and raised in Pune, India and graduated from the University of Pune with a major in Information Technology Engineering. He started his career with Mu Sigma Inc., the world’s largest pure-play analytics provider and worked with the leaders of many Fortune 50 clients. He later worked with Flutura – an IoT analytics startup and GE. He currently resides in Vancouver, BC. Apart from writing books on decision science and IoT, Jojo has also been a technical reviewer for various books on machine learning, deep learning and business analytics with Apress and Packt publications. He is an active data science tutor and maintains a blog at http://blog.jojomoolayil.com.CHAPTER 1 – INTRODUCTION DEEP LEARNINGA brief introduction to Machine Learning and Deep Learning. We explore foundational topics within the subject that provide us the building blocks for several topics within the subject.CHAPTER 2 – INTRODUCTION TO PYTORCHA quick-start guide to PyTorch and a comprehensive introduction to tensors, linear algebra and mathematical operations for Tensors. The chapter provides the required PyTorch foundations for readers to meaningfully implement practical Deep Learning solutions for various topics within the book. Advanced PyTorch topics are explored as and when touch-based during the course of exercises in later chapter.CHAPTER 3- FEED FORWARD NETWORKS (30 PAGES)In this chapter, we explore the building blocks of a neural network and build an intuition on training and evaluating networks. We briefly explore loss functions, activation functions, optimizers, backpropagation, that could be used for training. Finally, we would stitch together each of these smaller components into a full-fledged feed-forward neural network with PyTorch.CHAPTER 4-AUTOMATIC DIFFERENTIATION IN DEEP LEARNINGIn this chapter we open this black box topic within backpropagation that enables training of neural networks i.e. automatic differentiation. We cover a brief history of other techniques that were ruled out in favor of automatic differentiation and study the topic with a practical example and implement the same using PyTorchs Autograd module.CHAPTER 5 – TRAINING DEEP NEURAL NETWORKSIn this chapter we explore few additional important topics around deep learning and implement them into a practical example. We will delve into specifics of model performance and study in detail about overfitting and underfitting, hyperparameter tuning and regularization. Finally, we will leverage a real dataset and combined our learnings from the beginning of this book into a practical example using PyTorch.CHAPTER 6 – CONVOLUTIONAL NEURAL NETWORKS (35 PAGES)Introduction to Convolutional Neural Networks for Computer Vision. We explore the core components with CNNs with examples to understand the internals of the network, build an intuition around the automated feature extraction, parameter sharing and thus understand the holistic process of training CNNs with incremental building blocks. We also leverage hands-on exercises to study the practical implementation of CNNs for a simple dataset i.e. MNIST (classification of handwritten digits), and later extend the exercise for a binary classification use-case with the popular cats and dogs’ dataset.CHAPTER 7 – RECURRENT NEURAL NETWORKSIntroduction to Recurrent Neural Networks and its variants (viz. Bidirectional RNNs and LSTMs). We explore the construction of a recurrent unit, study the mathematical background and build intuition around how RNNs are trained by exploring a simple four step unrolled network. We then explore hands-on exercises in natural language processing that leverages vanilla RNNs and later improve their performance by using Bidirectional RNNS combined with LSTM layers.CHAPTER 8 – RECENT ADVANCES IN DEEP LEARNINGA brief note of the cutting-edge advancements in the field will be added. We explore important inventions within the field with no implementation details, however focus on the applications and the path forward.
Practical Machine Learning for Streaming Data with Python
Design, develop, and validate machine learning models with streaming data using the Scikit-Multiflow framework. This book is a quick start guide for data scientists and machine learning engineers looking to implement machine learning models for streaming data with Python to generate real-time insights.You'll start with an introduction to streaming data, the various challenges associated with it, some of its real-world business applications, and various windowing techniques. You'll then examine incremental and online learning algorithms, and the concept of model evaluation with streaming data and get introduced to the Scikit-Multiflow framework in Python. This is followed by a review of the various change detection/concept drift detection algorithms and the implementation of various datasets using Scikit-Multiflow.Introduction to the various supervised and unsupervised algorithms for streaming data, and their implementation on various datasets using Python are also covered. The book concludes by briefly covering other open-source tools available for streaming data such as Spark, MOA (Massive Online Analysis), Kafka, and more.WHAT YOU'LL LEARN* Understand machine learning with streaming data concepts* Review incremental and online learning* Develop models for detecting concept drift* Explore techniques for classification, regression, and ensemble learning in streaming data contexts* Apply best practices for debugging and validating machine learning models in streaming data context* Get introduced to other open-source frameworks for handling streaming data.WHO THIS BOOK IS FORMachine learning engineers and data science professionalsDr. Sayan Putatunda is an experienced data scientist and researcher. He holds a Ph.D. in Applied Statistics/ Machine Learning from the Indian Institute of Management, Ahmedabad (IIMA) where his research was on streaming data and its applications in the transportation industry. He has a rich experience of working in both senior individual contributor and managerial roles in the data science industry with multiple companies such as Amazon, VMware, Mu Sigma, and more. His research interests are in streaming data, deep learning, machine learning, spatial point processes, and directional statistics. As a researcher, he has multiple publications in top international peer-reviewed journals with reputed publishers. He has presented his work at various reputed international machine learning and statistics conferences. He is also a member of IEEE.Chapter 1: An Introduction to Streaming DataChapter Goal: Introduce the readers to the concept of streaming data, the various challenges associated with it, some of its real-world business applications, various windowing techniques along with the concepts of incremental and online learning algorithms. This chapter will also help in understanding the concept of model evaluation in case of streaming data and provide and introduction to the Scikit-Multiflow framework in Python.No of pages- 35Sub -Topics1. Streaming data2. Challenges of streaming data3. Concept drift4. Applications of streaming data5. Windowing techniques6. Incremental learning and online learning7. Illustration : Adopting batch learners into incremental learners8. Introduction to Scikit-Multiflow framework9. Evaluation of streaming algorithmsChapter 2: Change DetectionChapter Goal: Help the readers to understand the various change detection/concept drift detection algorithms and its implementation on various datasets using Scikit-Multiflow.No of pages : 35Sub - Topics:1. Change detection problem2. Concept drift detection algorithms3. ADWIN4. DDM5. EDDM6. Page HinkleyChapter 3: Supervised and Unsupervised Learning for Streaming DataChapter Goal: Help the readers to understand the various regression and classification (including Ensemble Learning) algorithms for streaming data and its implementation on various datasets using Scikit-Multiflow. Also, discuss some approaches for clustering with streaming data and its implementation using Python.No of pages: 35Sub - Topics:1. Regression with streaming data2. Classification with streaming data3. Ensemble Learning with streaming data4. Clustering with streaming dataChapter 4: Other Tools and the Path ForwardChapter Goal: Introduce the readers to the other open source tools for handling streaming data such as Spark streaming, MOA and more. Also, educate the reader about additional reading for advanced topics within streaming data analysis.No of pages: 35Sub - Topics:1. Other tools for handling streaming data1.1.1. Apache Spark1.1.2. Massive Online Analysis (MOA)1.1.3. Apache Kafka2. Active research areas and breakthroughs in streaming data analysis3. Conclusion
C Programming on Raspberry Pi
The Raspberry Pi has traditionally been programmed using Python. Although this is a very powerful language, many programmers may not be familiar with it. C on the other hand is perhaps the most commonly used programming language and all embedded microcontrollers can be programmed using it.The C language is taught in most technical colleges and universities and almost all engineering students are familiar with using it with their projects. This book is about using the Raspberry Pi with C to develop a range of hardware-based projects. Two of the most popular C libraries, wiringPi and pigpio are used.The book starts with an introduction to C and most students and newcomers will find this chapter invaluable. Many projects are provided in the book, including using Wi-Fi and Bluetooth to establish communication with smartphones.Many sensor and hardware-based projects are included. Both wiringPi and pigpio libraries are used in all projects. Complete program listings are given with full explanations. All projects have been fully tested and work.The following hardware-based projects are provided in the book:> Using sensors> Using LCDs> I 2 C and SPI buses> Serial communication> Multitasking> External and timer interrupts> Using Wi-Fi> Webservers> Communicating with smartphones> Using Bluetooth> Sending data to the cloudProgram listings of all Raspberry Pi projects developed in this book are available on the Elektor website. Readers can download and use these programs in their projects. Alternatively, they can customize them to suit their applications.Prof. Dr. Dogan Ibrahim is a Fellow of the Institution of Electrical Engineers. He is the author of over 60 technical books, published by publishers including Wiley, Butterworth, and Newnes. He is the author of over 250 technical papers, published in journals, and presented in seminars and conferences
Der pragmatische Programmierer (2. Auflg.)
Ihr Weg zur Meisterschaft - die 2. vollständig überarbeitete Auflage, 04/2021.Der Pragmatische Programmierer ist eines dieser seltenen Fachbücher, die Sie im Lauf der Jahre immer wieder lesen werden. Egal, ob Sie Programmiereinsteiger oder erfahrener Praktiker sind, stets können Sie neue Einsichten gewinnen.David Thomas und Andrew Hunt schrieben 1999 die erste Ausgabe dieses einflussreichen Buches, um ihren Kunden zu helfen, bessere Software zu entwickeln und die Freude am Programmieren wiederzuentdecken. Ihre pragmatischen Profitipps helfen bis heute einer ganzen Generation von Programmierern, den Kosmos der Software-Entwicklung zu erkunden, unabhängig von einer bestimmten Sprache oder Methodik oder einem bestimmten Framework.Ihre »Pragmatische Philosophie« hat den Weg bereitet für Hunderte von Büchern, Screencasts und Hörbüchern sowie Tausende von Karrieren und Erfolgsgeschichten. Zwanzig Jahre später untersuchen die Autoren nun erneut, was einen modernen Programmierer ausmacht. Die Themen reichen von persönlicher Verantwortung über berufliche Entwicklung bis hin zu Architekturtechniken, die Ihren Code flexibel, leicht anpassbar und wiederverwendbar halten.In kurzen Abschnitten, die auch einzeln gelesen werden können, erläutern die Autoren nicht nur die Best Practices, sondern auch Fallstricke bei der Software-Entwicklung. Anschauliche Beispiele und interessante Analogien machen dieses Buch zu einem Lesevergnügen.Egal ob Einsteiger, erfahrener Programmierer oder Manager für Softwareprojekte: Wer die Profitipps der Autoren bei der täglichen Arbeit anwendet, wird seine Produktivität, Genauigkeit und Zufriedenheit rasch steigern und damit als Pragmatischer Programmierer auch langfristig erfolgreich seinErfahren Sie im Buch, wie Sie:den Verfall von Software bekämpfenRedundanz vermeidenflexiblen, dynamischen und anpassungsfähigen Quelltext schreibenIhr Handwerkszeug optimal nutzenvermeiden, mit dem Zufall zu programmierendie richtigen Anforderungen findensich vor Sicherheitslücken schützenProbleme beim nebenläufigen Code lösenTeams aus Pragmatischen Programmierern bildeneffektiv testendas Pragmatic Starter Kit implementierenIhre Anwender begeisternLeseprobe (PDF-Link)
Neuronale Netze mit C# programmieren
Mit praktischen Beispielen für Machine Learning im Unternehmenseinsatz.Sie wollen neuronale Netze und Machine-Learning-Algorithmen mit C# entwickeln? Dann finden Sie in diesem Buch eine gut verständliche Einführung in die Grundlagen und es wird Ihnen gezeigt, wie Sie neuronale Netze und Machine-Learning-Algorithmen in Ihren eigenen Projekten praktisch einsetzen.Mithilfe von Beispielen erstellen und trainieren Sie Ihr erstes neuronales Netz zur vorausschauenden Wartung einer Produktionsmaschine.Im Praxisteil lernen Sie dann, wie Sie TensorFlow-Modelle in ML.NET benutzen oder Infer.NET direkt verwenden können. Des Weiteren nutzen Sie die Predictive- und Sentiment-Analyse, um sich mit Machine-Learning-Algorithmen vertraut zu machen.Alle im Buch vorgestellten Projekte sind in C# programmiert und stehen als Download zur Verfügung. Grundkenntnisse in C# werden für die Arbeit mit dem Buch vorausgesetzt. Alle Projekte lassen sich ohne größere Rechnerressourcen umsetzen.Daniel Basler arbeitet als Lead Developer und Softwarearchitekt. Seine Schwerpunkte liegen auf Cross-Platform-Apps, Android, JavaScript und Microsoft-Technologien. Er entwickelt u.a. Software für Regal- und Flächenlagersysteme sowie Anlagenvisualisierung und setzt in diesem Umfeld verstärkt Machine-Learning-Methoden ein. Darüber hinaus schreibt er regelmäßig Artikel für die Fachzeitschriften dotnetpro und web&mobile Developer.Leseprobe (PDF-Link)
PHP 8 Objects, Patterns, and Practice
Learn how to develop elegant and rock-solid systems using PHP, aided by three key elements: object fundamentals, design principles, and best practices. The 6th edition of this popular book has been fully updated for PHP 8, including attributes, constructor property promotion, new argument and return pseudo-types, and more. It also covers many features new since the last edition including typed properties, the null coalescing operator, and void return types. This book provides a solid grounding in PHP's support for objects, it builds on this foundation to instill core principles of software design and then covers the tools and practices needed to develop, test, and deploy robust code.PHP 8 Objects, Patterns, and Practice begins by covering PHP's object-oriented features. It introduces key topics including class declarations, inheritance, and reflection. The next section is devoted to design patterns. It explains the principles that make patterns powerful. You’ll cover many of the classic design patterns including enterprise and database patterns. The last segment of the book covers the tools and practices that can help turn great code into a successful project. The section shows how to manage multiple developers and releases with git, and how to manage builds and dependencies with Composer. It also explores strategies for automated testing and continuous integration.After reading and using this book, you will have mastered object-oriented enhancements, design patterns, and the essential development tools available for PHP 8.WHAT YOU WILL LEARN* Work with object fundamentals: write classes and methods, instantiate objects, and create powerful class hierarchies using inheritanceMaster advanced object-oriented features, including static methods and properties, managing error conditions with exceptions, and creating abstract classes and interfaces * Understand and use design principles to deploy objects and classes effectively in your projects* Discover a set of powerful patterns that you can implement in your own projects* Guarantee a successful project including unit testing; version control and build, installation, and package management; and continuous integrationWHO THIS BOOK IS FORAnyone with at least a basic knowledge of PHP who wants to use its object-oriented features in their projects. It is also for PHP coders who want to learn about the practices and tools (version control, testing, continuous integration, etc) that can make projects safe, elegant and stable.MATT ZANDSTRA has worked as a web programmer, consultant, and writer for over two decades. He is the author of SAMS Teach Yourself PHP in 24 Hours (three editions) and is a contributor to DHTML Unleashed. He has written articles for Linux Magazine, Zend, IBM DeveloperWorks, and php|architect Magazine, among others. Matt was a senior developer/tech lead at Yahoo and API tech lead at LoveCrafts. Matt works as a consultant advising companies on their architectures and system management, and also develops systems primarily with PHP, and Java. Matt also writes fiction.Part I. Objects.-1. PHP: Design and Management.-2. PHP and Objects.-3. Object Basics.-4. Advanced Features.-5. Object Tools.-6. Objects and Design.-Part II. Patterns.-7. What Are Design Patterns? Why Use Them?.-8. Some Pattern Principles.-9. Generating Objects.-10. Patterns for Flexible Object Programming.-11. Performing and Representing Tasks.-12. Enterprise Patterns.-13. Database Patterns.-Part III. Practice.-14. Good (and Bad) Practice.-15. PHP Standards.-16. PHP Using and Creating Components with Composer.-17. Version Control with Git.-18. Testing.-19. Automated Build with Phing.-20. Vagrant.-21. Continuous Integration.-22. Objects, Patterns, and Practice.-23. App A: Bibliography.-24. App B: A Simple Parser.
Visualizing Data in R 4
Master the syntax for working with R’s plotting functions in graphics and stats in this easy reference to formatting plots. The approach in Visualizing Data in R 4 toward the application of formatting in ggplot() will follow the structure of the formatting used by the plotting functions in graphics and stats. This book will take advantage of the new features added to R 4 where appropriate including a refreshed color palette for charts, Cairo graphics with more fonts/symbols, and improved performance from grid graphics including ggplot 2 rendering speed.Visualizing Data in R 4 starts with an introduction and then is split into two parts and six appendices. Part I covers the function plot() and the ancillary functions you can use with plot(). You’ll also see the functions par() and layout(), providing for multiple plots on a page. Part II goes over the basics of using the functions qplot() and ggplot() in the package ggplot2. The default plots generated by the functions qplot() and ggplot() give more sophisticated-looking plots than the default plots done by plot() and are easier to use, but the function plot() is more flexible. Both plot() and ggplot() allow for many layers to a plot.The six appendices will cover plots for contingency tables, plots for continuous variables, plots for data with a limited number of values, functions that generate multiple plots, plots for time series analysis, and some miscellaneous plots. Some of the functions that will be in the appendices include functions that generate histograms, bar charts, pie charts, box plots, and heatmaps.WHAT YOU WILL LEARN* Use R to create informative graphics* Master plot(), qplot(), and ggplot()* Discover the canned graphics functions in stats and graphicsFormat plots generated by plot() and ggplot()WHO THIS BOOK IS FORThose in data science who use R. Some prior experience with R or data science is recommended.Margot Tollefson, PhD is a semi-retired freelance statistician, with her own consulting business, Vanward Statistics. She received her PhD in statistics from Iowa State University and has many years of experience applying R to statistical research problems. Dr. Tollefson has chosen to write this book because she often creates graphics using R and would like to share her knowledge and experience. Her professional blog is on WordPress at vanwardstat. Social media: @vanstat1) Introduction: plot(), qplot(), and ggplot(), Plus Somea) plot() – arguments, ancillary functions, and methods; par() and layout()b) qplot() and ggplot() – aesthetics, geometries, and other useful functionsc) other plotting functions in graphics and statsPart I. An Overview of plot()2) The plot() Functiona) what the function is and how the function worksb) will use method .xy for example3) The Arguments to plot()a) Type of plot, axis labels, plot titles, display formatb) Plotting characters, character size, fonts, colors, line styles and widths4) Ancillary Functions to use with plot()a) axis(), box(), clip(), grid(), legend(), mtext(), rug()b) abline(), contour(), curve(), lines(), polypath()c) arrows(), image(), points(), polygon(), rect(), segments(), symbols(), text()d) axTicks(), identify(), locator(), pch(), strwidth(),5) The Methods for plot()a) What are methods?b) Methods in the graphics packagec) Methods in the stats package6) How to Use the Functions par() and layout()a) What par() doesb) Arguments specific to par()c) Multiple plotsPart II. A look at the ggplot2 Package7) The Functions qplot(), ggplot(), and the Specialized Notation in ggplot2a) Working with qplot()b) The ggplot() functionc) Specialized notation8) Themesa) The theme() functionb) The element_*() functions9) Aesthetics and Geometriesa) The aes() functionb) The geom_*() functions10) Controlling the Appearancea) The annotate_*() functionsb) The coord_*() functionsc) The facet_*() functionsd) The guide_*() functionse) The position_*() functionsf) The scale_*() functionsg) The stat_*() functionsAppendix I. Plots for Contingency TablesAppendix II. Plots for Continuous VariablesAppendix III. Plots for Data with a Limited Number of ValuesAppendix IV. Functions that Generate Multiple PlotsAppendix V. Plots for Time SeriesAppendix VI. Miscellaneous Plots
R2DBC Revealed
Understand the newest trend in database programming for developers working in Java, Kotlin, Clojure, and other JVM-based languages. This book introduces Reactive Relational Database Connectivity (R2DBC), a modern way of connecting to and querying relational databases from Java and other JVM languages. The book begins by helping you understand not only what reactive programming is, but why it is necessary. Then building on those fundamentals, the book takes you into the world of databases and the newly released Reactive Relational Database Connectivity (R2DBC) specification.Examples in the book are worked using the freely available MariaDB database along with MariaDB’s vendor-implementation of the R2DBC service-provider interface (SPI). Following along with the examples and the provided example code helps prepare you to work with any of the growing number of R2DBC implementations for popular enterprise databases such as Oracle Database and SQL Server. You’ll be well prepared for what is becoming the future of database access from Java and other languages built on the JVM.WHAT YOU WILL LEARN* Understand why R2DBC was created and how it utilizes the Reactive Streams API * Understand the components of the R2DBC service-provider interface* Create and manage reactive database connections and connection pools using an R2DBC client* Programmatically execute queries on a relational database using an R2DBC client* Effectively utilize transactions using an R2DBC client* Build relational database-driven applications that are event-driven and non-blockingWHO THIS BOOK IS FORSoftware developers building solutions using JVM languages and the JVM ecosystem, and developers who need an introduction to the R2DBC specification and reactive programming with relational databases and want to understand what Reactive Relational Database Connectivity is and why it came about. This book includes practical examples of using the R2DBC specification with Java and MariaDB that will provide developers with the knowledge they need to create their own solutions.ROB HEDGPETH is a professional software engineer and developer relations enthusiast residing in the bustling metropolis of Chicago, Illinois. Rob has more than 12 years of professional development experience, primarily in the application development space. Throughout the years he has contributed to the architecture and development of many apps, using a large array of languages and technologies. Now as a developer advocate and evangelist for MariaDB, Rob gets to combine his love for technology with his mission to fuel developers' curiosity and passion. IntroductionPART I. THE REACTIVE MOVEMENT AND R2DBC1. The Case for Reactive Programming2. Introduction to R2DBCPART II. THE R2DBC SERVICE-PROVIDER INTERFACE3. The Path to Implementation4. Connections5. Transactions6. Statements7. Handling Results8. Result Metadata9. Mapping Data Types10. Handling ExceptionsPART III. GETTING STARTED WITH R2DBC AND MARIADB11. Getting Stated with R2DBC12. Managing Connections13. Managing Data14. Managing Transactions15. Connection Pooling16. Practical Applications with Spring Data and R2DBC
Objektorientierte Programmierung (5. Auflg.)
Unverzichtbare Skills für guten Code - das umfassende Handbuch in 5. Auflage.Komplexe Systeme solide strukturieren, tragfähige Designs erstellen, robusten Code schreiben und wartbare Software liefern: Dafür brauchen Sie ein Repertoire, aus dem die Objektorientierung heute nicht mehr wegzudenken ist. Dieses umfassende und praxisnahe Lehrbuch hilft Ihnen, die Prinzipien der Objektorientierung zu verstehen und zur Basis Ihrer Arbeit zu machen.Leseprobe (PDF-Link)
Deep Reinforcement Learning with Python
Deep reinforcement learning is a fast-growing discipline that is making a significant impact in fields of autonomous vehicles, robotics, healthcare, finance, and many more. This book covers deep reinforcement learning using deep-q learning and policy gradient models with coding exercise.You'll begin by reviewing the Markov decision processes, Bellman equations, and dynamic programming that form the core concepts and foundation of deep reinforcement learning. Next, you'll study model-free learning followed by function approximation using neural networks and deep learning. This is followed by various deep reinforcement learning algorithms such as deep q-networks, various flavors of actor-critic methods, and other policy-based methods.You'll also look at exploration vs exploitation dilemma, a key consideration in reinforcement learning algorithms, along with Monte Carlo tree search (MCTS), which played a key role in the success of AlphaGo. The final chapters conclude with deep reinforcement learning implementation using popular deep learning frameworks such as TensorFlow and PyTorch. In the end, you'll understand deep reinforcement learning along with deep q networks and policy gradient models implementation with TensorFlow, PyTorch, and Open AI Gym.WHAT YOU'LL LEARN* Examine deep reinforcement learning * Implement deep learning algorithms using OpenAI’s Gym environment* Code your own game playing agents for Atari using actor-critic algorithms* Apply best practices for model building and algorithm training WHO THIS BOOK IS FORMachine learning developers and architects who want to stay ahead of the curve in the field of AI and deep learning.Nimish is a passionate technical leader who brings to table extreme focus on use of technology for solving customer problems. He has over 25 years of work experience in the Software and Consulting. Nimish has held leadership roles with P&L responsibilities at PwC, IBM and Oracle. In 2006 he set out on his entrepreneurial journey in Software consulting at SOAIS with offices in Boston, Chicago and Bangalore. Today the firm provides Automation and Digital Transformation services to Fortune 100 companies helping them make the transition from on-premise applications to the cloud.He is also an angel investor in the space of AI and Automation driven startups. He has co-founded Paybooks, a SaaS HR and Payroll platform for Indian market. He has also cofounded a Boston based startup which offers ZipperAgent and ZipperHQ, a suite of AI driven workflow and video marketing automation platforms. He currently hold the position as CTO and Chief Data Scientist for both these platforms.Nimish has an MBA from Indian Institute of Management in Ahmedabad, India and a BS in Electrical Engineering from Indian Institute of Technology in Kanpur, India. He also holds multiple certifications in AI and Deep Learning.Chapter 1: Introduction to Deep Reinforcement LearningChapter Goal: Introduce the reader to field of reinforcement learning and setting the context of what they will learn in rest of the bookSub -Topics1. Deep reinforcement learning2. Examples and case studies3. Types of algorithms with mind-map4. Libraries and environment setup5. SummaryChapter 2: Markov Decision ProcessesChapter Goal: Help the reader understand models, foundations on which all algorithms are built.Sub - Topics1. Agent and environment2. Rewards3. Markov reward and decision processes4. Policies and value functions5. Bellman equationsChapter 3: Model Based AlgorithmsChapter Goal: Introduce reader to dynamic programming and related algorithmsSub - Topics:1. Introduction to OpenAI Gym environment2. Policy evaluation/prediction3. Policy iteration and improvement4. Generalised policy iteration5. Value iterationChapter 4: Model Free ApproachesChapter Goal: Introduce Reader to model free methods which form the basis for majority of current solutionsSub - Topics:1. Prediction and control with Monte Carlo methods2. Exploration vs exploitation3. TD learning methods4. TD control5. On policy learning using SARSA6. Off policy learning using q-learningChapter 5: Function ApproximationChapter Goal: Help readers understand value function approximation and Deep Learning use in Reinforcement Learning.1. Limitations to tabular methods studied so far2. Value function approximation3. Linear methods and features used4. Non linear function approximation using deep LearningChapter 6: Deep Q-LearningChapter Goal: Help readers understand core use of deep learning in reinforcement learning. Deep q learning and many of its variants are introduced here with in depth code exercises.1. Deep q-networks (DQN)2. Issues in Naive DQN3. Introduce experience replay and target networks4. Double q-learning (DDQN)5. Duelling DQN6. Categorical 51-atom DQN (C51)7. Quantile regression DQN (QR-DQN)8. Hindsight experience replay (HER)Chapter 7: Policy Gradient AlgorithmsChapter Goal: Introduce reader to concept of policy gradients and related theory. Gain in depth knowledge of common policy gradient methods through hands-on exercises1. Policy gradient approach and its advantages2. The policy gradient theorem3. REINFORCE algorithm4. REINFORCE with baseline5. Actor-critic methods6. Advantage actor critic (A2C/A3C)7. Proximal policy optimization (PPO)8. Trust region policy optimization (TRPO)Chapter 8: Combining Policy Gradients and Q-LearningChapter Goal: Introduce reader to the trade offs between two approaches ways to connect together the two seemingly dissimilar approaches. Gain in depth knowledge of some land mark approaches.1. Tradeoff between policy gradients and q-learning2. The connection3. Deep deterministic policy gradient (DDPG)4. Twin delayed DDPG (TD3)5. Soft actor critic (SAC)Chapter 9: Integrated Learning and PlanningChapter Goal: Introduce reader to the scalable approaches which are sample efficient for scalable problems.1. Model based reinforcement learning2. Dyna and its variants3. Guided policy search4. Monte Carlo tree search (MCTS)5. AlphaGoChapter 10: Further Exploration and Next StepsChapter Goal: With the backdrop of having gone through most of the popular algorithms, readers are now introduced again to exploration vs exploitation dilemma, central to reinforcement learning.1. Multi arm bandits2. Upper confidence bound3. Thompson sampling
Grundkurs Theoretische Informatik
Theoretische Informatik – der Vorlesungsbegleiter. Berechenbarkeit, formale Sprachen, Algorithmik und Komplexitätstheorie sind theoretische Themen mit praktischer Relevanz, zu denen es ebenso praktische Zugänge gibt. Freuen Sie sich auf eine moderene Didaktik, die streng Formales mit Ihrer Intuition verknüpft, lernfreundlich ausarbeitet und schließlich zu jedem Thema Anwendungsfelder der Informatik vorstellt. Stefan Neubert hat nicht nur selbst Freude an der theoretischen Informatik, sondern widmet sich auch mit Leidenschaft ihrer Vermittlung zu Beginn und im Laufe des Bachelorstudiums. Eine Einführung mit vielen Aufgaben und Beispielen, auch zum Selbststudium geeignet. Aus dem Inhalt: Grundlegende mathematische NotationModelle und Grenzen der BerechenbarkeitFormale Sprachen: Endliche Automaten, kontextfreie Grammatiken, Pumping Lemmata und mehrBeweisverfahren für Korrektheit und Laufzeit von AlgorithmenParadigmen für den AlgorithmenentwurfAmortisierte Analyse und untere Schranke für LaufzeitenNP-Vollständigkeit und Reduktion 1. Einführung ... 15 1.1 ... Kompetenzen für die theoretische Arbeit ... 16 1.2 ... Themen der theoretischen Informatik ... 18 1.3 ... Anleitung fürs Buch ... 20 1.4 ... Danksagungen ... 21 2. Mathematische Notation ... 23 2.1 ... Logische Aussagen ... 24 2.2 ... Mengen ... 27 2.3 ... Relationen und Funktionen ... 32 2.4 ... Graphen ... 37 2.5 ... Unendlichkeiten und Abzählbarkeit ... 40 2.6 ... Beweistechniken ... 42 2.7 ... Aufgaben ... 57 2.8 ... Lösungen ... 58 TEIL I. Berechenbarkeit und formale Sprachen ... 65 3. Einführung in die Berechenbarkeitstheorie ... 67 3.1 ... Algorithmus ... 68 3.2 ... Zu viele Funktionen ... 69 3.3 ... Das Halteproblem ... 70 3.4 ... Kontrollfragen ... 72 3.5 ... Antworten ... 72 4. Problemtypen ... 73 4.1 ... Formalisierung von Problemen ... 73 4.2 ... Funktionen berechnen ... 75 4.3 ... Datencodierung ... 75 4.4 ... Sprachen entscheiden ... 78 4.5 ... Problemklassen der Berechenbarkeitstheorie ... 79 4.6 ... Aufgaben ... 82 4.7 ... Lösungen ... 83 5. Einführung in formale Sprachen ... 85 5.1 ... Definition ... 85 5.2 ... Die Chomsky-Hierarchie ... 88 5.3 ... Aufgaben ... 89 5.4 ... Lösungen ... 90 6. Reguläre Sprachen ... 91 6.1 ... Deterministische endliche Automaten ... 92 6.2 ... Nichtdeterministische endliche Automaten ... 103 6.3 ... Grammatiken ... 111 6.4 ... Reguläre Ausdrücke ... 120 6.5 ... Abschlusseigenschaften ... 127 6.6 ... Entscheidungsprobleme auf regulären Sprachen ... 132 6.7 ... Äquivalenzklassenzerlegung ... 134 6.8 ... Nichtreguläre Sprachen ... 139 6.9 ... Ausblick ... 144 6.10 ... Aufgaben ... 144 6.11 ... Lösungen ... 149 7. Kontextfreie Sprachen ... 161 7.1 ... Kontextfreie Grammatiken ... 162 7.2 ... Eindeutige Ableitungsbäume ... 164 7.3 ... Chomsky-Normalform ... 166 7.4 ... Exkurs: Kellerautomaten ... 170 7.5 ... Abschlusseigenschaften ... 175 7.6 ... Entscheidungsprobleme auf kontextfreien Sprachen ... 176 7.7 ... Nicht-kontextfreie Sprachen ... 181 7.8 ... Ausblick ... 183 7.9 ... Aufgaben ... 184 7.10 ... Lösungen ... 186 8. Kontextsensitive Sprachen ... 193 8.1 ... Kontextsensitive und monotone Grammatiken ... 194 8.2 ... Das Wortproblem auf kontextsensitiven Sprachen ... 195 9. Aufzählbare Sprachen ... 197 9.1 ... Turingmaschinen ... 199 9.2 ... While-Programme ... 202 9.3 ... Gödelnummern ... 218 9.4 ... Das universelle While-Programm ... 220 9.5 ... Das schrittbeschränkte universelle While-Programm ... 223 9.6 ... Diagonalisierung und min-Suche ... 224 9.7 ... Prädikate für semi-entscheidbare Sprachen ... 226 9.8 ... Semi-Entscheidbarkeit vs. Aufzählbarkeit ... 227 9.9 ... Das S-m-n-Theorem ... 228 9.10 ... Das kleenesche Rekursionstheorem ... 230 9.11 ... Weitere Modelle und Charakterisierungen ... 233 9.12 ... Aufgaben ... 233 9.13 ... Lösungen ... 235 10. Nicht Berechenbares ... 241 10.1 ... Beweise mit KRT ... 243 10.2 ... Der Satz von Rice ... 244 10.3 ... Reduktionen ... 246 10.4 ... RE-Vollständigkeit ... 250 10.5 ... Ausblick: Die arithmetische Hierarchie ... 251 10.6 ... Aufgaben ... 252 10.7 ... Lösungen ... 254 TEIL II. Algorithmik ... 259 11. Einführung in Algorithmik ... 261 12. Obere Schranken für Laufzeiten ... 263 12.1 ... Das Maschinenmodell ... 264 12.2 ... Die Laufzeit eines Algorithmus ... 267 12.3 ... Die Größe einer Eingabe ... 268 12.4 ... Die Landau-Notation ... 268 12.5 ... Aufgaben ... 271 12.6 ... Lösungen ... 272 13. Laufzeiten von Datenstrukturen ... 275 13.1 ... Arrays ... 275 13.2 ... Listen ... 277 13.3 ... Verschachtelte Datenstrukturen und Graphen ... 279 13.4 ... Aufgaben ... 281 13.5 ... Lösungen ... 282 14. Brute-Force-Algorithmen ... 285 14.1 ... Lineare Suche ... 286 14.2 ... Backtracking/Tiefensuche ... 288 14.3 ... Aufgaben ... 292 14.4 ... Lösungen ... 293 15. Greedy-Algorithmen ... 295 15.1 ... Beweis mit Austauschargument ... 296 15.2 ... Greedy stays ahead ... 302 15.3 ... Aufgaben ... 304 15.4 ... Lösungen ... 306 16. Divide and Conquer ... 313 16.1 ... Mergesort ... 314 16.2 ... Binäre Suche ... 319 16.3 ... Multiplikation großer Zahlen ... 321 16.4 ... Das Mastertheorem ... 325 16.5 ... Ausblick ... 326 16.6 ... Aufgaben ... 327 16.7 ... Lösungen ... 329 17. Dynamische Programmierung ... 335 17.1 ... Fibonacci-Zahlen ... 336 17.2 ... Rückgeld geben ... 337 17.3 ... Der Algorithmus von Dijkstra ... 341 17.4 ... Aufgaben ... 344 17.5 ... Lösungen ... 346 18. Amortisierte Analyse ... 351 18.1 ... Dynamische Arrays ... 351 18.2 ... Guthabenmethode ... 353 18.3 ... Ausblick ... 353 TEIL III. Komplexitätstheorie ... 355 19. Einführung in die Komplexitätstheorie ... 357 19.1 ... Die Komplexität eines Problems ... 358 19.2 ... Bedingte Schranken ... 358 19.3 ... Auswege für schwierige Probleme ... 359 20. Beweistechniken für untere Schranken ... 361 20.1 ... Die Ausgabegröße ... 362 20.2 ... Das informationstheoretische Argument ... 363 20.3 ... Das Adversary-Argument ... 367 20.4 ... Reduktionen ... 370 20.5 ... Aufgaben ... 372 20.6 ... Lösungen ... 374 21. P vs. NP: Bedingte untere Schranken ... 377 21.1 ... Die Komplexitätsklasse P ... 378 21.2 ... Die Komplexitätsklasse NP ... 380 21.3 ... Polynomialzeitreduktionen ... 388 21.4 ... NP-schwere und NP-vollständige Probleme ... 392 21.5 ... Ausblick: Mehr NP-vollständige Probleme ... 404 21.6 ... Aufgaben ... 405 21.7 ... Lösungen ... 406 22. Ausblick: Parametrisierte Analyse ... 408 Index ... 410
Python 3 Schnelleinstieg
* PROGRAMMIEREN LERNEN OHNE VORKENNTNISSE* IN 14 KAPITELN SCHRITT FÜR SCHRITT ZUM PROFI* EINFACHE PRAXISBEISPIELE UND ÜBUNGSAUFGABENMit diesem Buch gelingt Ihnen der Einstieg in die Python-Programmierung ohne Mühe. Sie benötigen keinerlei Vorkenntnisse.Alle Grundlagen werden anschaulich und einfach nachvollziehbar anhand von Codebeispielen erklärt. Übungsaufgaben in unterschiedlichen Schwierigkeitsstufen am Ende der Kapitel helfen Ihnen, das neu gewonnene Wissen praktisch anzuwenden und zu vertiefen.Der Autor führt Sie Schritt für Schritt in die Welt der Programmierung ein: von den Grundlagen über Objektorientierung bis zur Entwicklung von Anwendungen mit grafischer Benutzungsoberfläche. Dabei lernen Sie ebenfalls, was guten Programmierstil ausmacht und wie man Fehler in Programmtexten finden und von vornherein vermeiden kann.So gelingt es Ihnen in Kürze, Python effektiv in der Praxis einzusetzen.* Alle Grundlagen einfach erläutert* Verarbeitung von Texten und Bildern* Objektorientierte Programmierung* Grafische Benutzungsoberflächen mit tkinter* Testen, Debugging und Performance-Analyse* Übungsaufgaben in drei verschiedenen Schwierigkeitsstufen* Programmcode, Lösungen und Glossar zum DownloadMichael Weigend war mehr als 30 Jahre lang als Lehrer tätig und hält an der Universität Münster Vorlesungen zur Python-Programmierung. Er hat bereits mehrere Bücher zu den Themen Programmierung, Web Development und visuelle Modellierung geschrieben.
Python One-Liners
Python in seiner raffiniertesten FormPython Tipps und Tricks mit fortgeschrittenem NiveauProblemlösungen für den ProgrammieralltagNumPy-GrundlagenPython One-Liners zeigt Ihnen, wie man "One Liners", Einzeiler, liest und schreibt: prägnante Ausdrücke zu nützlicher Funktionalität, verpackt in einer einzigen Codezeile. Sie lernen systematisch jede Zeile von Python-Code zu entschlüsseln und zu verstehen, und werden wie ein Experte eloquentes, stark komprimiertes Python schreiben.In den fünf Kapiteln des Buches werden Tipps und Tricks, reguläre Ausdrücke, Machine Learning, Kernthemen der Datenwissenschaft und hilfreiche Algorithmen behandelt. Die ausführlichen Erläuterungen von Einzeilern führen in wichtige Konzepte der Informatik ein und fördern Ihre Programmier- und Analysefähigkeiten.Sie lernen fortgeschrittene Python-Funktionen wie Listenverständnis, Slicing, Lambda-Funktionen, reguläre Ausdrücke, Map- und Reduce-Funktionen und Slice-Zuweisungen kennen.Sie erwerben darüber hinaus Kenntnisse in diesen Bereichen:- Nutzung von Datenstrukturen zur Lösung von Problemen aus der realen Welt, wie z. B. die Verwendung boolescher Indizierung zum Auffinden von Städten mit überdurchschnittlicher Umweltverschmutzung.- Verwendung der NumPy-Grundlagen wie Array, Form, Achse, Typ, Broadcasting, fortgeschrittene Indizierung, Slicing, Sortierung, Suche, Aggregation und Statistik.- Berechnen Sie grundlegende Statistiken von mehrdimensionalen Datenfeldern und die K-Means-Algorithmen für unsupervised Learning.- Erstellen Sie fortgeschrittenere reguläre Ausdrücke unter Verwendung von Gruppierungs- und benannten Gruppen, negativen Lookaheads, maskierten Zeichen, Leerzeichen, Zeichensätzen (und negativen Zeichensätzen) und greedy/non greedy Operatoren.- Ein breites Spektrum von Informatik-Themen verstehen, einschließlich Anagramme, Palindrome, Obermengen, Permutationen, Fakultäten, Primzahlen, Fibonacci-Zahlen, Obfuszierung, Suche und algorithmische Sortierung.Am Ende des Buches werden Sie wissen, wie man Python in seiner raffiniertesten Form schreibt und prägnante, schöne Python-Kunstwerke in nur einer einzigen Zeile schafft.Christian Mayer hat einen Doktortitel in Informatik und ist der Gründer der beliebten Python-Site Finxter (https:blog.finxter.com). Mayer ist außerdem der Autor der Coffee Break Python-Reihe.
Praktische Statistik für Data Scientists
Statistische Konzepte aus der Perspektive von Data Scientists erläutert* Das Buch stellt die Verbindung zwischen nützlichen statistischen Prinzipien und der heutigen Datenanalyse-Praxis her* Ermöglicht Data Scientists, ihr Wissen über Statistik auf ein neues Level zu bringen* Übersetzung der 2. Auflage des US-Bestsellers mit Beispielen in Python und RStatistische Methoden sind ein zentraler Bestandteil der Arbeit mit Daten, doch nur wenige Data Scientists haben eine formale statistische Ausbildung. In Kursen und Büchern über die Grundlagen der Statistik wird das Thema aber selten aus der Sicht von Data Scientists behandelt. Viele stellen daher fest, dass ihnen eine tiefere statistische Perspektive auf ihre Daten fehlt.Dieses praxisorientierte Handbuch mit zahlreichen Beispielen in Python und R erklärt Ihnen, wie Sie verschiedene statistische Methoden speziell in den Datenwissenschaften anwenden. Es zeigt Ihnen auch, wie Sie den falschen Gebrauch von statistischen Methoden vermeiden können, und gibt Ratschläge, welche statistischen Konzepte für die Datenwissenschaften besonders relevant sind. Wenn Sie mit R oder Python vertraut sind, ermöglicht diese zugängliche, gut lesbare Referenz es Ihnen, Ihr statistisches Wissen für die Praxis deutlich auszubauen.Peter Bruce ist Gründer des Institute for Statistics Education bei Statistics.com. Andrew Bruce ist Principal Research Scientist bei Amazon und verfügt über mehr als 30 Jahre Erfahrung in Statistik und Data Science. Peter Gedeck ist Senior Data Scientist bei Collaborative Drug Discovery, er entwickelt Machine-Learning-Algorithmen für die Vorhersage von Eigenschaften von Arzneimittelkandidaten.
Data Science Revealed
Get insight into data science techniques such as data engineering and visualization, statistical modeling, machine learning, and deep learning. This book teaches you how to select variables, optimize hyper parameters, develop pipelines, and train, test, and validate machine and deep learning models. Each chapter includes a set of examples allowing you to understand the concepts, assumptions, and procedures behind each model.The book covers parametric methods or linear models that combat under- or over-fitting using techniques such as Lasso and Ridge. It includes complex regression analysis with time series smoothing, decomposition, and forecasting. It takes a fresh look at non-parametric models for binary classification (logistic regression analysis) and ensemble methods such as decision trees, support vector machines, and naive Bayes. It covers the most popular non-parametric method for time-event data (the Kaplan-Meier estimator). It also covers ways of solving classification problems using artificial neural networks such as restricted Boltzmann machines, multi-layer perceptrons, and deep belief networks. The book discusses unsupervised learning clustering techniques such as the K-means method, agglomerative and Dbscan approaches, and dimension reduction techniques such as Feature Importance, Principal Component Analysis, and Linear Discriminant Analysis. And it introduces driverless artificial intelligence using H2O.After reading this book, you will be able to develop, test, validate, and optimize statistical machine learning and deep learning models, and engineer, visualize, and interpret sets of data.WHAT YOU WILL LEARN* Design, develop, train, and validate machine learning and deep learning models* Find optimal hyper parameters for superior model performance* Improve model performance using techniques such as dimension reduction and regularization* Extract meaningful insights for decision making using data visualizationWHO THIS BOOK IS FORBeginning and intermediate level data scientists and machine learning engineersTSHEOP CHRIS NOKERI harnesses advanced analytics and artificial intelligence to foster innovation and optimize business performance. He has delivered complex solutions to companies in the mining, petroleum, and manufacturing industries. He completed a bachelor’s degree in information management and graduated with an honors degree in business science at the University of the Witwatersrand on a TATA Prestigious Scholarship and a Wits Postgraduate Merit Award. He also was awarded the Oxford University Press Prize. Section 1: Parametric MethodsChapter 1: An Introduction to Simple Linear RegressionChapter goal: Introduces the reader to parametric and understand the underlying assumptions of regression.Subtopics• Regression assumptions.• Detecting missing values.• Descriptive analysis.• Understand correlation.o Plot Pearson correlation matrix.• Determine covariance.o Plot covariance matrix.• Create and reshape arrays.• Split data into training and test data.• Normalize data.• Find best hyper-parameters for a model.• Build your own model.• Review model performance.o Mean Absolute Error.o Mean Squared Error.o Root Mean Squared Error.o R-squared.o Plotting Actual Values vs. Predicted Values.• Residual diagnosis.o Normal Q-Q Plot.o Cook’s D Influence Plot.o Plotting predicted values vs. residual values.o Plotting Fitted Values vs. Residual Values.o Plotting Leverage Values vs. Residual Values.o Plotting Fitted Values vs. Studentized Residual Values.o Plotting Leverage Values vs. Studentized Residual Values.Chapter 2: Advanced Parametric MethodsChapter goal: Highlights methods of dealing with the problem of under-fitting and over-fitting.Subtopics• Issue of multi-collinearity.• Explore methods of dealing with the problem under-fitting and over-fitting.• Understand Ridge, RidgeCV and Lasso regression models.• Find best hyper-parameters for a model.• Build regularized models.• Compare performance of different regression methods.o Mean Absolute Error.o Mean Squared Error.o Root Mean Squared Error.o R-squared.o Plotting actual values vs. predicted values.Chapter 3: Time Series AnalysisChapter goal: Covers a model for identifying trends and patterns in sequential data and how to forecast a series.• What is time series analysis?• Underlying assumptions of time series analysis.• Different types of time series analysis models.• The ARIMA model.• Test of stationary.o Conduct an ADF Fuller Test.• Test of white noise.• Test of correlation.o Plot Lag Plot.o Plot Lag vs Autocorrelation Plot.o Plot ACF.o Plot PACF.• Understand trends, seasonality and trends.o Plot seasonal components.• Smoothen a time series using Moving Average, Standard Deviation and Exponential techniques.o Plot smoothened time series.• Determine rate of return and rolling rate of return.• Determine parameters of ARIMA model.• Build ARIMA model.• Forecast ARIMA.o Plot forecast.• Residual diagnosisChapter 4: High Quality Time SeriesChapter goal: Explores Prophet for better series forecast.• Difference between statsmodel and Prophet.• Understand components in Prophet.• Data preprocessing.• Develop a model using Prophet.• Forecast a series.o Plot forecasted.o Plot seasonal components.• Evaluate model performance using Prophet.Chapter 4: Logistic RegressionChapter goal: Introduces reader to logistic regression – a powerful classification model.Subtopics• Find missing values• Understand correlation.o Plotting Pearson correlation matrix.• Determine covariance.o Plotting covariance matrix.• PCA for dimension reduction.o Plotting scree plot.• Normalize data.• Hyper-parameter tuning.• Create a pipeline.• Develop a Logit model.• Model evaluation.o Tabulate classification report.o Tabulate confusion matrix.o Plot ROC Curveo Find AUC.o Plot Precision Recall Curve.o Find APS.o Plot learning curve.Chapter 5: Dimension Reduction and Multivariate Analysis using Linear DiscriminantChapter goal: Discusses the difference between linear discriminant analysis and logistic regression and how linear discriminant analysis can be used for other purposes other than classification.Subtopics• Difference between logistic regression and discriminant analysis.• Purpose of discriminant analysis.• Model fitting.• Model evaluation.o Tabulate classification report.o Tabulate confusion matrix.o Plot ROC Curveo Find AUC.o Plot Precision Recall Curve.o Find APS.o Plot learning curve.Section 2: Ensemble methodsChapter 6: Finding Hyper Lanes Using Support Vector MachineChapter goal: Highlights ways of finding hyper lanes using Linear Support Vector Chain including its pros and cons.• Understand support vector machine.• Find hyper lanes using SVM.• Scenarios in which SVM performs better.• Disadvantages of SVM. • Model fitting.• Model evaluation.o Tabulate classification report.o Tabulate confusion matrix.o Plot ROC curveo Find AUC.o Plot Precision Recall curve.o Find APS.o Plot learning curve.Chapter 7: Classification Using Decision TreeChapter goal: Explores how decision trees are formed and visualized them.Subtopics• Discussing entropy.• Information gain• Structure of decision trees• Visualizing decision trees• Modelling fitting• Model evaluation.o Tabulating classification report.o Tabulating confusion matrix.o Plotting ROC curveo Finding AUC.o Plotting Precision Recall curve.o Finding APS.o Plotting learning curve.Chapter 8: Back to the ClassicChapter goal: Gives an overview of this classical algorithm and explain why it is still relevant up to this date.Subtopics• The Naïve Bayes theorem.• Unpacking Gaussian Naïve Bayes.• Model fitting.• Hyper-parameter tuning.• Create a pipeline.• Model evaluation.o Tabulate classification report.o Tabulate confusion matrix.o Plot ROC Curveo Find AUC.o Plot Precision Recall Curve.o Find APS.o Plot learning curve.Section 3: Non-Parametric MethodsChapter 9: Finding Similarities and Dissimilarities Using Cluster AnalysisChapter goal: Explain clustering and explore three main clustering algorithms (K-Means, Agglomerative and DBSCAN).• An introduction to cluster analysis.• Types of clustering algorithms.• Normalize data.• Dimension reduction using PCA.o Finding number of components• Find number of clusters.o Elbow curve.• Clustering K-Means.• Fit K-Means model.• Plot K-Means clusters.• Clustering using Agglomerative algorithm.o Techniques of calculating similarities/dissimilarities• Fit Agglomerative.• Plot Agglomerative clusters.• Clustering using Density-Based Spatial Clustering Algorithm with Noise (DBSCAN)• Fit DBSCAN.• Plot DBSCAN clusters.Chapter 10: Survival AnalysisChapter: Provides an overview of survival analysis (a model used commonly used in medical and insurance industries) by detailing the commonly used estimator – Kaplan Meier Fitter.Subtopics• Create a survival table.• The survival function.• An introduction to the Kaplan Meier Estimator.• Finding confidence intervals.• Tabulating cumulative density estimates.• Tabulating survival function estimates.• Plotting survival curve.• Plotting cumulative density.• Model evaluation.Chapter 11: Neural NetworksChapter goal: Discusses the fundamentals of neural networks and ways of optimizing networks for better accuracy.Subtopics• Forward propagation.• Backward propagation.• Forward pass.• Backward pass.• Cost function.• Gradient.• The vanishing gradient problem.• Other functions.• Optimizing networks.• Bernoulli Restricted Boltzmann Machine.• Multi-Layer Perceptron.• Regularizing networks.• Dropping layers.• Model evaluation.• Model evaluation.o Tabulate classification report.o Tabulate confusion matrix.o Plot ROC Curveo Find AUC.o Plot Precision Recall Curve.o Find APS.o Plot training and validation loss across epochs.o Plot training and validation accuracy across epochs.Chapter 12: Driverless AI Using H2OChapter goal: Covers a new library that helps organizations accelerate their adoption of AI.• How H2O works.• Data processing.• Model training.• Model evaluation.• AutoML.
Job Ready Java
PREPARE YOURSELF TO TAKE ON NEW AND EXCITING JAVA PROGRAMMING CHALLENGES WITH THIS ONE-STOP RESOURCEJob Ready Java delivers a comprehensive and foundational approach to Java that is immediately applicable to real-world environments. Based on the highly regarded and effective Software Guild Java Bootcamp: Object Oriented Programming course, this book teaches you the basic and advanced Java concepts you will need at any entry-level Java position.With the “Pulling It Together” sections, you’ll combine and integrate the concepts and lessons taught by the book, while also benefiting from:* A thorough introduction to getting set up with Java, including how to write, compile, and run Java programs with or without a Java IDE * Practical discussions of the basics of the Java language, including syntax, program flow, and code organization * A walk through the fundamentals of Object-Oriented Programming including Classes, Objects, Interfaces, and Inheritance, and how to leverage OOP in Java to create elegant code. * Explorations of intermediate and advanced Java concepts, including Maven , unit testing, Lambdas, Streams, and the Spring Framework Perfect for Java novices seeking to make a career transition, Job Ready Java will also earn a place in the libraries of Java developers wanting to brush up on the fundamentals of their craft with an accessible and up-to-date resource.HAYTHEM BALTI, PHD, is Director of Curriculum at Wiley’s Software Guild and mthree. He has created courses used by thousands of Software Guild Students in Java, Python, Go, and other development and data science competencies. He earned his doctorate in Computer Engineering and Computer Science from the University of Louisville.ALAN GALLOWAY is Director of Instruction at Wiley’s Software Guild and mthree. H:e supervises a team of instructors who deliver large-scale training programs in technology.About the Authors vAbout the Technical Writer viiAbout the Technical Editors viiAcknowledgments ixIntroduction xxvPART I: GETTING SET UP 1LESSON 1: INSTALLING JAVA 2The Java Universe 3The Java Development Kit 3The Java Virtual Machine 4The Java Runtime Environment 5Installing OpenJDK 5Installing OpenJDK on Microsoft Windows 6Checking for an Existing JDK on Windows 6Installing OpenJDK 7Verifying the Installation 10Installing OpenJDK on macOS 13Checking for an Existing JDK on macOS 13Installing OpenJDK 13Verifying the Installation 17Creating Your First Java Program 17Writing the Program 18Compiling and Running the Program 19Dealing with Syntax Errors 21Using the Compiler and Java Virtual Machine 22Summary 22LESSON 2: INSTALLING A DEVELOPMENT ENVIRONMENT: NETBEANS 24Getting Started 25Understanding the Value of an IDE 25Using the Source Code Editor 25Using the Build Automation Tools 26Using the Debugger 26Installing NetBeans 27Using an Installer 27Installing on Windows 28Installing on macOS 32Installing Binaries 37Installing Binaries on Windows 40Adding the JDK 42Running NetBeans 44Summary 45LESSON 3: USING AN INTEGRATED DEVELOPMENT ENVIRONMENT 46Using an IDE 47Creating a New Project 48Coding the “Hello, World!” Program 53Compiling the Code in NetBeans 57Running the Program 59Using the Debugging Tools 60Compilation and Syntax Errors 61Runtime and Logic Errors 63Understanding Source Control 67Summary 69PART II: BASICS OF OBJECT ORIENTED PROGRAMMING 70LESSON 4: USING PROGRAM STATEMENTS AND VARIABLES 71Approach 72Concepts 73Computers 73Data vs. Information 73Programs and Programming 74Models and Metaphors 74Objects 74Specifications 75Syntax vs. Semantics 75Language Building Blocks 75Comments 75Single-Line Comments 76Multiline Comments 76Doc Comments 77Using Comments 78Identifiers 79Data Types 80Statically Typed Languages 81Type Conversion 81Literals 82Variables 82Constants 84Operators and Expressions 84Three Flavors of Operators 85Operator Precedence 88Pulling It All Together: Mathematical Expressions and Operators 89Summary 93Exercises 93Exercise 1: ABeginning.java 94Exercise 2: ProjectGutenberg.java 95Exercise 3: CommentingCode.java 97Exercise 4: AllTheMath.java 98Exercise 5: BucketsOfFun.java 100LESSON 5: COLLECTING AND PARSING INPUT FROM THE USER 103Console Input and Output 104Adder Version 1 104Adder Version 2 106Declaring and Initializing Our Variables 106Setting Up a Scanner Object 106Understanding the Command Line 107Getting the Values from the User 108Going from Strings to Integers 108Adding the Numbers Together 109Using Loops to Gather User Input 111Parsing Data 112Dealing with Bad Numbers: NumberFormatException 113Scanner Problems 115Summary 121Exercises 121Exercise 1: Quest for the User Input 121Exercise 2: Don’t Forget to Store It 123Exercise 3: Passing the Turing Test 124Exercise 4: Healthy Hearts 125Exercise 5: Mini Mad Libs 126LESSON 6: PULLING IT ALL TOGETHER: BUILDING A USEFUL PROGRAM 127Planning the Program 128Identifying the Variables 128Planning the Steps 128Creating the Code 129Declaring the Variables 129Getting Input 130Converting the Strings 131Calculating the Area and Perimeter 132Calculating the Cost 133Displaying the Results 133Running the Program 135Summary 135Exercises 136Exercise 1: Mapping Instructions to Code 136Exercise 2: Adding Prompts for Costs 136Exercise 3: Adding Multiple Windows 136Exercise 4: Adding Validation 137LESSON 7: CONTROLLING PROGRAM FLOW 138What Can Our Code Do? 139Decisions and Boolean Expressions 139if Statements 139if-else Statements 142Chaining if-else Statements 144Evaluating Multiple Conditions 146Conditional-And and Conditional-Or Operators 147Exclusive-Or 149Ternary or Conditional Operator 150switch Statement 151Falling Through with a switch Statement 153Comparing for Equal Strings 155Summary 158Exercises 159Exercise 1: What Month is It? 159Exercise 2: Guess Me 159Exercise 3: Birthstones 160Exercise 4: Trivia Night 161Exercise 5: Space Rustlers 162Exercise 6: Picky Eater 163Exercise 7: Field Day 165LESSON 8: LOOPING PROGRAM FLOW 167Loops 167Using while Loops 168Initializing the while Loop 171Incrementing the while Loop 171Breaking a Loop 172Using do-while Loops 174Making do-while Shine 176Using for Loops 179Initializing the for Loop 181Terminating the for Loop 181Incrementing a for Loop 181Summary 184Exercises 184Exercise 1: Surfacing in BewareTheKraken.java 185Exercise 2: Do or Do Not 185Exercise 3: Guess Me Finally 186Exercise 4: for and Twenty Blackbirds 187Exercise 5: Spring Forward, Fall Back 188Exercise 6: for Times 189Exercise 7: for Times for 189Exercise 8: Nesting for Loops 190Exercise 9: Traditional Fizz Buzz 191LESSON 9: UNDERSTANDING FLOWCHARTS AND ALGORITHMS 193Flowchart Basics 194Sequences 194Branches 195Loops 196Flowcharting 197Flowchart Example 197Summary 198Exercises 200Exercise 1: A Guessing Game 200A Possible Flowcharting Solution 201The Guessing Game Flowchart 201The Guessing Game Code 203LESSON 10: ADDING RANDOMNESS TO YOUR PROGRAMS 207Initializing the Random Object 208Including the Random Class 208Seeding Random Numbers 208Generating Random Integers 209Generating Random Doubles 210Revisiting the Number Guessing Game 212Other Random Options 215Summary 215Exercises 215Exercise 1: A Little Chaos 216Exercise 2: Opinionator—Making Random Choices 217Exercise 3: High Roller 219Exercise 4: Coin Flipper 220Exercise 5: Guess Me More 220Exercise 6: Fortune Cookie 221LESSON 11: DEBUGGING 222Creating a File to Debug 222Setting Breakpoints 224Stepping through Code 226Running the Debugger 226Examining Variables 229The Console and the Debugger 232Summary 234Exercises 234Exercise 1: Odd Odd Numbers 234Exercise 2: A Simple Question of If 235LESSON 12: ADDING METHODS 237Why Methods? 238Defining Methods 238Method Signature 239Method Naming Conventions 239Return Values 240Using Return Values 241Input Parameters 242Matching Number of Parameters 244Matching Parameter Types 245Passing Parameters 246Method Forms 248No Return Value, No Parameters 248Return Value, No Parameters 248No Return Value, One or More Parameters 249Return Value, One or More Parameters 249The staticKeyword 249Pulling It All Together 250Identifying the Similarities 252Identifying the Differences 252Creating the Method 252Setting the Name 252Determining Parameters 253Setting a Return Type 253Our Basic Definition 253Our Method Body 254Using the Method 255Scope 257Debugging and Step Into 259Setting a Breakpoint in a Method 260Stepping into Code 262Debugging and Scope 265Summary 265Exercises 265Exercise 1: Method to the Madness 266Exercise 2: Return to Sender 267Exercise 3: MatchWork 268Exercise 4: Barely Controlled Chaos 269LESSON 13: ORGANIZING WITH ARRAYS 272What is an Array? 273Types of Arrays 274Element vs. Index 275Declaring Arrays 276Single-Dimensional Arrays 276Rectangular Arrays 276Jagged Arrays 277Initializing Arrays 277Initializing a Single-Dimensional Array 278Initializing a Rectangular Array 279Initializing a Jagged Array 280Accessing Array Elements 281Accessing Elements in a Single-Dimensional Array 281Accessing Elements in a Multidimensional Array 283Accessing Elements in a Jagged Array 284Iterating through Arrays 284Iterating through Multidimensional and Jagged Arrays 286Sum the Elements of an Array 288Looping Back to Front, with a Twist 289Printing Pairs of Elements 290Changing the Size of an Array 291Dealing with Errors 293Summary 293Exercises 294Exercise 1: A Rainbow 294Exercise 2: Still Positive 295Exercise 3: Fruit Basket 296Exercise 4: Simple Combination 297Exercise 5: Hidden Nuts 297Exercise 6: Summative Sums 298PART III: FUNDAMENTALS OF CLASSES AND OBJECTS 299LESSON 14: OBJECT-ORIENTED CONCEPTS 300Abstraction 301Object Orientation 301Types 302Public Interface/Private Implementation 302Encapsulation and Data Hiding 303Single Responsibility Principle and Cohesion 303Delegation 304Summary 304LESSON 15: CREATING CLASSES AND TYPES 305Creating New Types 305Classes vs. Objects 307Properties, Accessors, and Mutators 307Dot Operator 308this Keyword 309Methods/Behaviors 309Constructors 309Object Instantiation and Method Invocation 311Static Keyword 312Static and the Main Method 313Static and Constant Values 313Static and Utility Methods 314Pulling It All Together 315Creating a New Class 316Going Static 320When to Go Static 323Existing Static Methods 325Summary 325Exercises 326Exercise 1: Class Modeling 327Exercise 2: Refactoring 328Exercise 3: A Multiclass Problem 330LESSON 16: MANAGING STORAGE AND MEMORY 331Programs and Memory 331The Stack 332The Heap 334Garbage Collection 338Reference and Null Values 339Summary 341LESSON 17: EXPLORING INTERFACES, COMPOSITION, AND INHERITANCE 342How Do These Tools Help? 343Interfaces 344Composition and Inheritance 345Composition 345Inheritance 346Using Interfaces, Composition, and Inheritance 346Summary 347LESSON 18: DIVING INTO INTERFACES 348What is an Interface? 349Declaring an Interface 349Implementing an Interface 350Interface Restrictions 352Implementing Multiple Interfaces 352Extending an Interface 354Interfaces and Polymorphism 356Summary 357LESSON 19: DIVING INTO COMPOSITION 358What is Composition? 359Book without Composition 359Book with Composition 360Summary 362Exercises 362Exercise 1: Classroom Composition 362Exercise 2: Cookbook 363LESSON 20: DIVING INTO INHERITANCE 365Everything Extends Object 366Terminology 366Access Control 367Inheritance 368Code Reuse through Inheritance 371Method Overloading 371Method Overriding 373Constructors 375Polymorphism 380Calling Methods Polymorphically 382Abstract Base Classes 383Summary 383Exercises 383Exercise 1: Working with Shape 384LESSON 21: UNDERSTANDING COLLECTIONS 385Collections in Java 385Javadoc 386Collections Framework Structure 387Interface vs. Implementation 389Iterator 390Commonly Used Interfaces in the Collections Framework 390Quick Look at List 390ArrayList 390Stack 391Quick Look at Set 391HashSet 391TreeSet 392Quick Look at Map 392HashMap 392TreeMap 392Summary 393LESSON 22: INTRODUCTION TO LISTS 394List 394Types of Lists 395ArrayList 395LinkedList 395Stack 397Understanding Generics 397Using Lists 398Instantiating a List 398Adding Items to a List 401Accessing Items in a List 402Inserting Items into a List 403Removing Items from a List 403Enhanced Approaches to Access List Items 405The Enhanced for Loop and Lists 406Visiting Each Element: Iterators 407Creating an Iterator 407Using the Iterator 408Summary 410Exercises 410Exercise 1: Three Threes 410Exercise 2: Mixed-Up Animals 411LESSON 23: EXPLORING MAPS 412Map Interface 412HashMap 413Creating and Adding Entries to a Map 413Instantiating a Map 413Adding Data to a Map 414Manipulating with Entries in a Map 415Looking Up Values in a Map 415Replacing Data in a Map 417Removing Values from a Map 417Getting Keys and Listing Mapped Values in a Map 417Listing All the Keys 417Listing All the Values Key by Key 420Listing All the Values: Value Collection 421Summary 423Exercises 423Exercise 1: State Capitals 423Exercise 2: A Reusable User I/O Class 424Exercise 3: Student Quiz Scores 427LESSON 24: USING SIMPLE FILE INPUT AND OUTPUT 429Data Storage and Representation 430File Format, Marshaling, and Unmarshaling 431Student Class 432File Format Example 433Marshaling and Unmarshaling Approach 433Simple File I/O 434Writing to a File 435Exceptions 436The OutFile.txt File 437Reading from a File 438Summary 440Exercises 440Exercise 1: Creating State Capitals 441Exercise 2: Hashing the State Capitals 442Exercise 3: A State Guessing Game 442Exercise 4: Objectifying States 443LESSON 25: APPLYING APPLICATION DESIGN 446CRUD Applications 447Using a Tiered Design 448The Basic Tiers 448The Model-View-Controller Pattern 448Packages 449Software Development Lifecycle Overview 450Waterfall 450Iterative Development 451Agile Development 451Project Lifecycle 452Phase 1: Inception 452Phase 2: Elaboration 452Phase 3: Construction 453Phase 4: Transition 453Iterations 453Summary 454LESSON 26: HANDLING EXCEPTIONS 455Exception Handling 456Catch or Specify Requirement 459Exception Types 459Handling (Catching) Exceptions 459try Block 459catch Block 461finally Block 462Specifying and Throwing Exceptions 464Exception Translation and Encapsulation 465Summary 466Exercises 466Exercise 1: Keep On Asking 466Exercise 2: Arrays Gone Bad 466Exercise 3: Exiting Gracefully 468LESSON 27: PULLING IT ALL TOGETHER: BUILDING THE CLASS ROSTER APP 469Application Requirements and Use Cases 470Understanding theApplication Structure 470Interface Relationships 471Composition Relationships 472Inheritance Relationships 472Classes and Interfaces in Our Application 472MVC Rules of the Game 473Construction Approach 473Setting Up the Class Roster Application Shell 474Creating the Menu System 477UserIO and UserIOConsoleImpl 478ClassRosterController 482App 483ClassRosterView 484ClassRosterController 485Adding a Student Use Case 487Student (DTO) 487ClassRosterDao and ClassRoster-DaoFileImpl 488ClassRosterDao 488ClassRosterDaoFileImpl 490ClassRosterView 491ClassRosterController 493Viewing All Students Use Case 494ClassRosterDaoFileImpl 494ClassRosterView 495ClassRosterController 496Getting a Student Use Case 497ClassRosterDaoFileImpl 498ClassRosterView 498ClassRosterController 499Removing a Student Use Case 501ClassRosterDaoFileImpl 501ClassRosterView 501ClassRosterController 502Handling Unknown Command and Exiting 504ClassRosterView 504ClassRosterController 504Working with Dependency Injection 506Implementation 507ClassRosterController 507ClassRosterView 508App 508Handling Application Exceptions 509ClassRosterDaoException 509Adding File Persistence 512ClassRosterDaoFileImpl 512Constants 512unmarshalStudent 513loadRoster 514marshalStudent 516writeRoster 517addStudent 518getAllStudents 519getStudent 520removeStudent 520ClassRosterDao 521ClassRosterView 522ClassRosterController 522Create roster.txt 525Summary 527Exercises 527Exercise 1: DVD Library Update 527Exercise 2: Electronic Address Book 528PART IV: INTERMEDIATE JAVA 531LESSON 28: EXPLORING THE SERVICE LAYER 532The Role of the Service Layer 532Service Layer Exceptions 534Service Layer API Design 534New Business Rules 534Create a Student 535Define the Method Signature 535Define the Return Type 535Define the Errors That Might Occur in This Method 535Service Layer Methods for Getting Students 536Get All Students 536Get a Single Student 537Remove a Student 537Summary 537LESSON 29: PULLING IT ALL TOGETHER: CODING THE CLASS ROSTER SERVICE LAYER 538Create a Service Layer Interface 539Create New Exceptions 542ClassRosterDuplicateIdException 542ClassRosterDataValidation Exception 543Refactor/Rename ClassRoster-DaoException 543Create the Service Layer Implementation 546Constructor and DAO Member 547Validating Student Data 547Create Student 548Get All Students 549Get One Student 549Remove Student 550Modify the Controller 550Replace Member Field 551Modify Constructor 551Replace Calls to DAO Methods with Calls to the Service Layer Method 551Modify the App 553Add the Audit Log Feature 554Audit DAO Interface and Implementation 554Modify the Service Layer 556Add Member Field 556Modify the Constructor 556Modify createStudent 556Modify removeStudent 557Modify App 558Summary 559LESSON 30: DOING UNIT TESTING 560Unit Testing 561Types of Unit Testing 561Black-Box vs. Glass-Box Testing 562Stateful vs. Stateless Components 562Test-Driven Development and Red/Green/Refactor 562Test Stubs 563JUnit 563Test Setup and Teardown 563Annotations 564Asserts 564Given/When/Then 564Stateless Unit Testing 565What Makes a Good Unit Test? 565Designing a Test Plan 565Happy Llama Test Plan 567Implementing Unit Tests 568Creating the Test Class 568Writing Happy Llama Tests 569Running JUnit Tests 571Summary 575LESSON 31: TESTING STATEFUL CODE 577Unit Testing Stateful Code 578Separating Production and Test Data 579Adding hashCode and equals to Student 580Adding toString to Student 582Creating the Test Class 583The Set Up and Tear Down Methods 584Arrange/Act/Assert for Stateful Code 585Class Roster DAO Test Design 586Add Student 586Get Student 588ClassRosterDaoTest: Adding and Getting a Student 589Get All Students 590ClassRosterDaoTest: Adding and Getting All Students 590Remove Student 592ClassRosterDaoTest: Adding and Removing Students 592Unit Testing the Service Layer 594Planning the Test Design 595Creating the Test Class 595Creating the DAO Stubs 596ClassRosterAuditDaoStubImpl 597ClassRosterDaoStubImpl 597Test Setup 599Test Implementation 600testCreateValidStudent 600testCreateStudentDuplicateId 601testCreateStudentInvalidData 602testGetAllStudents 603testGetStudent 603testRemoveStudent 604Summary 605Exercises 605Exercise 1: Testing the Address Book App 605Exercise 2: Testing the DVD Library 606LESSON 32: INCLUDING MAGIC NUMBERS AND ENUMS 607Magic Numbers 608Enums 608Creating Enums for Fixed Constants 609Using Enums 609Getting Values from an Enum 611Enum Members 612Summary 616Exercises 616Exercise 1: How Many Days until Friday? 617Exercise 2: Playing Cards 617LESSON 33: MANIPULATING DATES AND TIMES 618ISO Calendar 619Human Time and Machine Time 619Local and Zoned Classes 619Periods and Duration 620Working with LocalDate Objects 620Creating LocalDates 620Converting Dates to and from Strings 622Formatting Dates 623Using Localization 625Getting the Time with LocalDateTime 626Working with Date Calculations 628Calculating Dates in the Future and Past 628Calculating the Time between Two Dates 630Working with Legacy Dates 632Converting Date Objects 632Converting a GregorianCalendar Object 633Summary 635Exercises 635Exercise 1: Birthday Calculator 635Exercise 2: It’s The End of the World as We Know It 636Exercise 3: Tracking Your Time 636LESSON 34: USING THE BIGDECIMAL CLASS 638Exploring BigDecimal 639Constructing BigDecimals 639Understanding Scale 641Understanding Rounding Modes 641Working with BigDecimal 642Setting Scale 642Setting Scale without Rounding Mode 643Rounding BigDecimals 643Doing Calculations with BigDecimals 645Dividing BigDecimals 646Summary 648Exercises 648Exercise 1: Interest Calculator 648Exercise 2: Car Lot Service Layer 649LESSON 35: WORKING WITH LAMBDAS AND STREAMS 653Using Aggregate Operations 654Understanding Pipelines and Streams 654Streams vs. Iteration 655Exploring Lambdas 655Working with Stream and Lambda Syntax 655The forEach() Stream Method 656The filter Stream Method 660The map Stream Method 661The collect Stream Method 663Further Syntax 664Summary 665Exercises 665Exercise 1: Only the Young 665Exercise 2: DVD Library Update 666PART V: ADVANCED JAVA 667LESSON 36: WORKING WITH THE SPRING FRAMEWORK 668Dependency Injection and Programming to Interfaces 669Why Spring? 670Understanding the Spring Approach 670Plain Old Java Objects 671Templates 671Pulling It All Together: Spring DI in Action 673Spring DI with XML 674XML Configuration File 675Update the App Class 676Spring DI with Annotations 677Class Annotations 678Summary 681LESSON 37: INTRODUCING MAVEN 682What is Maven? 683Project Object Model 683Project Identification 685Dependencies 685Build Settings 686Dependency Management 686Maven Lifecycle 687Summary 687LESSON 38: PULLING IT ALL TOGETHER: BUILDING THE CLASS ROSTER WITH SPRING 689Include the Spring Libraries 690How Do I Know What My Dependency Entry Should Be? 691Add Spring Configuration Files 692Convert the App Class to Use Spring 693Defining Beans 694Modifying the App Class 696Convert the Unit Tests to Use Spring 697Defining Beans 698Modifying the Test Class Constructor 699Exception Conditions 700Summary 701Exercises 701Exercise 1: DVD Library 701PART VI: APPENDICES 702APPENDIX A: CODE CHECKLIST 703Functionality 703Style 703APPENDIX B: JAVA CONCEPTS STUDY LIST 705Variables 705Methods 705Arrays 706Making Decisions 706Loops 706Java/JVM 706Objects 707Interfaces 708Inheritance 708N-Tier Design 708Collections 709Exceptions 709Lambdas/Streams 709Spring Core 709APPENDIX C: AGILE APPROACH CHECKLIST FOR CONSOLE CRUD APPLICATIONS 710Assumptions 710Requirement Steps 711Design Steps 711Construction Steps 712Index 714
Machine Learning mit Python (3. Auflg.)
Das umfassende Praxis-Handbuch für Data Science, Deep Learning und Predictive Analytics in 3. Auflage 03/2021.Mit diesem Buch erhalten Sie eine umfassende Einführung in die Grundlagen und den effektiven Einsatz von Machine-Learning- und Deep-Learning-Algorithmen und wenden diese anhand zahlreicher Beispiele praktisch an. Dafür setzen Sie ein breites Spektrum leistungsfähiger Python-Bibliotheken ein, insbesondere Keras, TensorFlow 2 und Scikit-learn. Auch die für die praktische Anwendung unverzichtbaren mathematischen Konzepte werden verständlich und anhand zahlreicher Diagramme anschaulich erläutert.Die dritte Auflage dieses Buchs wurde für TensorFlow 2 komplett aktualisiert und berücksichtigt die jüngsten Entwicklungen und Technologien, die für Machine Learning, Neuronale Netze und Deep Learning wichtig sind. Dazu zählen insbesondere die neuen Features der Keras-API, das Synthetisieren neuer Daten mit Generative Adversarial Networks (GANs) sowie die Entscheidungsfindung per Reinforcement Learning.Ein sicherer Umgang mit Python wird vorausgesetzt.Aus dem Inhalt:Trainieren von Lernalgorithmen und Implementierung in PythonGängige Klassifikationsalgorithmen wie Support Vector Machines (SVM), Entscheidungsbäume und Random ForestNatural Language Processing zur Klassifizierung von FilmbewertungenClusteranalyse zum Auffinden verborgener Muster und Strukturen in Ihren DatenDeep-Learning-Verfahren für die BilderkennungDatenkomprimierung durch DimensionsreduktionTraining Neuronaler Netze und GANs mit TensorFlow 2Kombination verschiedener Modelle für das Ensemble LearningEinbettung von Machine-Learning-Modellen in WebanwendungenStimmungsanalyse in Social NetworksModellierung sequenzieller Daten durch rekurrente Neuronale NetzeReinforcement Learning und Implementierung von Q-Learning-AlgorithmenInhalt & Leseprobe (PDF-Link)
SAP Conversational AI
Lassen Sie Bots für sich sprechen! Ob Kundenservice oder digitaler Assistent – mit diesem Buch lernen Sie, wie Sie mit SAP Conversational AI eigene Chatbots programmieren. Die Autoren führen Sie durch alle Phasen der Entwicklung vom Training des Bots bis zur Anbindung an die SAP-Systeme. Sie erhalten wertvolle Tipps zur Auswahl geeigneter Anwendungsfälle sowie für Monitoring und Optimierung. Aus dem Inhalt: Conversational User ExperienceTerminologie und GrundkonzepteSAP Conversational AIFrage-und-Antwort-Bots (Q&A) und reguläre BotsChatbots trainieren, verbinden und verbessernAnwendungsfälleDeployment und Betrieb von BotsFallback und DisambiguierungBerechtigungen und Datenschutz Einleitung ... 15 TEIL I. Einführung ... 21 1. Ziele und Einsatzgebiete von Conversational User Experience ... 23 1.1 ... Was ist Conversational User Experience? ... 23 1.2 ... Terminologie und Grundkonzepte ... 26 1.3 ... Geschichte der Chatbots ... 38 1.4 ... Chatbot vs. digitaler Assistent ... 41 1.5 ... Zusammenfassung ... 46 2. Einführung in SAP Conversational AI ... 47 2.1 ... Die Plattform SAP Conversational AI im Überblick ... 48 2.2 ... Verwaltungs- und Einstellungsmöglichkeiten im Benutzerprofil ... 57 2.3 ... Arten von Bots ... 71 2.4 ... Erste Schritte zur Erstellung eines Chatbots ... 73 2.5 ... Verwendung vordefinierter Chatbot-Bestandteile ... 80 2.6 ... Zusammenfassung ... 82 TEIL II. Entwicklung eines Chatbots ... 83 3. Einen Chatbot trainieren ... 85 3.1 ... Überblick über die Registerkarte »Train« ... 86 3.2 ... Gesprächsabsichten mit Intents definieren ... 95 3.3 ... Das Entitätenkonzept ... 100 3.4 ... Entitätsanreicherungen hinzufügen ... 115 3.5 ... Das Datenset testen ... 120 3.6 ... Unterstützte Sprachen ... 122 3.7 ... Anwendung von NLP-Technologien ... 123 3.8 ... Training des Beispiel-Bots ... 125 3.9 ... Zusammenfassung ... 129 4. Einen Chatbot aufbauen ... 131 4.1 ... Überblick über die Registerkarte »Build« ... 132 4.2 ... Skills verwalten ... 138 4.3 ... Trigger verwenden ... 145 4.4 ... Voraussetzungen definieren ... 150 4.5 ... Aktionen erstellen ... 155 4.6 ... Zusammenfassung ... 177 5. Den Chatbot verbinden ... 179 5.1 ... Bereitstellungskanäle ... 179 5.2 ... SAP Conversational AI Web Client ... 189 5.3 ... Fallback-Kanäle ... 194 5.4 ... Slack-Kanal für den Beispiel-Bot konfigurieren ... 197 5.5 ... Zusammenfassung ... 200 6. Den Chatbot verbessern ... 201 6.1 ... Einträge filtern ... 202 6.2 ... Protokoll der Sprachverarbeitung auswerten ... 204 6.3 ... Verwendungsmetriken ... 208 6.4 ... Trainingsanalyse ... 212 6.5 ... Konversationsprotokolle ... 218 6.6 ... Zusammenfassung ... 220 7. Bot-Einstellungen ... 221 7.1 ... Einstellungen eines Chatbots ... 223 7.2 ... Versionen ... 234 7.3 ... Umgebungen verwenden ... 240 7.4 ... Zusammenfassung ... 245 8. Frage-Antwort-Bots ... 247 8.1 ... Frage-Antwort-Bot trainieren ... 249 8.2 ... Frage-Antwort-Bots bauen ... 256 8.3 ... Frage-Antwort-Bot verbessern ... 259 8.4 ... Einen eigenen Frage-Antwort-Bot erstellen ... 261 8.5 ... Zusammenfassung ... 266 TEIL III. Fortgeschrittene Chatbot-Konzepte ... 267 9. Weiterführende Konzepte ... 269 9.1 ... Laufzeitverhalten eines Chatbots testen ... 269 9.2 ... Nutzung von API-Endpunkten ... 275 9.3 ... Feinheiten des Laufzeitverhaltens eines Chatbots ... 288 9.4 ... Mehrsprachigkeit und Ermittlung der Sprache ... 298 9.5 ... Skill-Disambiguierung ... 303 9.6 ... Zusammenfassung ... 308 10. Das Bot-Entwicklungsprojekt -- ein Praxisbeispiel ... 309 10.1 ... Von der Idee zum Chatbot-Projekt ... 310 10.2 ... Vor Beginn der Implementierung ... 317 10.3 ... Implementierung des Chatbots ... 331 10.4 ... Den fertigen Bot bereitstellen ... 347 10.5 ... Zusammenfassung ... 352 11. Integration von SAP Conversational AI ... 353 11.1 ... Integration externer Ressourcen ... 354 11.2 ... Integration in die SAP Integration Suite ... 369 11.3 ... Integration ins SAP Fiori Launchpad ... 381 11.4 ... Berechtigungskonzept und Single Sign-on ... 391 11.5 ... Konfiguration eines SAP-S/HANA-Frontend-Servers ... 394 11.6 ... Automatisierte Tests der Enterprise Edition ... 396 11.7 ... Zusammenfassung ... 404 12. Ausblick und zukünftige Technologien ... 405 12.1 ... Zukünftige Funktionalität von SAP Conversational AI ... 405 12.2 ... Trends im Bereich der künstlichen Intelligenz ... 408 12.3 ... Trends im Bereich Conversational User Experience ... 412 12.4 ... Zusammenfassung ... 414 A. Glossar ... 419 B. Literaturverzeichnis ... 421 C. Das Autorenteam ... 425 Index ... 427
Objektorientierte Programmierung
Komplexe Projekte solide strukturieren, tragfähige Designs erstellen, guten Code schreiben und wartbare Software liefern: Dafür brauchen Entwickler ein Repertoire, aus dem Objektorientierung nicht wegzudenken ist. In diesem Buch finden Sie alles, was Sie brauchen, um sich gründlich einzuarbeiten und die Prinzipien der OOP zur Basis Ihrer eigenen Arbeit zu machen. Die Autoren erläutern alle Themen anschaulich und verständlich anhand einer Vielzahl typischer Beispiele. Mit UML-Diagrammen und gut kommentierten Codebeispielen in den gängigsten objektorientierten Sprachen bringen sie Ihnen die Umsetzung nahe. Da so manches lehrreiche Detail erst auftaucht, wenn Sie konkrete Probleme lösen, ziehen sie viele praktische Anwendungsfälle heran und geben immer wieder Tipps, wie Sie bad smells vermeiden und sauberen Code schreiben. Anhand eines größeren Projekts bekommen Sie zudem einmal von Anfang bis Ende gezeigt, wie Sie objektorientierte Programmierung konsequent realisieren können. So profitieren Sie von der langjährigen Erfahrung der Autoren mit allen Aspekten der Entwicklung komplexer Software. Aus dem Inhalt: Prinzipien des objektorientierten EntwurfsKapselung von DatenPolymorphieStruktur objektorientierter SoftwareKlassen und PrototypenKonkrete und abstrakte DatentypenBeziehungen zwischen ObjektenKlassen von Werten und ObjektenVererbungsbeziehungenMehrfachvererbungStatische und dynamische KlassifizierungPersistenzErzeugung und Zerstörung von ObjektenObjekte in Aktion und in InteraktionObjekte als VertragspartnerModule als konfigurierbare und änderbare KomponentenMVCAspekte und ObjektorientierungBeispielprojektGlossar Materialien zum Buch ... 12 1. Einleitung ... 13 1.1 ... Was ist Objektorientierung? ... 13 1.2 ... Hallo liebe Zielgruppe ... 14 1.3 ... Was bietet dieses Buch (und was nicht)? ... 16 1.4 ... Warum überhaupt Objektorientierung? ... 22 2. Die Basis der Objektorientierung ... 27 2.1 ... Die strukturierte Programmierung als Vorläufer der Objektorientierung ... 28 2.2 ... Die Kapselung von Daten ... 31 2.3 ... Polymorphie ... 33 2.4 ... Die Vererbung ... 34 3. Die Prinzipien des objektorientierten Entwurfs ... 39 3.1 ... Prinzip 1: Prinzip einer einzigen Verantwortung ... 40 3.2 ... Prinzip 2: Trennung der Anliegen ... 46 3.3 ... Prinzip 3: Wiederholungen vermeiden ... 48 3.4 ... Prinzip 4: offen für Erweiterung, geschlossen für Änderung ... 51 3.5 ... Prinzip 5: Trennung der Schnittstelle von der Implementierung ... 54 3.6 ... Prinzip 6: Umkehr der Abhängigkeiten ... 57 3.7 ... Prinzip 7: mach es testbar ... 63 4. Die Struktur objektorientierter Software ... 65 4.1 ... Die Basis von allem: das Objekt ... 65 4.2 ... Klassen: Objekte haben Gemeinsamkeiten ... 85 4.3 ... Beziehungen zwischen Objekten ... 120 4.4 ... Klassen von Werten und Klassen von Objekten ... 137 5. Vererbung und Polymorphie ... 155 5.1 ... Die Vererbung der Spezifikation ... 155 5.2 ... Polymorphie und ihre Anwendungen ... 195 5.3 ... Die Vererbung der Implementierung ... 242 5.4 ... Mehrfachvererbung ... 265 5.5 ... Statische und dynamische Klassifizierung ... 295 6. Persistenz ... 305 6.1 ... Serialisierung von Objekten ... 305 6.2 ... Speicherung in Datenbanken ... 306 6.3 ... Abbildung auf relationale Datenbanken ... 313 6.4 ... Normalisierung und Denormalisierung ... 326 7. Abläufe in einem objektorientierten System ... 343 7.1 ... Erzeugung von Objekten mit Konstruktoren und Prototypen ... 344 7.2 ... Fabriken als Abstraktionsebene für die Objekterzeugung ... 355 7.3 ... Objekte löschen ... 404 7.4 ... Objekte in Aktion und in Interaktion ... 419 7.5 ... Kontrakte: Objekte als Vertragspartner ... 463 7.6 ... Exceptions: wenn der Kontrakt nicht eingehalten werden kann ... 480 8. Module und Architektur ... 511 8.1 ... Module als konfigurierbare und änderbare Komponenten ... 511 8.2 ... Die Präsentationsschicht: Model, View, Controller (MVC) ... 520 9. Aspekte und Objektorientierung ... 533 9.1 ... Trennung der Anliegen ... 533 9.2 ... Aspektorientiertes Programmieren ... 545 9.3 ... Anwendungen der Aspektorientierung ... 556 9.4 ... Annotations ... 569 10. Objektorientierung am Beispiel: eine Webapplikation in JavaScript ... 579 10.1 ... OOP in JavaScript ... 581 10.2 ... Die Anwendung im Überblick ... 589 10.3 ... Das Framework ... 594 10.4 ... Die Applikation ... 612 10.5 ... Ein Fazit -- und was noch übrig bleibt ... 636 Anhang ... 639 A. Verwendete Programmiersprachen ... 641 B. Glossar ... 661 C. Die Autoren ... 675 Index ... 677