Programmierung
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
Building Custom Tasks for SQL Server Integration Services
Build custom SQL Server Integration Services (SSIS) tasks using Visual Studio Community Edition and C#. Bring all the power of Microsoft .NET to bear on your data integration and ETL processes, and for no added cost over what you’ve already spent on licensing SQL Server. New in this edition is a demonstration deploying a custom SSIS task to the Azure Data Factory (ADF) Azure-SSIS Integration Runtime (IR).All examples in this new edition are implemented in C#. Custom task developers are shown how to implement custom tasks using the widely accepted and default language for .NET development.Why are custom components necessary? Because even though the SSIS catalog of built-in tasks and components is a marvel of engineering, gaps remain in the available functionality. One such gap is a constraint of the built-in SSIS Execute Package Task, which does not allow SSIS developers to select SSIS packages from other projects in the SSIS Catalog. Examples in this book show how to create a custom Execute Catalog Package task that allows SSIS developers to execute tasks from other projects in the SSIS Catalog. Building on the examples and patterns in this book, SSIS developers may create any task to which they aspire, custom tailored to their specific data integration and ETL needs.WHAT YOU WILL LEARN* Configure and execute Visual Studio in the way that best supports SSIS task development* Create a class library as the basis for an SSIS task, and reference the needed SSIS assemblies* Properly sign assemblies that you create in order to invoke them from your task* Implement source code control via Azure DevOps, or your own favorite tool set* Troubleshoot and execute custom tasks as part of your own projects* Create deployment projects (MSIs) for distributing code-complete tasks* Deploy custom tasks to Azure Data Factory Azure-SSIS IRs in the cloud* Create advanced editors for custom task parametersWHO THIS BOOK IS FORFor database administrators and developers who are involved in ETL projects built around SQL Server Integration Services (SSIS). Readers do not need a background in software development with C#. Most important is a desire to optimize ETL efforts by creating custom-tailored tasks for execution in SSIS packages, on-premises or in ADF Azure-SSIS IRs.ANDY LEONARD is Chief Data Engineer at Enterprise Data & Analytics, an SSIS trainer, consultant, developer of the Data Integration Lifecycle Management (DILM) Suite, a Business Intelligence Markup Language (Biml) developer, and BimlHero. He is a SQL Server database and data warehouse developer, community mentor, engineer, and occasional farmer. He is co-author of Apress books SQL Server Integration Services Design Patterns and The Biml Book, and author of the Apress book Data Integration Life Cycle Management with SSIS and the Stairway to Integration Services series at SQLServerCentral.com.1. The Story of This Book2. Preparing the Environment3. Creating the Assembly Project4. Check-In the Project Code5. Signing the Assembly6. Preparing to Build7. Coding the Task8. Coding a Simple Task Editor9. Signing and Binding10. Expanding Editor Functionality11. Minimal Coding for the Complex Editor12. Editor Integration13. Implement Views and Properties14. Implement New Connection15. Implement Use32bit, Synchronized, and LoggingLevel SettingsView Properties16. Refactoring SourceConnection17. Refactoring the SSIS Package Hierarchy18. Instrumentation and Validation19. Crushing Bugs20. Adding Synchronous Execution Properties21. Testing the Task22. Building the Setup Project23. Using the Execute Catalog Package Task in an SSIS Framework24. Deploying to Azure-SSIS25. Test the Task in Azure Data Factory26. Notes from my Experience
Der Computer erscheint im Holozän
Die sieben Weltwunder wurden bereits in der Antike beschrieben, etwa zur selben Zeit wie die mechanische Rechenhilfe Abacus, ein Zählrahmen mit Holz- oder Glasperlen. Dieses Buch beschreibt und diskutiert die sieben Weltwunder der IT, ohne die unsere digitale Wirtschaft und Gesellschaft kaum überlebensfähig scheint: Computermaus, Datenbanken, Kryptografie, Graphgrammatiken, Internet, Blockchain und Soft Computing.Jedes Weltwunder der IT wird kurz charakterisiert, bevor Anwendungsoptionen für Wirtschaft und Gesellschaft exemplarisch aufgezeigt und gewürdigt werden.Das Werk richtet sich an alle, die sich mit der digitalen Transformation auseinandersetzen. Es soll helfen, digitale Entwicklungen im eigenen Unternehmen, in der Verwaltung oder im öffentlichen wie im privaten Leben zu positionieren und zu reflektieren.ANDREAS MEIER hat Musik an der Musikakademie in Wien und Mathematik an der ETH in Zürich studiert, wo er doktorierte und habilitierte. Er arbeitete in internationalen Forschungsinstitutionen und Organisationen und war an der Universität Fribourg, Schweiz für eBusiness und eCommerce verantwortlich. Er gründete und leitete das Forschungszentrum Fuzzy Management Methods (FMsquare.org).FABRICE TSCHUDI hat Kommunikationswissenschaften an der Universität Fribourg und Wirtschaftsinformatik an der Universität Bern studiert. Er setzt sich für eine Vision von digitalen Systemen ein, die zu einer lebensdienlichen Wirtschaft und Gesellschaft im Sinne von nachhaltigem Wohlergehen beitragen. Er begleitet Organisationen auf dem Weg zu „wertvoller Digitalisierung“ und ist überzeugt, dass partizipative Lern- und Arbeitsformate hierfür ein zentraler Erfolgsfaktor sind.De septem mundi miraculis - Vom Abacus zur digitalen Rechenmaschine - Die 7 Weltwunder der IT - Wo führt die Reise hin? - Literatur
Beginning Rust Programming
QUICKLY LEARN THE ROPES WITH THE RUST PROGRAMMING LANGUAGE USING THIS PRACTICAL, STEP-BY-STEP GUIDEIn Beginning Rust Programming, accomplished programmer and author Ric Messier delivers a highly practical, real-world guide to coding with Rust. Avoiding dry, theoretical content and “Hello, world”-type tutorials of questionable utility, the book dives immediately into functional Rust programming that takes advantage of the language’s blazing speed and memory efficiency.Designed from the ground up to give you a running start to using the multiparadigm system programming language, this book will teach you to:* Solve real-world computer science problems of practical importance * Use Rust’s rich type system and ownership model to guarantee memory-safety and thread-safety * Integrate Rust with other programming languages and use it for embedded devices Perfect for programmers with some experience in other languages, like C or C++, Beginning Rust Programming is also a great pick for students new to programming and seeking a user-friendly and robust language with which to start their coding career.ABOUT THE AUTHORRIC MESSIER is Senior Information Security Consultant with FireEye Mandiant. He is an author, consultant, and educator who holds GCIH, GSEC, CEH, and CISSP certifications and has published several books on information security and digital forensics. He is familiar with a wide variety of languages, including BASIC, Pascal, C, C++, C#, Rexx, Perl, Python, Java, Go, Swift, and Objective-C. VISIT US AT WROX.COM FOR FREE CODE SAMPLES.Introduction xixCHAPTER 1: GAME OF LIFE: THE BASICS 1Game of Life: The Program 2Starting with Cargo 4Putting the Pieces Together 5Bringing In External Functionality 5Namespaces 6Generating the Game Grid 7Dissecting Main 8Defining Functions 8Defining Variables 9Datatypes 11Arrays 12Control Structures 14Looking at More Function Functions 16Returning Values 16Passing Parameters 18Scope 21Compiling Programs 22Summary 24Exercises 25Additional Resources 25CHAPTER 2: EXTENDED LIFE 27Understanding Ownership 28Extending Life 30Adding Modules 32Working with Command-Line Arguments 34Option Types 36Reading from Files 39Extracting Values 41Populating from the Vector 42Outputting to the Terminal 43Using Colors 44Printing Generations 44Summary 46Exercises 48Additional Resources 48CHAPTER 3: BUILDING A LIBRARY 49References 50First Pass 53Traits and Implementations 56Self-Identification 60The Rest 60Second Pass 62The Driver 65Summary 67Exercises 69Additional Resources 69CHAPTER 4: HANGMAN 71Our Data 74The Traits 77Implementations 79Using the Option Enum 82Finishing Up the Implementation 83Reading Files and Selecting Words 84Handling Errors Concisely 85Generics and Bounds 87A Vector of Lines 88The Rest of the Story 90Initialization 91Playing the Game 92Summary 94Exercises 95Additional Resources 95CHAPTER 5: IN CONCURRENCE 97The Dining Philosophers 98Mutexes and Semaphores 101Interprocess Communications 103The Main Event 106Unix Sockets 107File and Directory Handling 109Closures 112Threading in the Main 114Creating Streams 115Cryptographic Hashing 116Creating Threads 117Summary 118Exercises 119Additional Resources 119CHAPTER 6: CLIENTS AND SERVERS 121Planning 123Network Programming 125Programming Sockets 128Rust TCP Server 131Handling Requests 134Operating System Calls 137Summary 139Exercises 140Additional Resources 140CHAPTER 7: CLIENT-SIDE APPLICATIONS 141Encryption 142Encryption Algorithms 144Going Hybrid 145Encryption Algorithms 147Transport Layer Security (TLS) 147TLS Server 151Remote Access Client 154Creating the Connection 156Validating Input 157Regular Expressions 157The Final Function 159Summary 163Exercises 164Additional Resources 164CHAPTER 8: GOING RELATIONAL 165Application Architectures 166n-Tier Applications 167Microservices 169Model-View-Controller 171Databases 172Structured Query Language 172Server or Embedded 175Accessing Databases 176Writing a Database Program 177Main and Modules 178Database Functions 183Adding Records 184Listing Records 186Summary 189Exercises 190Additional Resources 190CHAPTER 9: NO(SQL) GOING 191Assertions 192Design by Contract 195NoSQL 198Working with MongoDB 202Inserting Data 202Reading in Data from a File 206Populating the Database 207Retrieving Values 209Summary 213Exercises 214Additional Resources 214CHAPTER 10: WEB COMMUNICATIONS 215Style Guides 216Hypertext Transfer Protocol 219Programmatic Communication 222Web Communication Over TLS 227Client Communication 229Jumping Ahead 232Jumping Back 237Summary 238Exercises 239Additional Resources 240CHAPTER 11: WEB SERVER 241Offensive vs. Defensive Programming 242Web Application Communications 245Web Application Parameters 245Asynchronous JavaScript and XML 248Representational State Transfer 249APIs in Node.js and Python 250API Server in Rust 252Rust Rocket 255Summary 262Exercises 262Additional Resources 263CHAPTER 12: GETTING TO THE SYSTEM 265Extending Functionality 266Windows Registry 272Programmatic Access to the Registry 275Using Rust to Access the Registry 277System Information with Rust 282Persistence (for Fun) 287Summary 289Exercises 290Additional Resources 290CHAPTER 13: DEVICE PROGRAMMING 291Logging 292Using syslog 292Using Windows Event Logs 299Working with Raspberry Pi 305Lighting Lights 310Reading GPIO 315Summary 318Exercises 319Additional Resources 319CHAPTER 14: COLLECTING STUFF 321Arrays and Vectors 322Linked Lists 329Stacks 333Queues 336Sorting 337Search Trees 340Summary 345Exercises 346Additional Resources 346CHAPTER 15: ODDS AND SODS 347Unit Testing 348Testing Types 350Test Plans 351Unit Tests 353Recursion 360Machine Learning 364Chatbots 366Neural Networks 369Summary 371Exercises 373Additional Resources 373Index 375
Python Challenge
Ihr persönlicher Python-Coach: Fit für Prüfung, Job-Interview und Praxis – mit 100 Aufgaben und MusterlösungenMit 100 Übungsaufgaben und Programmierpuzzles inklusive Lösungen zum Knobeln und Erweitern Ihrer Kenntnisse bietet Ihnen die »Python Challenge« ein kurzweiliges Lernen, eine fundierte Vorbereitung auf die nächste Prüfung oder ein Jobinterview. Dabei werden viele praxisrelevante Themengebiete wie Strings, Datenstrukturen, Rekursion, Arrays usw. berücksichtigt.Jedes Themengebiet wird in einem eigenen Kapitel behandelt, wobei zunächst kurz auf die Grundlagen eingegangen wird. Danach folgen rund 10 bis 15 Übungsaufgaben verschiedener Schwierigkeitsgrade.So lassen sich die Python-Programmierkenntnisse effektiv verbessern. Dabei helfen insbesondere detaillierte Musterlösungen inklusive der genutzten Algorithmen zu allen Aufgaben. Ebenso werden von Michael Inden alternative Lösungswege beschrieben, aber auch mögliche Fallstricke und typische Fehler im Python-Code analysiert.Abgerundet wird das Buch durch drei Anhänge. Einer beschäftigt sich mit dem Python-Kommandozeileninterpreter, der zum Ausprobieren der Codeschnipsel und Beispiele des Buchs oftmals hilfreich ist. Der zweite gibt einen Überblick über Pytest zum Unit Testen und Prüfen der Lösungen. Der dritte erläutert die O-Notation zur Abschätzung der Performance.Leseproben:Einleitung — DownloadInhaltsverzeichnis — DownloadStrings (Auszug) — DownloadSuchen und Sortieren (Auszug) — DownloadZusatzmaterial:Python_Challenge_Import — DownloadPythonChallenge — Download
MATLAB Recipes
Learn from state-of-the-art examples in robotics, motors, detection filters, chemical processes, aircraft, and spacecraft. With this book you will review contemporary MATLAB coding including the latest MATLAB language features and use MATLAB as a software development environment including code organization, GUI development, and algorithm design and testing.Features now covered include the new graph and digraph classes for charts and networks; interactive documents that combine text, code, and output; a new development environment for building apps; locally defined functions in scripts; automatic expansion of dimensions; tall arrays for big data; the new string type; new functions to encode/decode JSON; handling non-English languages; the new class architecture; the Mocking framework; an engine API for Java; the cloud-based MATLAB desktop; the memoize function; and heatmap charts._MATLAB Recipes: A Problem-Solution Approach, Second Edition__ _provides practical, hands-on code snippets and guidance for using MATLAB to build a body of code you can turn to time and again for solving technical problems in your work. Develop algorithms, test them, visualize the results, and pass the code along to others to create a functional code base for your firm.WHAT YOU WILL LEARN* Get up to date with the latest MATLAB up to and including MATLAB 2020b* Code in MATLAB* Write applications in MATLAB* Build your own toolbox of MATLAB code to increase your efficiency and effectivenessWHO THIS BOOK IS FOREngineers, data scientists, and students wanting a book rich in examples using MATLAB.MICHAEL PALUSZEK is the co-author of MATLAB Recipes published by Apress. He is President of Princeton Satellite Systems, Inc. (PSS) in Plainsboro, New Jersey. Mr. Paluszek founded PSS in 1992 to provide aerospace consulting services. He used MATLAB to develop the control system and simulation for the Indostar-1 geosynschronous communications satellite, resulting in the launch of PSS's first commercial MATLAB toolbox, the Spacecraft Control Toolbox, in 1995. Since then he has developed toolboxes and software packages for aircraft, submarines, robotics, and fusion propulsion, resulting in PSS's current extensive product line. He is currently leading a US Army research contract for precision attitude control of small satellites and working with the Princeton Plasma Physics Laboratory on a compact nuclear fusion reactor for energy generation and propulsion.Prior to founding PSS, Mr. Paluszek was an engineer at GE Astro Space in East Windsor, NJ. At GE he designed the Global Geospace Science Polar despun platform control system and led the design of the GPS IIR attitude control system, the Inmarsat-3 attitude control systems and the Mars Observer delta-V control system, leveraging MATLAB for control design. Mr. Paluszek also worked on the attitude determination system for the DMSP meteorological satellites. Mr. Paluszek flew communication satellites on over twelve satellite launches, including the GSTAR III recovery, the first transfer of a satellite to an operational orbit using electric thrusters. At Draper Laboratory Mr. Paluszek worked on the Space Shuttle, space station and submarine navigation. His space station work included designing of control moment gyro based control systems for attitude control. Mr. Paluszek received his bachelors in electrical engineering, and master's and engineer’s degrees in aeronautics and astronautics from the Massachusetts Institute of Technology. He is author of numerous papers and has over a dozen US patents.STEPHANIE THOMAS is the co-author of MATLAB Recipes, published by Apress. She received her bachelor's and master's degrees in aeronautics and astronautics from the Massachusetts Institute of Technology in 1999 and 2001. Ms. Thomas was introduced to PSS's Spacecraft Control Toolbox for MATLAB during a summer internship in 1996 and has been using MATLAB for aerospace analysis ever since. She built a simulation of a lunar transfer vehicle in C++, LunarPilot, during the same internship. In her nearly 20 years of MATLAB experience, she has developed many software tools including the Solar Sail Module for the Spacecraft Control Toolbox; a proximity satellite operations toolbox for the US Air Force; collision monitoring Simulink blocks for the Prisma satellite mission; and launch vehicle analysis tools in MATLAB and Java, to name a few. She has developed novel methods for space situation assessment such as a numeric approach to assessing the general rendezvous problem between any two satellites implemented in both MATLAB and C++. Ms. Thomas has contributed to PSS's Attitude and Orbit Control textbook, featuring examples using the Spacecraft Control Toolbox, and written many software user guides. She has conducted SCT training for engineers from diverse locales such as Australia, Canada, Brazil, and Thailand and has performed MATLAB consulting for NASA, the US Air Force, and the European Space Agency.PART I CODING IN MATLAB1 CODING HANDBOOK2 MATLAB STYLE3 VISUALIZATION4 INTERACTIVE GRAPHICS5 TESTING AND DEBUGGING6 CLASSESPART II APPLICATIONS7 THE DOUBLE INTEGRATOR8 ROBOTICS9 ELECTRIC MOTORS10 FAULT DETECTION11 CHEMICAL PROCESSES12 AIRCRAFT13 SPACECRAFT14 AUTOMOBILES