Programmierung
Data-Science-Crashkurs
Eine interaktive und praktische Einführung: Data Science praxisnah erklärt»Data Science Crashkurs« bietet einen praxisnahen Einstieg in Data Science, angereichert mit interaktiven Elementen, der die Breite der Möglichkeiten der Datenanalyse aufzeigt. Dieses Buch geht tief genug, um Vorteile, Nachteile und Risiken zu verstehen, aber steigt dennoch nicht zu tief in die zugrunde liegende Mathematik ein. Es wird nicht nur erklärt, wofür wichtige Begriffe wie Big Data, maschinelles Lernen oder Klassifikation stehen, sondern auch anschaulich mit zahlreichen Beispielen aufgezeigt, wie Daten analysiert werden. Ein breiter Überblick über Analysemethoden vermittelt das nötige Wissen, um in eigenen Projekten geeignete Methoden auszuwählen und anzuwenden, um das gewünschte Ergebnis zu erreichen. Der benötigte Python-Quelltext, der z.B. zur Durchführung von Analysen oder zur Erstellung von Visualisierungen verwendet wird, ist in Form von Jupyter-Notebooks frei verfügbar. Zielgruppe: Data ScientistsDatenanalyst*innenDaten- und InformationsverantwortlicheStudierende der Informatik und Wirtschaftsinformatik Autor: Dr. Steffen Herbold ist Professor für Methoden und Anwendungen maschinellen Lernens am Institut für Software und Systems Engineering der Technischen Universität Clausthal, wo er die Forschungsgruppe AI Engineering leitet. Zuvor hat er an der Universität Göttingen promoviert und habilitiert und am Karlsruher Institut für Technologie einen Lehrstuhl vertreten. In der Forschung beschäftigt er sich mit der Entwicklung und Qualitätssicherung der Lösung von Problemen durch maschinelles Lernen, z.B. zur effizienteren Softwareentwicklung, der Prognose von Ernteerträgen oder auch der Erkennung von aeroakustischen Geräuschquellen.
Numerical Methods Using Java
Implement numerical algorithms in Java using NM Dev, an object-oriented and high-performance programming library for mathematics.You’ll see how it can help you easily create a solution for your complex engineering problem by quickly putting together classes.Numerical Methods Using Java covers a wide range of topics, including chapters on linear algebra, root finding, curve fitting, differentiation and integration, solving differential equations, random numbers and simulation, a whole suite of unconstrained and constrained optimization algorithms, statistics, regression and time series analysis. The mathematical concepts behind the algorithms are clearly explained, with plenty of code examples and illustrations to help even beginners get started.WHAT YOU WILL LEARN* Program in Java using a high-performance numerical library* Learn the mathematics for a wide range of numerical computing algorithms* Convert ideas and equations into code* Put together algorithms and classes to build your own engineering solution* Build solvers for industrial optimization problems* Do data analysis using basic and advanced statisticsWHO THIS BOOK IS FORProgrammers, data scientists, and analysts with prior experience with programming in any language, especially Java.HAKSUN LI, PHD, is founder of NM Group, a scientific and mathematical research company. He has the vision of “Making the World Better Using Mathematics”. Under his leadership, the firm serves worldwide brokerage houses and funds, multinational corporations and very high net worth individuals. Haksun is an expert in options trading, asset allocation, portfolio optimization and fixed-income product pricing. He has coded up a variety of numerical software, including SuanShu (a library of numerical methods), NM Dev (a library of numerical methods), AlgoQuant (a library for financial analytics), NMRMS (a portfolio management system for equities), and supercurve (a fixed-income options pricing system). Prior to this, Haksun was a quantitative trader/quantitative analyst with multiple investment banks. He has worked in New York, London, Tokyo, and Singapore.Additionally, Haksun is the vice dean of the Big Data Finance and Investment Institute of Fudan University, China. He was an adjunct professor with multiple universities. He has taught at the National University of Singapore (mathematics), Nanyang Technological University (business school), Fudan University (economics), as well as Hong Kong University of Science and Technology (mathematics). Dr. Haksun Li has a B.S. and M.S. in pure and financial mathematics from the University of Chicago, and an M.S. and a PhD in computer science and engineering from the University of Michigan, Ann Arbor.Table of ContentsAbout the Authors...........................................................................................................iPreface............................................................................................................................ii1. Why Java?..............................................................................................................61.1. Java in 2020.....................................................................................................61.2. Java vs. C++....................................................................................................61.3. Java vs. Python................................................................................................61.4. Java in the future .............................................................................................62. Data Structures.......................................................................................................72.1. Function...........................................................................................................72.2. Polynomial ......................................................................................................73. Linear Algebra .......................................................................................................83.1. Vector and Matrix ...........................................................................................83.1.1. Vector Properties .....................................................................................83.1.2. Element-wise Operations.........................................................................83.1.3. Norm ........................................................................................................93.1.4. Inner product and angle ...........................................................................93.2. Matrix............................................................................................................103.3. Determinant, Transpose and Inverse.............................................................103.4. Diagonal Matrices and Diagonal of a Matrix................................................103.5. Eigenvalues and Eigenvectors.......................................................................103.5.1. Householder Tridiagonalization and QR Factorization Methods..........103.5.2. Transformation to Hessenberg Form (Nonsymmetric Matrices)...........104. Finding Roots of Single Variable Equations .......................................................114.1. Bracketing Methods ......................................................................................114.1.1. Bisection Method ...................................................................................114.2. Open Methods...............................................................................................114.2.1. Fixed-Point Method ...............................................................................114.2.2. Newton’s Method (Newton-Raphson Method) .....................................114.2.3. Secant Method .......................................................................................114.2.4. Brent’s Method ......................................................................................115. Finding Roots of Systems of Equations...............................................................125.1. Linear Systems of Equations.........................................................................125.2. Gauss Elimination Method............................................................................125.3. LU Factorization Methods ............................................................................125.3.1. Cholesky Factorization ..........................................................................125.4. Iterative Solution of Linear Systems.............................................................125.5. System of Nonlinear Equations.....................................................................126. Curve Fitting and Interpolation............................................................................146.1. Least-Squares Regression .............................................................................146.2. Linear Regression..........................................................................................146.3. Polynomial Regression..................................................................................146.4. Polynomial Interpolation...............................................................................146.5. Spline Interpolation .......................................................................................147. Numerical Differentiation and Integration...........................................................157.1. Numerical Differentiation .............................................................................157.2. Finite-Difference Formulas...........................................................................157.3. Newton-Cotes Formulas................................................................................157.3.1. Rectangular Rule....................................................................................157.3.2. Trapezoidal Rule....................................................................................157.3.3. Simpson’s Rules.....................................................................................157.3.4. Higher-Order Newton-Coles Formulas..................................................157.4. Romberg Integration .....................................................................................157.4.1. Gaussian Quadrature..............................................................................157.4.2. Improper Integrals..................................................................................158. Numerical Solution of Initial-Value Problems....................................................168.1. One-Step Methods.........................................................................................168.2. Euler’s Method..............................................................................................168.3. Runge-Kutta Methods...................................................................................168.4. Systems of Ordinary Differential Equations.................................................169. Numerical Solution of Partial Differential Equations..........................................179.1. Elliptic Partial Differential Equations...........................................................179.1.1. Dirichlet Problem...................................................................................179.2. Parabolic Partial Differential Equations........................................................179.2.1. Finite-Difference Method ......................................................................179.2.2. Crank-Nicolson Method.........................................................................179.3. Hyperbolic Partial Differential Equations.....................................................1710..................................................................................................................................1811..................................................................................................................................1912. Random Numbers and Simulation ....................................................................2012.1. Uniform Distribution .................................................................................2012.2. Normal Distribution...................................................................................2012.3. Exponential Distribution............................................................................2012.4. Poisson Distribution ..................................................................................2012.5. Beta Distribution........................................................................................2012.6. Gamma Distribution ..................................................................................2012.7. Multi-dimension Distribution ....................................................................2013. Unconstrainted Optimization ............................................................................2113.1. Single Variable Optimization ....................................................................2113.2. Multi Variable Optimization .....................................................................2114. Constrained Optimization .................................................................................2214.1. Linear Programming..................................................................................2214.2. Quadratic Programming ............................................................................2214.3. Second Order Conic Programming............................................................2214.4. Sequential Quadratic Programming...........................................................2214.5. Integer Programming.................................................................................2215. Heuristic Optimization......................................................................................2315.1. Genetic Algorithm .....................................................................................2315.2. Simulated Annealing .................................................................................2316. Basic Statistics..................................................................................................2416.1. Mean, Variance and Covariance................................................................2416.2. Moment......................................................................................................2416.3. Rank...........................................................................................................2417. Linear Regression .............................................................................................2517.1. Least-Squares Regression..........................................................................2517.2. General Linear Least Squares....................................................................2518. Time Series Analysis ........................................................................................2618.1. Univariate Time Series..............................................................................2618.2. Multivariate Time Series ...........................................................................2618.3. ARMA .......................................................................................................2618.4. GARCH .....................................................................................................2618.5. Cointegration .............................................................................................2619. Bibliography .....................................................................................................2720. Index .....................................................................................................
Pro Jakarta Persistence in Jakarta EE 10
Learn to use the Jakarta Persistence API and other related APIs as found in the Jakarta EE 10 platform from the perspective of one of the specification creators. A one-of-a-kind resource, this in-depth book provides both theoretical and practical coverage of Jakarta Persistence usage for experienced Java developers.Authors Lukas Jungmann, Mike Keith, Merrick Schincariol, Massimo Nardone take a hands-on approach, based on their wealth of experience and expertise, by giving examples to illustrate each concept of the API and showing how it is used in practice. The examples use a common model from an overarching sample application, giving you a context from which to start and helping you to understand the examples within an already familiar domain.After completing this in-depth book, you will have a full understanding of persistence and be able to successfully code applications using its annotations and APIs. The book also serves as an excellent reference guide.WHAT YOU WILL LEARN* Use Jakarta Persistence in the context of enterprise applications* Work with object relational mappings (ORMs), collection mappings and more* Build complex enterprise Java applications that persist data long after the process terminates* Connect to and persist data with a variety of databases, file formats, and more* Use queries, including the Jakarta Persistence Query Language (Jakarta Persistence QL)* Carry out advanced ORM, queries and XML mappings* Package, deploy and test your Jakarta persistence-enabled enterprise applicationsWHO THIS BOOK IS FORExperienced Java programmers and developers with at least some prior experience with Jakarta EE or Java EE platform APIs.LUKAS JUNGMANN is the specification project co-lead for Jakarta Persistence, and the lead for a number of other Jakarta Specification projects including Jakarta Activation, Mail, XML Binding, SOAP with Attachments, and XML Web Services. He is a contributor to Jakarta Platform, JSON Processing, JSON Binding specification projects and is lead for a number of implementation projects of various Jakarta specifications including EclipseLink, Eclipse Metro and Eclipse Angus. He holds a Bachelor’s degree in Applied Informatics from University of Finance and Administration in Prague, Czech Republic, and has over 15 years’ experience working with Enterprise Java related technologies. He has spoken at numerous conferences around the world. He is employed as a software developer at Oracle in Prague, Czech Republic, and is married with three kids and one cat.MIKE KEITH is a co-specification lead for JPA 1.0 and a member of the JPA 2.0 and JPA 2.1 expert groups. He sits on a number of other Java Community Process expert groups and the Enterprise Expert Group (EEG) in the OSGi Alliance. He holds a Masters degree in Computer Science from Carleton University, and has over 20 years experience in persistence and distributed systems research and practice.He has written papers and articles on JPA and spoken at numerous conferences around the world. He is employed as an architect at Oracle in Ottawa, Canada,and is married with four kids and two dogs.MERRICK SCHINCARIOL is a senior engineer for the Oracle OC4J Java EE Container. He was a lead engineer for Oracle's EJB 3.0 release and co-author of Pro EJB 3: Java Persistence API. Before joining Oracle, Merrick developed enterprise and large-scale systems for the telecommunications industry.MASSIMO NARDONE has more than 23 years of experiences in Security, Web/Mobile development, Cloud and IT Architecture and has been programming and teaching how to program with Android, Perl, PHP, Java, VB, Python, C/C++ and MySQL for more than 20 years. He currently works as Chief Information Security Office (CISO) for Cargotec Oyj and he is member of the ISACA Finland Chapter Board. Massimo has provided technical review for more than 40 IT books, and is the coauthor of Pro Android Games (Apress, 2015).* Introduction * Getting Started * Enterprise Applications * Object Relational Mapping * Collection Mapping * Entity Manager * Using Queries * Java Persistence Query Language * Criteria * Advanced Object Relational Mapping * Advanced Queries * Advanced Topics * XML Mapping Files * Packaging and Deployment * Testing
Handbuch für Softwareentwickler
Das Standardwerk für professionelles Software Engineering. Jeder Entwickler weiß, dass es mit der Kenntnis von Sprachen und Programmierplattformen nicht getan ist. Wer erfolgreich Software entwickeln möchte, sollte mit vielen Fachgebieten und Methoden vertraut sein – von der Architektur über Datenhaltung, Anforderungsmanagement, Sicherheitsfragen bis zum Projektmanagement. Hier finden Sie eine umfassende Behandlung dieser Themenvielfalt. Das Autorenteam gibt praktische Empfehlungen zu grundlegenden und aktuellen Fragen der professionellen Softwareentwicklung. Das theoretische Fundament und die gut erläuterten Fachbegriffe sind dabei niemals Selbstzweck, sondern stehen im Dienst der Kunst, für Ihre Kunden gute Software zu entwickeln Aus dem Inhalt: Grundlagen: Algorithmen und DatenstrukturenAnforderungsanalyse, Planung und EntwurfGelungene User InterfacesKundenzufriedenheit und BenutzerfreundlichkeitMigration – vom Altsystem zur zeitgemäßen AnwendungDatensicherheit, Datenschutz und VerschlüsselungGuter Code und QualitätsmaßstäbePlattformübergreifende EntwicklungParallelprogrammierungSoftwaretestingMobile Computing im Enterprise-UmfeldÜberblick über Werkzeuge wie Entwicklungsumgebungen und Versionsverwaltung Materialien zum Buch ... 20 Vorwort ... 21 TEIL I. Überblick ... 23 1. Überblick ... 25 1.1 ... Berufswunsch Softwareentwickler ... 25 1.2 ... Über dieses Buch ... 32 1.3 ... Quellen der zitierten Statistiken ... 37 2. Programmierung als Kern der Softwareentwicklung ... 39 2.1 ... Die Programmierung ... 39 2.2 ... Paradigmen der Softwareentwicklung ... 43 2.3 ... Objektorientierte Programmentwicklung ... 44 2.4 ... Programmiersprachen ... 66 2.5 ... Essenzielle Sprachmerkmale ... 76 2.6 ... Fazit und Ausblick ... 106 2.7 ... Literatur und Links ... 107 3. Algorithmen und Datenstrukturen ... 109 3.1 ... Algorithmen als Kernelemente des Programms ... 110 3.2 ... Entwurf von Algorithmen ... 115 3.3 ... Sortieren und Suchen als Basisalgorithmen ... 128 3.4 ... Elementare Datenstrukturen ... 148 3.5 ... Zusammenfassung und Ausblick ... 170 3.6 ... Literatur und Links ... 172 TEIL II. Der Softwarelebenszyklus ... 175 4. Softwareprojekte professionell planen ... 177 4.1 ... Der Wasserfall ... 178 4.2 ... Iterative Entwicklung -- schrittweise zum Ziel ... 183 4.3 ... Das V-Modell -- eine Struktur hauptsächlich für Projekte der öffentlichen Hand ... 185 4.4 ... Bessere Risikobeherrschung durch das Spiralmodell ... 186 4.5 ... Agile Ansätze -- der Komplexität und Unsicherheit mit Flexibilität begegnen ... 187 4.6 ... Softwareentwicklung und die Schnittstellen zum Projektmanagement ... 199 4.7 ... Ist Agilität heute alternativlos? ... 207 4.8 ... Literatur und Links ... 209 5. Die Anforderungsanalyse -- Startpunkt der Entwicklung ... 211 5.1 ... Überblick und Zielstellung ... 211 5.2 ... Ausgangssituation und Notwendigkeit ... 214 5.3 ... Anforderungen ermitteln ... 218 5.4 ... Klassische Anforderungsanalyse ... 237 5.5 ... Agile Anforderungsanalyse ... 248 5.6 ... Toolunterstützung ... 252 5.7 ... Fazit ... 256 5.8 ... Literatur und Links ... 256 6. Der Entwurf des Softwaresystems ... 259 6.1 ... Die Softwarearchitektur als Basis für Erfolg und Wartbarkeit eines Softwaresystems ... 260 6.2 ... Architekturparadigmen ... 266 6.3 ... Entwurfsmuster als Baupläne ... 291 6.4 ... Entwurfsunterstützung durch grafische Modellierung ... 297 6.5 ... Weitere Entwurfsentscheidungen ... 301 6.6 ... Erfolgreiche Entwürfe mithilfe von Prototypen ... 304 6.7 ... Zusammenfassung und Fazit ... 312 6.8 ... Literatur und Links ... 313 7. Die Implementierung schafft den Kern der Anwendung ... 315 7.1 ... Die Entwicklung der Benutzerschnittstelle ... 316 7.2 ... Die Businesslogik umsetzen ... 346 7.3 ... Die Datenwelt anbinden ... 348 7.4 ... Zusammenfassung und Fazit ... 351 7.5 ... Literatur und Links ... 351 8. Testen als Voraussetzung für fehlerarme Software ... 353 8.1 ... Zur Notwendigkeit von Softwaretests ... 354 8.2 ... Testgetriebene Entwicklung ... 355 8.3 ... Ein Überblick über wichtige Testarten ... 357 8.4 ... Testmethoden ... 361 8.5 ... Testebenen ... 369 8.6 ... Technik des Testens ... 387 8.7 ... Fazit und Zusammenfassung ... 391 8.8 ... Literatur und Links ... 391 9. Distribution -- das Produkt muss zum Kunden ... 393 9.1 ... Die Softwaredistribution im Überblick ... 394 9.2 ... Automatisierte Softwareverteilung ... 405 9.3 ... Verbesserte Zusammenarbeit durch DevOps ... 408 9.4 ... Die Nutzung der App Stores ... 411 9.5 ... Die Technik der Softwarebereitstellung ... 417 9.6 ... Fazit ... 437 9.7 ... Literatur und Links ... 437 10. Vom Altsystem zur zeitgemäßen Anwendung ... 439 10.1 ... Technologien im Wandel ... 440 10.2 ... Notwendigkeit einer Softwaremigration ... 442 10.3 ... Ziele einer Softwaremigration ... 444 10.4 ... Planung der Migration ... 444 10.5 ... Migrationsstrategien ... 447 10.6 ... Arten der Migration ... 451 10.7 ... Wirtschaftlichkeitsbetrachtungen ... 453 10.8 ... Stolpersteine ... 454 10.9 ... Eine Fallstudie ... 455 10.10 ... Literatur und Links ... 473 TEIL III. Technologien und Methoden ... 475 11. Webtechnologien ... 477 11.1 ... Einführung ... 477 11.2 ... Zusammenspiel von HTML, CSS und JavaScript ... 478 11.3 ... Die Struktur einer Webseite mit HTML ... 480 11.4 ... HTML Basics ... 481 11.5 ... Das Layout und das Design einer Webseite mit CSS ... 487 11.6 ... Logik und Interaktion mit JavaScript ... 504 11.7 ... Klassenbibliotheken und Frameworks ... 519 11.8 ... Fazit ... 529 11.9 ... Literatur und Links ... 529 12. Apps für mobile Systeme ... 531 12.1 ... Arten von Apps ... 533 12.2 ... Native Apps ... 535 12.3 ... Web-Apps ... 553 12.4 ... Hybride Apps ... 555 12.5 ... Plattformübergreifende Ansätze ... 557 12.6 ... Auswahlkriterien ... 571 12.7 ... Sensoren ... 577 12.8 ... Emulation und Simulation ... 584 12.9 ... Backend as Service ... 591 12.10 ... Fazit ... 599 12.11 ... Literatur und Links ... 599 13. Plattform- und geräteübergreifende Entwicklung ... 601 13.1 ... Nutzerinnen und Nutzer im Fokus ... 602 13.2 ... Ansätze für die plattformübergreifende Entwicklung ... 604 13.3 ... Ein Beispiel mit RAD Studio ... 614 13.4 ... Fazit ... 617 13.5 ... Literatur und Links ... 618 14. Parallelprogrammierung ... 619 14.1 ... Systemtechnische Ebene ... 620 14.2 ... Anwendungsebene ... 626 14.3 ... Programmiertechnische Ebene ... 634 14.4 ... Zusammenfassung ... 638 14.5 ... Literatur und Links ... 638 15. Kundenzufriedenheit durch Nutzerorientierung ... 641 15.1 ... Die Nutzer im Fokus ... 644 15.2 ... Benutzerschnittstellen im Wandel ... 648 15.3 ... Gestaltung von Benutzeroberflächen ... 660 15.4 ... Literatur und Links ... 668 16. Datensicherheit und Datenschutz ... 671 16.1 ... Begriffe und Angrenzungen ... 674 16.2 ... Überblick über die Datenschutz-Grundverordnung ... 676 16.3 ... Datenschutz und Cloud-Computing ... 679 16.4 ... Technischer Datenschutz ... 681 16.5 ... Fazit ... 697 16.6 ... Literatur und Links ... 697 17. Grundlagen der Datenhaltung ... 699 17.1 ... Datenbank -- ein Ort, um Ordnung zu halten ... 699 17.2 ... Phasen der Datenbankentwicklung ... 708 17.3 ... Relationale Datenbanken ... 711 17.4 ... NoSQL-Datenbanken ... 726 17.5 ... Fazit und Ausblick ... 735 17.6 ... Literatur und Links ... 735 18. Werkzeugunterstützung ... 737 18.1 ... Die Rolle von Werkzeugen ... 738 18.2 ... Integrierte Entwicklungsumgebungen als Multifunktionswerkzeuge ... 739 18.3 ... Versionsverwaltungen als Voraussetzung für eine erfolgreiche Entwicklung ... 744 18.4 ... Weitere Softwaretools für die Entwicklung ... 754 18.5 ... Fazit und Ausblick ... 758 18.6 ... Literatur und Links ... 759 19. Qualitätssicherung und Clean Code Development ... 761 19.1 ... Das Verständnis von Softwarequalität ... 761 19.2 ... Ansätze zur Bestimmung der Softwarequalität ... 764 19.3 ... Softwarequalität zwischen Nutzen und Kosten ... 769 19.4 ... Qualität verbessern ... 771 19.5 ... Eine gesunde Fehlerkultur ... 786 19.6 ... Fazit und Zusammenfassung ... 793 19.7 ... Literatur und Links ... 793 TEIL IV. Trends ... 795 20. Enterprise Mobile Computing ... 797 20.1 ... Einsatzszenarien ... 798 20.2 ... Bring Your Own Device ... 807 20.3 ... Technische Aspekte für Enterprise Mobile Computing ... 817 20.4 ... Fazit und Ausblick ... 829 20.5 ... Literatur und Links ... 829 21. Internet of Things ... 831 21.1 ... Stand heute und Zukunftsszenarien ... 832 21.2 ... IoT-Infrastruktur ... 841 21.3 ... Hardware auf kleinstem Raum ... 850 21.4 ... Fallbeispiel: Windows 10 auf dem Raspberry Pi ... 854 21.5 ... Fazit und Ausblick ... 866 21.6 ... Literatur und Links ... 867 22. Cloud-Computing ... 869 22.1 ... Grundlagen des Cloud-Computings ... 870 22.2 ... Ökonomische Gesichtspunkte ... 876 22.3 ... Cloud-Computing als Werkzeug der Softwareentwicklung ... 881 22.4 ... Fazit ... 885 22.5 ... Literatur und Links ... 885 Index ... 887
PyTorch kompakt
Syntax, Design Patterns und Codebeispiele für Deep-Learning-Modelle Mit diesem benutzerfreundlichen Nachschlagewerk zu PyTorch haben Sie kompaktes Wissen zu einem der beliebtesten Frameworks für Deep Learning immer zur Hand. Der Autor Joe Papa bietet Ihnen mit dieser Referenz den sofortigen Zugriff auf Syntax, Design Patterns und gut nachvollziehbare Codebeispiele. Sie erhalten eine Fülle an gesammelten Informationen, die Ihre Entwicklungsarbeit beschleunigen und die Zeit minimieren, die Sie mit der Suche nach Details verbringen. Leseprobe (PDF-Link)Inhaltsverzeichnis (PDF-Link)Zielgruppe:Data ScientistsSoftwareentwickler*innenDatenanalyst*innenStudierende der Informatik Autor: Joe Papa verfügt über 25 Jahre Erfahrung in Forschung und Entwicklung und ist Gründer von TeachMe.AI. Seinen Abschluss „Master of Science in Electrical Engineering“ hat er an der Universität Rutgers erworben. Bei Booz Allen Hamilton und Perspecta Labs hat er KI-Forschungsteams mit PyTorch geleitet. Joe hat Hunderte von Datenwissenschaftlern als Mentor betreut und mehr als 6.000 Studenten auf der ganzen Welt auf Udemy unterrichtet.
Java 17 for Absolute Beginners
Write your first code in Java 17 using simple, step-by-step examples that model real-word objects and events, making learning easy. With Java 17 for Absolute Beginners you’ll be able to pick up the concepts without fuss. It teaches Java development in language anyone can understand, giving you the best possible start.You’ll see clear code descriptions and layout so that you can get your code running as soon as possible. Author Iuliana Cosmina focuses on practical knowledge and getting you up to speed quickly—all the bits and pieces a novice needs to get started programming in Java.First, you’ll discover what type of language Java is, what it is good for, and how it is executed. With the theory out of the way, you’ll install Java, choose an editor such as IntelliJ IDEA, and write your first simple Java program. Along the way you’ll compile and execute this program so it can run on any platform that supports Java. As part of this tutorial you’ll see how to write high-quality code by following conventions and respecting well-known programming principles, making your projects more professional and efficient.Java 17 for Absolute Beginners gives you all you need to start your Java programming journey. No experience necessary. After reading this book, you'll come away with the basics to get started writing programs in Java.WHAT YOU WILL LEARN* Get started with Java 17 from scratchUse data types, operators, and the stream API * Install and use the IntelliJ IDEA and the Gradle build tool* Exchange data using the new JSON APIs * Play with images using multi-resolution APIs* Implement the publish-subscribe architectureWHO THIS BOOK IS FORThose who are new to programming and who want to start with Java.IULIANA COSMINA is currently a software engineer for NCR Edinburgh. She has been writing Java code since 2002 and contributed to various types of applications such as experimental search engines, ERPs, track and trace, and banking. During her career, she has been a teacher, a team leader, software architect, DevOps professional, and software manager. She is a Spring-certified Professional, as defined by Pivotal, the makers of Spring Framework, Boot, and other tools, and considers Spring the best Java framework to work with. When she is not programming, she spends her time reading, blogging, learning to play piano, travelling, hiking, or biking.Chapter 1: An Introduction to Java- When every version was released, how were they called and what were the particularities- What is Java, how it is executed, what type of language it is and what is it good for-Chapter 2: Preparing your development environment- Installing Java, choosing an editor, choosing a build tool-Chapter 3: Getting your feet wet- Writing a simple program, compile and execute- Adding a dependency of somebody else’s code through dependencies of existing libraries- Mention best tools for java and most used frameworks like SpringChapter 4: Java syntax- what is a package, module- class- enums- interface ( private methods & default methods)- class, constructor, methods… etc- removal of _Chapter 5: Data Types- primitive, object types (emphasis on String, Collections, Calendar API)- String – compact Strings- Collections: Immutable collections, factory methods for Collections(JEP 269)- mention Generics- optional – enhancements- threads, futures – CompletableFuture (JEP 266)Chapter 6: Operators- unary, binary, ternary, logic, and the diamond operator (used in conjunction with anonymous inner classes)Chapter 7: Controlling the flow- if, loops- try catch (try with resources with managed variables)- recursionChapter 8: The Stream API- streams , optional to Stream, enhancementsChapter 9: Debugging , testing and documenting- what is a break point- loggers : unified JVM logging (JEP 264)- mocks and stubs- jmc, jps, jcmd – JDK utilities- The new Doclet API- the JShell Command Line Tool- accessing the process API- @Deprecated enhancements (JEP 277)Chapter 10: Making your application interactive- request data with System.in- Swing- Web applications (use the new HTTP client)- JavaFX UI (JEP 253)- Internationalization (JEP 267)Chapter 11: Writing files- storing data to files, reading it from them- serialization to Binary, XML, JSON, YML (JEP290)- playing with images – multi-resolution APIChapter 12: Publish-Subscribe Framework- reactive streamsChapter 13: Garbage Collection- JEP 214,248,271,291
Nature-Inspired Optimization Algorithms with Java
Gain insight into the world of nature-inspired optimization techniques and algorithms. This book will prepare you to apply different nature-inspired optimization techniques to solve problems using Java.You'll start with an introduction to the hidden algorithms that nature uses and find the approximate solutions to optimization problems. You'll then see how living creatures such as fish and birds are able to perform computation to solve specific optimization tasks. This book also covers various nature-inspired algorithms by reviewing code examples for each one followed by crisp and clear explanations of the algorithm using Java code. You'll examine the use of each algorithm in specific industry scenarios such as fleet scheduling in supply chain management, and shop floor management in industrial and manufacturing applications.Nature-Inspired Optimization Algorithms with Java is your pathway to understanding a variety of optimization problems that exist in various industries and domains and it will develop an ability to apply nature-inspired algorithms to find approximate solutions to them.WHAT YOU'LL LEARN* Study optimization and its problems* Examine nature-inspired algorithms such as Particle Swarm, Gray wolf, etc.* See how nature-inspired algorithms are being used to solve optimization problems* Use Java for solving the different nature-inspired algorithms with real-world examplesWHO THIS BOOK IS FORSoftware developers/architects who are looking to hone their skills in area of problem solving related to optimization with Java.Shashank Jain has been working in the IT industry for about 20 years, mainly in areas of cloud computing and distributed systems. He has a keen interest in virtualization techniques, security, and complex systems. Shashank has 32 software patents (many yet to be published) in the area of cloud computing, IoT, and machine learning. He is a speaker at multiple reputed cloud conferences. Shashank holds Sun, Microsoft, and Linux kernel certifications. He is also the author of the book "Linux Containers and Virtualization" published by Apress.1. Intro to Optimization Problems2. Nature Inspired Optimization Methods3. Birdsa. Particle swarm Optimizationb. Cuckoo search algorithmc. Pigeon inspired optimization4. Mammalsa. Grey wolf optimizerb. Lion Pride optimizerc. Cat swarm optimizationd. Bat algorithme. Monkey algorithm5. Insectsa. Ant colony optimizationb. Artificial Bee colonyc. Grasshopper optimizationd. Pigeon inspired algorithme. Social spider optimizationf. Mosquito host seeking optimization6. Sea Creaturesa. Whale optimization algorithmb. Artificial fish swarm algorithmc. Fish school search7. Simple Organismsa. Bacteria foraging optimizationb. Slime mould optimization
Introducing Qt 6
Get started quickly with Qt, the popular open source C++ framework for building C++-based applications and games. This book will have you building both fully functional desktop and mobile applications in no time, including some simple game applications.Introducing Qt 6 begins by guiding you in setting up your tools and environment, and then walks you through the first "baby steps" of Qt framework. Next, you'll learn the basics of how project and app structure are set up using Qt. Then, you’ll begin your first real hands-on projects using Qt, including a task and problem management application and two games.As you progress, you can enhance these apps and games using additional Qt components and features. The book then delves into advanced topics in Qt, learning above and beyond what the Qt docs can offer, including local storage, C++ integration, deployment to Windows and Android, custom components and how to work with them.Upon completing this book, you'll come away knowing how to build a C++ application from design to deployment, top to bottom. And, you'll have actual application and game examples that you can apply to your own work or hobby.WHAT YOU WILL LEARN* Learn to build your first applications and games using Qt 6 framework* Design, create, build and deploy your first Qt applications or games as finished products* Explore local storage integration in theory and practice* Cover deployment on Windows and on Android* Integrate with C++ language to leverage additional functionality* Dive into Custom Components and how to work with them* Explore different project structures and moreWHO THIS BOOK IS FORSoftware programmers, developers who are new to C++ or the Qt framework. Some prior programming experience though may be helpful.Ben Cöppicus is a software developer, trainer, and author specializing in native C++ development as well as some web development. He builds mostly web, mobile and desktop applications. It is his hope that his work and writing can help you learn new things, experience the wonderful world of programming and maybe make you a better programmer, developer as well. Part 11. IntroductionPart 2 - Content2. Setting up the Tools3. First Baby Steps with Qt4. Explaining the Basics of Project and App Structure5. First Real Projects6. Taskmaster7. Hang-Man Game8. Rock, Paper, Scissors GamePart 3 - Components, Features and Things9. Components10. Features11. Writing Diagrams in Qt12. Advanced Topics in Qt
Practical C++ Design
Go from competent C++ developer to skilled designer or architect using this book as your personal C++ design master class. Updated for the C++20 standard, this title will guide you through the design and implementation of an engaging case study that forms the backdrop for learning the art of applying design patterns and modern C++ techniques to create a high quality, robust application.Starting with a quick exploration of the requirements for building the application, you'll delve into selecting an appropriate architecture, eventually designing and implementing all of the necessary modules to meet the project’s requirements. By the conclusion of Practical C++ Design, you'll have constructed a fully functioning calculator capable of building and executing on any platform that supports both Qt and C++20. Access to the complete source code will help speed your learning.Utilize the Model-View-Controller pattern as the basis for the architecture of the calculator; the observer pattern to design an event system; the singleton pattern as you design the calculator’s central data repository, a reusable stack; the command pattern to design a command system supporting unlimited undo/redo; the abstract factory pattern to build a cross-platform plugin infrastructure for extensibility; coroutines to implement a command line interface with a lazy tokenizer; and more.After reading and using this book, you’ll have begun the transition from C++ programmer to architect.WHAT YOU WILL LEARN* Read a specification document and translate it into a practical C++ design using some of the latest language features from C++20* Understand trade-offs in selecting between alternative design scenarios* Gain practical experience in applying design patterns to realistic development scenarios* Learn how to effectively use language elements of modern C++ to create a lasting design* Develop a complete C++ program from a blank canvas through to a fully functioning, cross platform application* Read, modify, and extend existing, high quality code* Learn the fundamentals of API design, including class, module, and plugin interfacesWHO THIS BOOK IS FORThe experienced C++ developer ready to take the next step to becoming a skilled C++ designer.ADAM B. SINGER graduated first in his class at the Georgia Institute of Technology in 1999 with a bachelors degree in chemical engineering. He subsequently attended the Massachusetts Institute of Technology on a National Defense, Science, and Engineering Graduate Fellowship. He graduated from MIT with a Ph.D. in chemical engineering in 2004 after defending his thesis titled Global Dynamic Optimization. Since graduation, Adam has been a member of the research and engineering staff at an oil and gas major, where he has worked in software development, design, and project management in areas such as optimization, reservoir simulation, decision support under uncertainty, basin modeling, well log modeling, and stratigraphy. He has also served on and chaired committees designing in-house training in the areas of technical software development and computational and applied mathematics. He currently holds a research supervisory position. Adam additionally held the title of adjunct assistant professor in the Department of Computational and Applied Mathematics at Rice University from 2007-2012. In both 2006 and 2007, he taught a graduate level course, CAAM 520, on computational science. The course focused on the design and implementation of high performance parallel programs.Preface (5 pages)The preface details my motivation for writing the book, the target audience for the book, thegeneral structure of the book, and how to contact the author. Of particular importance is therationale behind choosing the case study, the target language (C++), and the GUI toolkit (Qt).Chapter 1: Defining the Case Study (6 pages)The first chapter describes, in detail, the case study to be examine in the book. The chapterdiscusses requirements in the abstract and then transitions to the calculator’s specific requirements.This sets the stage for the remainder of the book, which describes, in detail, the design andimplementation of the calculator, pdCalc, proposed in Chapter 1.1. A Brief Introduction2. A Few Words About Requirements3. Reverse Polish Notation (RPN)4. The Calculator’s Requirements5. The Source Code1The advice, information, and conclusions discussed in this book are those of the author and have not beenendorsed by, or reflect the opinions or practices of, ExxonMobil Corporation or its affiliates.5Chapter 2: Decomposition (18 pages)In this chapter, I explain the elements of a good decomposition and strategies for decomposing aproblem into manageable pieces. Subsequently, an architecture for pdCalc is selected, the calculatoris modularized, and use cases are used to develop interfaces for the high level calculator modules.The four high level modules are the stack, the command dispatcher, the user interface (subdividedinto a command line interface and a graphic user interface), and a plugin manager.1. The Elements of a Good Decomposition2. Selecting An Architecture3. Interfaces4. Assessment of Our Current Design5. Next StepsChapter 3: The Stack (20 pages)The stack is the first module discussed in detail. The stack is the fundamental data repositoryof the calculator. As part of the calculator’s design and implementation, the singleton pattern isexplored. The stack also affords the first opportunity to discuss an event system for the calculator,which provides a backdrop for exploration of the observer pattern, including the design andimplementation of reusable publisher and observer abstract classes.1. Decomposition of the Stack Module2. The Stack Class3. Adding Events4. A Quick Note on TestingChapter 4: The Command Dispatcher (32 pages)This chapter describes the design and implementation of the command dispatcher, the module ofthe calculator responsible for the creation, storage, and execution of commands. Of particular notein this chapter is the exposition on the command pattern and how it can be used to implement apractical undo/redo framework. In addition to exploring a traditional deep hierarchy method forimplementing commands, a C++11 alternative using lambda expressions and the standard functiontemplate are presented as a modern alternative design.1. The Decomposition of the Command Dispatcher2. The Command Class3. The Command Repository4. The Command Manager5. The Command Dispatcher6. Revisiting Earlier Decisions6Chapter 5: The Command Line Interface (14 pages)This chapter marks an important milestone, the creation of the first user executable program.In addition to building a simple command line interface, we’ll explore how to create an abstractsoftware interface suitable for both a command line interface and a graphical user interface. Withinthe context of the command line interface, we’ll learn techniques for simple parsing and tokenizingof input text streams.1. The User Interface Abstraction2. The Concrete CLI Class3. Tying It Together: A Working ProgramChapter 6: The Graphical User Interface (24 pages)In this chapter, we build the Qt-based graphical user interface for the calculator. Here, we’llexamine different strategies for building GUIs, abstraction of GUI elements, and modularization ofthe overall GUI design. Included in the discussion is design for the separation of on-screen widgetsfrom look-and-feel.1. Requirements2. Building GUIs3. Modularization4. A Working Program5. A Microsoft Windows Build NoteChapter 7: Plugins (38 pages)In this chapter, I describe how to build a cross-platform plugin system. This system includes theabstract interface for C++ plugins as well as the operating system specific mechanics involved withloading plugins and executing plugin functions. In the concrete case of the plugin loader, I explainthe many build tricks that can be used to handle cross-platform code and demonstrate how theabstract factory pattern provides an elegant design solution to this problem.1. What Is a Plugin?2. Problem 1: The Plugin Interface3. Problem 2: Loading Plugins4. Problem 3: Retrofitting pdCalc5. Incorporating Plugins6. A Concrete Plugin7. Next Steps7Chapter 8: New Requirements (24 pages)Any developer who has ever worked on a production software project quickly learns that newrequirements are always added late in the development cycle. In this chapter, we explore theaddition of new user requests after the original requirements have already been satisfied. Thediscussion progresses from fully implemented solutions to design only solutions to vague ideas forthe reader to explore on her own.1. Fully Designed New Features2. Designs Toward a More Useful Calculator3. Some Interesting Extensions for Self-ExplorationAppendix A: Acquiring, Building, and Executing pdCalc (4 pages)This appendix explains how to download the source code from GitHub and how to build the casestudy on Linux and Windows. Once the program is built, readers will want to execute the codeand its included test suite; execution instructions are therefore provided.1. Getting The Source Code2. Dependencies3. Building pdCalc4. Executing pdCalcAppendix B: Organization of the Source Code (6 pages)This appendix simply explains the organization of the source tree for pdCalc. This appendix isuseful for finding the locations for the source files referenced in the text.1. The src Directory2. The test DirectoryReferences (2 pages)This section lists twenty-nine references cited in the book.Index (3 pages)This section is a complete index for the book.
Stylish F# 6
Why just get by in F# when you can program in style. This book goes beyond syntax and into design. It provides F# developers with best practices, guidance, and advice to write beautiful, maintainable, and correct code. This second edition, fully updated for .NET 6 and F# 6, includes all new coverage of anonymous records, the task {} computation expression, and the relationship between types and modules.Stylish F# 6 covers every design decision that a developer makes in constructing F# programs, helping you make the most educated and valuable design choices at every stage of code development. You will learn about the design of types and function signatures, the benefits of immutability, and the uses of partial function application. You will understand best practices for writing APIs to be used by F#, C#, and other languages. Each carefully vetted design choice is supported with compelling examples, illustrations, and rationales.WHAT YOU WILL LEARN* Know why, when, and how to code in immutable style* Use collection functions, piping, and function composition to build working software quickly* Be aware of the techniques available to bring error handling into the mainstream of program logic* Optimize F# code for maximum performance* Identify and implement opportunities to use function injection to improve program design* Appreciate the methods available to handle unknown data values* Understand asynchronous and parallel programming in F#, and how it differs from C# asynchronous programming* Exploit records and anonymous records as low-overhead, easily comparable containers for structured dataWHO THIS BOOK IS FORAny developer who writes F# code and wants to write it betterKIT EASON is a software developer and educator with more than 20 years of experience. He has been programming in F# since 2011 and is employed at Perpetuum Ltd., working on an extensive network of energy-harvesting vibration sensors fitted to railway rolling stock and infrastructure. Kit is an avid F# user who is passionate about teaching others. He has contributed to several publications, including Apress books Beginning F# and F# Deep Dives. He often teaches on the topic of F# and his popular videos appear on Udemy and Pluralsight. Chapter 1: The Sense of StyleChapter 2: Designing Functions Using TypesChapter 3: Missing DataChapter 4: Working Effectively with Collection FunctionsChapter 5: Immutability and MutationChapter 6: Pattern MatchingChapter 7: Record TypesChapter 8: ClassesChapter 9: Programming With FunctionsChapter 10: Asynchronous and Parallel ProgrammingChapter 11: Railway Oriented ProgrammingChapter 12: PerformanceChapter 13: Layout and NamingChapter 14: Summary
Natural Language Processing Projects
Leverage machine learning and deep learning techniques to build fully-fledged natural language processing (NLP) projects. Projects throughout this book grow in complexity and showcase methodologies, optimizing tips, and tricks to solve various business problems. You will use modern Python libraries and algorithms to build end-to-end NLP projects.The book starts with an overview of natural language processing (NLP) and artificial intelligence to provide a quick refresher on algorithms. Next, it covers end-to-end NLP projects beginning with traditional algorithms and projects such as customer review sentiment and emotion detection, topic modeling, and document clustering. From there, it delves into e-commerce related projects such as product categorization using the description of the product, a search engine to retrieve the relevant content, and a content-based recommendation system to enhance user experience. Moving forward, it explains how to build systems to find similar sentences using contextual embedding, summarizing huge documents using recurrent neural networks (RNN), automatic word suggestion using long short-term memory networks (LSTM), and how to build a chatbot using transfer learning. It concludes with an exploration of next-generation AI and algorithms in the research space.By the end of this book, you will have the knowledge needed to solve various business problems using NLP techniques.WHAT YOU WILL LEARN* Implement full-fledged intelligent NLP applications with Python* Translate real-world business problem on text data with NLP techniques* Leverage machine learning and deep learning techniques to perform smart language processing* Gain hands-on experience implementing end-to-end search engine information retrieval, text summarization, chatbots, text generation, document clustering and product classification, and moreWHO THIS BOOK IS FORData scientists, machine learning engineers, and deep learning professionals looking to build natural language applications using PythonAKSHAY R KULKARNIis a renowned AI and machine learning (ML) evangelist and thought leader. He has consulted with Fortune 500 and global enterprises to drive AI and data science-led strategic transformations. Akshay has experience building and scaling AI and ML businesses and creating significant impact. He is currently Manager of Data Science & AI at Publicis Sapient on their core data science and AI team where he is part of strategy and transformation interventions through AI. He manages high-priority growth initiatives around data science and works on AI engagements by applying state-of-the-art techniques. He is a Google Developers Expert–Machine Learning, published author of books on NLP and deep learning, and a regular speaker at major AI and data science conferences (including Strata, O’Reilly AI Conf, and GIDS). Akshay is a visiting faculty member for some of the top graduate institutes in India. In 2019, he was featured as one of Top40 under 40 Data Scientists in India. In his spare time, he enjoys reading, writing, and coding, and help aspiring data scientists. He lives in Bangalore with his family.ADARSHA SHIVANANDA is a senior data scientist on Indegene's Product and Technology team where he works on building machine learning and artificial intelligence (AI) capabilities for pharma products. He aims to build a pool of exceptional data scientists within and outside of the organization to solve problems through training programs, and always wants to stay ahead of the curve. Previously, he worked with Tredence Analytics and IQVIA. Adarsha has worked extensively in the pharma, healthcare, retail, and marketing domains. He lives in Bangalore and loves to read and teach data science.ANOOSH KULKARNI is a data scientist and senior consultant focused on artificial intelligence (AI). He has worked with global clients across multiple domains and helped them solve their business problems using machine learning (ML), natural language processing (NLP), and deep learning. Presently, he is working with Subex AI labs. Previously, he was a data scientist at one of the leading ecommerce companies in the UAE. Anoosh is passionate about guiding and mentoring people in their data science journey. He leads data science/machine learning meet ups in Bangalore and helps aspiring data scientists navigate their careers. He also conducts ML/AI workshops at universities and is actively involved in conducting webinars, talks, and sessions on AI and data science. He lives in Bangalore with his family. Chapter 1: Natural Language Processing & Artificial Intelligence OverviewChapter Goal: This is an introductory chapter. This chapter provides a quick refresher of the topics to be covered in this book. Since this book teaches projects surrounding a specific area of technology, we will provide a brief introduction to the key concepts required for these projects. We will not be working on a specific project, rather discuss some important concepts without going into details. The depth on each of these topics will be covered in the specific chaptersNo of pages: 25Sub - Topics:1. Artificial intelligence paradigm2. NLP and AI life cycle3. NLP concepts (TF-IDF, word embeddings, many more)4. Machine learning concepts (supervised learning, classification, unsupervised learning)5. Deep learning concepts (CNN, RNN, LSTM)Chapter 2: Product360 - Sentiment, Emotion & Trend Capturing SystemChapter Goal: Sentiment analysis involves finding the polarity of a sentence and labels it as positive, negative or neutral. Emotion detection involves identifying emotions(sad, anger, happy, etc) from the sentences. Data is extracted from social media like Twitter, Facebook etc. and Ecommerce website, processed and analyzed using different NLP techniques will provide a 360 degree view of that product which enables better decision making. This chapter introduces sentiment analysis to the reader and the various techniques that can be used to analyze text. We will apply sentiment, emotion and trend analysis on reviews data for any E-commerce website like Amazon, Zomato, and IMDb, etc. which contains millions of customer reviews and star ratings. For this task, we will use Python libraries such as Vader, Textblob, etc.No of pages: 30Sub - Topics1. Text mining and various available libraries.2. Data preprocessing.3. Data cleaning tricks, optimized feature engineering4. EDA5. Sentiment analysis6. Emotion and trend analysisChapter 3: TED Talks Segmentation & Topics Extraction Using Machine LearningChapter Goal: Document clustering is an unsupervised learning process for grouping documents. For example, there are number of e-books and they have to be grouped to build a structure around them saves time while finding the books. Articles grouping, product clustering are the other few examples. Once we identify the clusters, it is important to understand the properties of clusters. So, Topic modeling is performed to extract topics from a set of documents and articles to understand the content of the documents using keywords and be able to tag the articles or documents using those topics.In this chapter will see how to group TED talks based on description using various clustering techniques like K-Means and Hierarchical clustering. Then we will perform topic modeling using Latent Dirichlet Allocation (LDA) to understand what defines each cluster. Important libraries include Gensim, NLTK, Scikit-learn and word2vec for this problem. We will use over 100k articles from different American publications.No of pages: 30Sub - Topics1. Data understanding and pre-processing2. Computing TF-IDF3. K-Means and hierarchical clustering4. Evaluation and visualization5. Topic modeling using Latent Dirichlet AllocationChapter 4: Enhancing E-commerce Through Advanced Search Engine and Recommendation SystemChapter Goal: An information retrieval system will search product descriptions based on a search query text and gives the results. Search engines are the most common and best use case of information retrieval models. The concept of information retrieval started from a string or word comparison, but it won’t be accurate as it doesn’t capture semantics. Advanced deep learning techniques made information retrieval work more accurately.Recommender systems are everywhere and used to create a personalized recommendations to increase the user experience. There are many types of recommender systems from collaborative filtering to graph-based. But the one dependent on Natural language processing is content-based recommender systems. It leverages the content of the item or the demographics of the user to recommend and this information is purely in the form of text. In this chapter, we will use advanced deep learning and word embedding techniques to search and recommend items/products to customers and libraries like SciKit-learn, NLTK, Keras, Word2vec, etc. We will use Flipkart e-commerce sample data which has the product name and its description.No of pages: 30Sub - Topics:1. Information retrieval, word embeddings for IR, similarity scoring.2. Content-based recommendation systems working3. Data understanding and preprocessing4. Search engine using word embeddings5. Recommender system using KNNChapter 5: E-Commerce Product Categorization Model Using Deep learningChapter Goal: Most of the time, classification problems won’t be binary rather they will be multiclass. For example, categorizing the retail products based on the description, categorizing the call center complaints, etc. Complexity increases as the number of classes increases. Let’s solve this problem by using deep learning techniques. We leverage deep neural networks using the Keras library. Feature engineering techniques like TF-IDF and word embeddings are considered. We will use product description data for an E-commerce company to categorize the products.No of pages: 25Sub - Topics:1. Text pre-processing2. Text to features using TF-IDF and word embeddings3. Multi-class classification using deep neural networks4. Parameter tuning and optimizationChapter 6: Movie Genre TaggingChapter Goal: Categorizing movies into genres is one of the classic AI problems. Online movie booking platforms, review websites like IMDB would tag movies into respective genres. The genre can be action, adventure, comedy, romance and so on.Our goal here is to tag possible movie genres given the description of the movie. Machine/model has to predict all possible classes(genres) the movie would belong to. We have solved simple multi-class classification but, in this chapter, let's explore how to solve a multi-label learning and classification problem.No of pages: 25Sub - Topics:1. Text processing2. Data preparation for modeling3. Text to features4. Multi-label classification using different algorithms5. Parameter tuning and evaluationChapter 7: Content Recommendation for the Marketing CampaignChapter Goal: A content recommendation engine collects and analyzes data based on users' behavior on marketing content. This data is then used to offer personalized and relevant marketing materials. We can tailor the subjects of the emails based on historical interactions. We will use deep learning techniques using Keras along with word embeddings.No of pages: 25Sub - Topics: 1. Why content recommendation2. Feature engineering3. Open rate to find the right contentChapter 8: Quora Question Pair SimilarityChapter Goal: Over 100 million people visit Quora every month, so it's no surprise that many people ask similarly worded questions. Multiple questions with the same intent can cause seekers to spend more time finding the best answer to their question and make writers feel they need to answer multiple versions of the same question. The goal of this chapter is to predict which of the provided pairs of questions contain two questions with the same meaning using advanced deep learning techniques. Keras will be used to find the similarity score.No of pages: 25Sub - Topics:1. Why predicting the similar questions?2. Text pre processing3. Word embeddings4. Finding similar questionsChapter 9: Resume Parsing & Shortlisting with Machine LearningChapter Goal: In the recruitment industry, millions of people are uploading resumes and applying for jobs every day on thousands of employment platforms. Businesses have their openings listed on these platforms and job seekers come to apply. Every business has a dedicated recruitment team that manually goes through the applicant's resumes and extracts relevant data to see if they are a fit. To automate this task, this project tries to converts an unstructured form of resume data into a structured format. It's a model that analyses and extracts resume data, returns the machine-readable output and ranks the top resume’s that are best match to the given job description. This helps to store and analyze data automatically.No of pages: 25Sub - Topics:1. Resume parsing using various NLP techniques2. NER3. Shortlisting and ranking resumesChapter 10: Building Chatbot Using Transfer learningChapter Goal: Question Answering (QA) System - also termed as “Chatbot” is very useful as most of the deep learning-related problems can be modeled as a question answering problem. Consequently, the field is one of the most researched fields in computer science today. The last few years have seen considerable developments and improvement in the state of the art, much of which can be credited to the upcoming of deep learning. In this chapter, we will build end to end QA system using NLTK, modern deep learning algorithms, and transfer learning.No of pages: 25Sub - Topics:1. Q&A system explained2. Q&A architecture3. Natural Language Understanding4. Learn possible approaches and algorithms5. How to use transfer learning6. Fine Tuning and optimizing the network7. End to end implementation and evaluationChapter 11: Summarization System Using RNNChapter Goal: With the ever-growing data, reading the whole document is just time-consuming. We need to summarize the huge text corpus to make life easier. Text summarization is the process of creating a short summary of a longer document with accurate meaning. It’s widely used in headlines generation, summarizing the reviews, etc. There are many approaches to solve this problem like feature-based, graph-based, using sentence embeddings, etc. Abstractive methods like deep learning and reinforcement learning are providing excellent results since it generates an entirely new sentence which captures the meaning of source document. In this chapter, we will discuss all these Extractive and Abstractive methods to summarize the text. We will be using NLTK, Gensim, SciKit-learn, and Keras libraries.No of pages: 30Sub - Topics:1. Text summarization using Extractive methods2. Abstractive methods3. Text summarization using deep learning4. Text summarization using reinforcement learningChapter 12: Automated Text Generation Using LSTM and EncodersChapter Goal: Text Generation is a type of Language Modelling problem. Language Modelling is the core problem for several natural language processing tasks such as speech to text, conversational system, and text summarization. A trained language model learns the likelihood of occurrence of a word based on the previous sequence of words used in the text. Language models can be operated at the character level, n-gram level, sentence level, or even paragraph level. In this chapter, we will create a language model for generating natural language text by implement and training state-of-the-art recurrent neural network. We will use the Python programming language for this purpose. The objective of this model is to generate new text, given that some input text is present. We will start building the architecture. We will be using NLTK, Gensim, SciKit-learn and Keras libraries.No of pages: 25Sub - Topics: 1. Text generation concepts and application2. Text generation architecture3. Text preprocessing and feature engineering4. Building the LSTM network model5. Seq2Seq modelsChapter 13: Future of NLP & Next-Gen Artificial IntelligenceChapter Goal: In this chapter, let's summarize what we learned so far in this book. We started from basics, traditional tasks to advanced text generation problems. We implemented and explored how deep learning is perfect for natural language understanding. We learned classification, information retrieval systems, Q&A systems, and also text generation. We will also explore why deep learning and other next-gen AI algorithms like GANS, Capsule networks, Differentiable Neural Computers, Unsupervised/Semi-supervised Deep Learning, Attention Networks, Transfer Learning, Deep Reinforcement Learning, Meta-Learning, is uniquely suited to NLP or their short comes, and how these algorithms would evolve and give state-of-the-art results in a slew of tasks under NLU and NLG.No of pages: 12Sub - Topics:1. What did we learn2. Future of NLP3. Next-Gen learning algorithms for NLP4. Deep reinforcement learning5. What are the current challenges in NLP?6. Research directions to solve the challenges7. Current research in the NLP world
Java Challenges
Expand your knowledge of Java with this entertaining learning guide, which features 100+ exercises and programming challenges. Java Challenges will prepare you for your next exam or job interview, and covers many practical topics, such as strings, arrays, data structures, recursion, and date and time. The APIs and other material included in this book are Java 17 compatible.Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by multiple exercises of varying degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area.Author MICHAEL INDEN also describes alternative solutions and analyzes possible pitfalls and typical errors. Three appendices round out the book: one covering JShell, which is often helpful for trying out the code snippets and examples in the book, followed by an introduction to JUnit 5 for unit testing and verifying solutions, while the final appendix explains O-notation for estimating performance.After reading this book, you'll be prepared to take the next step in your career or tackle your next personal project. All source code is freely available for download via the Apress website.WHAT YOU WILL LEARN* Improve your Java knowledge by solving enjoyable but challenging programming puzzles* Solve mathematical problems, recursions, strings, arrays and more* Manage data processing and data structures like lists, sets, maps* Handle advanced recursion as well as binary trees, sorting and searching* Gamify key fundamentals for fun and easier reinforcementWHO THIS BOOK IS FORProfessional software developers, makers, as well as computer science teachers and students. At least some prior experience with Java programming is recommended.Michael Inden is an Oracle-certified Java developer with over 20 years of professional experience designing complex software systems for international companies. There, he has worked in various roles such as SW developer, SW architect, consultant, team leader, CTO, head of academy, and trainer. Currently, he is working as a freelancer.His special interests are creating high-quality applications with ergonomic GUIs, developing and solving programming puzzles, and coaching. He likes to pass on his knowledge and has led various courses and talks, both internally and externally, as well as at conferences such as JAX/W-JAX, JAX London, and Oracle Code One.Besides, he is also an author of technical books. His german books, among others "Der Weg zum Java-Profi", Java Challenge", "Python Challenge" are all published by dpunkt.verlag. 1 Introduction ................................................ 11.1 Structure of the chapters ...................................... 11.2 Basic structure of the Eclipse project ............................ 31.3 Basic framework for unit tests .................................. 41.4 Note on programming style .................................... 51.5 Trying out the examples and solutions........................... 9I Fundamentals 112 Mathematical problems ...................................... 132.1 Introduction.................................................. 132.1.1 Roman numerals....................................... 172.1.2 Number Games ........................................ 182.2 Exercises ................................................... 212.2.1 Exercise 1: Basic Arithmetic (★✩✩✩✩) ................... 212.2.2 Exercise 2: Number as text (★★✩✩✩) .................... 222.2.3 Exercise 3: Perfect numbers (★★✩✩✩) ................... 222.2.4 Exercise 4: Prime Numbers (★★✩✩✩) ................... 232.2.5 Exercise 5: Prime number pairs (★★✩✩✩) ................ 232.2.6 Exercise 6: Checksum (★★✩✩✩) ........................ 232.2.7 Exercise 7: Roman numbers (★★★★✩) .................. 242.2.8 Exercise 8: Combinatorics (★★✩✩✩) .................... 242.2.9 Exercise 9: Armstrong Numbers (★★✩✩✩) ............... 252.2.10 Exercise 10: Max Change Calculator (★★★★✩) ........... 252.2.11 Exercise 11: Related Numbers (★★✩✩✩)................. 262.2.12 Exercise 12: Prime factorization (★★★✩✩)................ 262.3 Solutions .................................................... 272.3.1 Solution 1: Basic Arithmetic (★✩✩✩✩) ................... 272.3.2 Solution 2: Number as text (★★✩✩✩) .................... 302.3.3 Solution 3: Perfect numbers (★★✩✩✩) ................... 322.3.4 Solution 4: Prime Numbers (★★✩✩✩) .................... 342.3.5 Solution 5: Prime number pairs (★★✩✩✩) ................ 36vi Inhaltsverzeichnis2.3.6 Solution 6: Checksum (★★✩✩✩) ........................ 402.3.7 Solution 7: Roman numbers (★★★★✩) ................... 412.3.8 Solution 8: Combinatorics (★★✩✩✩) ..................... 462.3.9 Solution 9: Armstrong Numbers (★★✩✩✩) ................ 492.3.10 Solution 10: Max Change Calculator (★★★★✩) ............ 522.3.11 Solution 11: Related Numbers (★★✩✩✩) ................. 542.3.12 Solution 12: Prime factorization (★★★✩✩) ................ 553 Recursion .................................................. 593.1 Introduction.................................................. 593.1.1 Mathematical examples ................................. 593.1.2 Algorithmic examples ................................... 633.1.3 Steps when multiplying the digits of a number.............. 673.1.4 Typical problems ....................................... 683.2 Exercises ................................................... 713.2.1 Exercise 1: Fibonacci (★★✩✩✩) ......................... 713.2.2 Exercise 2: Process digits (★★✩✩✩) ..................... 713.2.3 Exercise 3: GCD (★★✩✩✩) ............................. 723.2.4 Exercise 4: Reverse String (★★✩✩✩) .................... 733.2.5 Exercise 5: Array Sum (★★✩✩✩) ........................ 733.2.6 Exercise 6: Array Min (★★✩✩✩) ......................... 733.2.7 Exercise 7: Conversions (★★✩✩✩) ...................... 743.2.8 Exercise 8: Exponential Function (★★✩✩✩)............... 753.2.9 Exercise 9: Pascal’s triangle (★★✩✩✩) ................... 763.2.10 Exercise 10: Number palindromes (★★★★✩).............. 763.2.11 Exercise 11: Permutations (★★★✩✩) .................... 773.2.12 Exercise 12: Count Substrings (★★✩✩✩) ................. 773.2.13 Exercise 13: Ruler (★★✩✩✩) ........................... 783.3 Solutions .................................................... 793.3.1 Solution 1: Fibonacci (★★✩✩✩) ......................... 793.3.2 Solution 2: Process digits (★★✩✩✩) ..................... 813.3.3 Solution 3: GCD (★★✩✩✩) ............................. 823.3.4 Solution 4: Reverse String (★★✩✩✩) .................... 853.3.5 Solution 5: Array Sum (★★✩✩✩) ........................ 863.3.6 Solution 6: Array Min (★★✩✩✩) ......................... 873.3.7 Solution 7: Conversions (★★✩✩✩)....................... 883.3.8 Solution 8: Exponential Function (★★✩✩✩) ............... 923.3.9 Solution 9: Pascal’s triangle (★★✩✩✩) ................... 953.3.10 Solution 10: Number palindromes (★★★★✩) .............. 983.3.11 Solution 11: Permutations (★★★✩✩) ..................... 1013.3.12 Solution 12: Count Substrings (★★✩✩✩) ................. 1043.3.13 Solution 13: Ruler (★★✩✩✩) ............................ 108Inhaltsverzeichnis vii4 Strings ..................................................... 1114.1 Introduction.................................................. 1114.1.1 The class String ..................................... 1124.1.2 The classes StringBuffer and StringBuilder ........ 1134.1.3 Class Character ..................................... 1144.1.4 Examples related to Character and String ............. 1154.2 Exercises ................................................... 1184.2.1 Exercise 1: Number conversions (★★✩✩✩) ............... 1184.2.2 Exercise 2: Joiner (★✩✩✩✩) ............................ 1184.2.3 Exercise 3: Reverse String (★★✩✩✩) .................... 1194.2.4 Exercise 4: Palindrome (★★★✩✩) ....................... 1194.2.5 Exercise 5: No Duplicate Chars (★★★✩✩) ................ 1204.2.6 Exercise 6: Remove Duplicate Letters (★★★✩✩) .......... 1204.2.7 Exercise 7: Capitalize (★★✩✩✩) ........................ 1214.2.8 Exercise 8: Rotation (★★✩✩✩) .......................... 1224.2.9 Exercise 9: Well formed braces (★★✩✩✩) ................ 1224.2.10 Exercise 10: Anagram (★★✩✩✩) ........................ 1234.2.11 Exercise 11: Morse Code (★★✩✩✩) ..................... 1234.2.12 Exercise 12: Pattern Checker (★★★✩✩) .................. 1244.2.13 Exercise 13: Tennis score (★★★✩✩) ..................... 1244.2.14 Exercise 14: Version numbers (★★✩✩✩) ................. 1254.2.15 Exercise 15: Conversion strToLong (★★✩✩✩) ........... 1254.2.16 Exercise 16: Print Tower (★★★✩✩) ...................... 1264.3 Solutions .................................................... 1274.3.1 Solution 1: Number conversions (★★✩✩✩) ............... 1274.3.2 Solution 2: Joiner (★✩✩✩✩) ............................ 1304.3.3 Solution 3: Reverse String (★★✩✩✩) .................... 1324.3.4 Solution 4: Palindrome (★★★✩✩)........................ 1344.3.5 Solution 5: No Duplicate Chars (★★★✩✩) ................ 1374.3.6 Solution 6: Remove Duplicate Letters (★★★✩✩) ........... 1384.3.7 Solution 7: Capitalize (★★✩✩✩) ......................... 1404.3.8 Solution 8: Rotation (★★✩✩✩) .......................... 1444.3.9 Solution 9: Well formed braces (★★✩✩✩) ................ 1454.3.10 Solution 10: Anagram (★★✩✩✩) ........................ 1474.3.11 Solution 11: Morse Code (★★✩✩✩)...................... 1484.3.12 Solution 12: Pattern Checker (★★★✩✩) .................. 1504.3.13 Solution 13: Tennis score (★★★✩✩) ..................... 1524.3.14 Solution 14: Version numbers (★★✩✩✩).................. 1564.3.15 Solution 15: Conversion strToLong (★★✩✩✩) ........... 1584.3.16 Solution 16: Print Tower (★★★✩✩)....................... 161viii Inhaltsverzeichnis5 Arrays ...................................................... 1655.1 Introduction.................................................. 1655.1.1 One-dimensional arrays ................................. 1665.1.2 Multidimensional arrays ................................. 1765.1.3 Typical errors .......................................... 1835.2 Exercises ................................................... 1845.2.1 Exercise 1: Even before odd numbers (★★✩✩✩) .......... 1845.2.2 Exercise 2: Flip (★★✩✩✩) .............................. 1845.2.3 Exercise 3: Palindrome (★★✩✩✩) ....................... 1845.2.4 Exercise 4: Inplace Rotate (★★★✩✩) .................... 1855.2.5 Exercise 5: Jewels Board Init (★★★✩✩) .................. 1855.2.6 Exercise 6: Jewels Board Erase Diamonds (★★★★✩) ...... 1875.2.7 Exercise 7: Spiral Traversal (★★★★✩) .................... 1885.2.8 Exercise 8: Add One to Array As Number (★★✩✩✩) ....... 1885.2.9 Exercise 9: Sudoku Checker (★★★✩✩)................... 1895.2.10 Exercise 10: Flood-Fill (★★✩✩✩) ........................ 1905.2.11 Exercise 11: Array Merge (★★✩✩✩) ..................... 1915.2.12 Exercise 12: Array Min and Max (★★✩✩✩) ............... 1915.2.13 Exercise 13: Array Split (★★★✩✩) ....................... 1925.2.14 Exercise 14: Minesweeper Board (★★★✩✩) .............. 1935.3 Solutions .................................................... 1955.3.1 Solution 1: Even before odd numbers (★★✩✩✩) ........... 1955.3.2 Solution 2: Flip (★★✩✩✩) .............................. 1995.3.3 Solution 3: Palindrome (★★✩✩✩)........................ 2035.3.4 Solution 4: Inplace Rotate (★★★✩✩) ..................... 2055.3.5 Solution 5: Jewels Board Init (★★★✩✩) .................. 2095.3.6 Solution 6: Jewels Board Erase Diamonds (★★★★✩) ...... 2165.3.7 Solution 7: Spiral Traversal (★★★★✩) .................... 2255.3.8 Solution 8: Add One to Array As Number (★★✩✩✩) ........ 2305.3.9 Solution 9: Sudoku Checker (★★★✩✩) ................... 2325.3.10 Solution 10: Flood-Fill (★★✩✩✩) ........................ 2385.3.11 Solution 11: Array Merge (★★✩✩✩)...................... 2425.3.12 Solution 12: Array Min and Max (★★✩✩✩) ................ 2465.3.13 Solution 13: Array Split (★★★✩✩) ....................... 2495.3.14 Solution 14: Minesweeper Board (★★★✩✩) ............... 254Inhaltsverzeichnis ix6 Date processing ............................................ 2616.1 Introduction.................................................. 2616.1.1 The enumerations DayOfWeek and Month ................ 2616.1.2 The classes LocalDate, LocalTime and LocalDateTime 2626.1.3 The class ZonedDateTime ............................. 2646.1.4 The class ZoneId ..................................... 2656.1.5 Class Duration....................................... 2666.1.6 The class Period ..................................... 2676.1.7 Date arithmetic ........................................ 2686.1.8 Formatting and parsing ................................. 2706.2 Exercises ................................................... 2726.2.1 Exercise 1: Leap Years (★✩✩✩✩) ....................... 2726.2.2 Exercise 2: Basic knowledge Date-API (★★✩✩✩).......... 2726.2.3 Exercise 3: Length of Month (★★✩✩✩) ................... 2736.2.4 Exercise 4: Time Zones (★★✩✩✩) ....................... 2736.2.5 Exercise 5: Time Zone Calculation (★★✩✩✩) ............. 2736.2.6 Exercise 6: Calculations with LocalDate ................. 2746.2.7 Exercise 7: Calendar output (★★★✩✩) ................... 2746.2.8 Exercise 8: Weekdays (★✩✩✩✩) ........................ 2756.2.9 Exercise 9: Sundays and leap years (★★✩✩✩) ............ 2766.2.10 Exercise 10: TemporalAdjuster (★★★✩✩)................. 2766.2.11 Exercise 11: NthWeekdayAdjuster (★★★✩✩) ............. 2776.2.12 Exercise 12: Payday-TemporalAdjuster (★★★✩✩) ......... 2776.2.13 Exercise 13: Formatting and Parsing (★★✩✩✩) ........... 2786.2.14 Exercise 14: Fault Tolerant Parsing (★★✩✩✩) ............. 2786.3 Solutions .................................................... 2796.3.1 Solution 1: Leap Years (★✩✩✩✩) ........................ 2796.3.2 Solution 2: Basic knowledge Date-API (★★✩✩✩) .......... 2806.3.3 Solution 3: Length of Month (★★✩✩✩) ................... 2816.3.4 Solution 4: Time Zones (★★✩✩✩) ....................... 2826.3.5 Solution 5: Time Zone Calculation (★★✩✩✩).............. 2836.3.6 Solution 6: Calculations with LocalDate ................. 2846.3.7 Solution 7: Calendar output (★★★✩✩) ................... 2866.3.8 Solution 8: Weekdays (★✩✩✩✩) ........................ 2896.3.9 Solution 9: Sundays and leap years (★★✩✩✩) ............ 2926.3.10 Solution 10: TemporalAdjuster (★★★✩✩) ................. 2946.3.11 Solution 11: NthWeekdayAdjuster (★★★✩✩) .............. 2956.3.12 Solution 12: Payday-TemporalAdjuster (★★★✩✩) .......... 2976.3.13 Solution 13: Formatting and Parsing (★★✩✩✩) ............ 3016.3.14 Solution 14: Fault Tolerant Parsing (★★✩✩✩) ............. 302x Inhaltsverzeichnis7 Basic data structures: lists, sets, and maps ................... 3057.1 Introduction.................................................. 3057.1.1 The interface Collection.............................. 3057.1.2 Lists and the interface List ......................... 3067.1.3 Sets and the interface Set .............................. 3077.1.4 Key-value mappings and the interface map ................ 3077.1.5 The stack as LIFO data structure ......................... 3087.1.6 The queue as FIFO data structure........................ 3097.2 Exercises ................................................... 3117.2.1 Exercise 1: Set operations (★★✩✩✩) .................... 3117.2.2 Exercise 2: List Reverse (★★✩✩✩) ...................... 3117.2.3 Exercise 3: Remove Duplicates (★★✩✩✩) ................ 3127.2.4 Exercise 4: Maximum Profit (★★★✩✩) ................... 3127.2.5 Exercise 5: Longest sequence (★★★✩✩) ................. 3137.2.6 Exercise 6: Own stack (★★✩✩✩) ........................ 3137.2.7 Exercise 7: Well-formed braces (★★✩✩✩) ................ 3137.2.8 Exercise 8: Check Magic Triangle (★★★✩✩) .............. 3147.2.9 Exercise 9: Pascal’s triangle (★★★✩✩) ................... 3147.2.10 Exercise 10: Most Frequent Elements (★★✩✩✩) .......... 3157.2.11 Exercise 11: Addition of digits (★★★✩✩) ................. 3157.2.12 Exercise 12: Compound Key (★★✩✩✩) .................. 3167.2.13 Exercise 13: List Merge (★★✩✩✩) ....................... 3167.2.14 Exercise 14: Excel Magic Select (★★✩✩✩) ............... 3177.3 Solutions .................................................... 3187.3.1 Solution 1: Set operations (★★✩✩✩) ..................... 3187.3.2 Solution 2: List Reverse (★★✩✩✩)....................... 3237.3.3 Solution 3: Remove Duplicates (★★✩✩✩) ................ 3267.3.4 Solution 4: Maximum Profit (★★★✩✩) .................... 3277.3.5 Solution 5: Longest sequence (★★★✩✩) ................. 3307.3.6 Solution 6: Own stack (★★✩✩✩) ........................ 3337.3.7 Solution 7: Well-formed braces (★★✩✩✩) ................ 3357.3.8 Solution 8: Check Magic Triangle (★★★✩✩)............... 3407.3.9 Solution 9: Pascal’s triangle (★★★✩✩) ................... 3447.3.10 Solution 10: Most Frequent Elements (★★✩✩✩) ........... 3467.3.11 Solution 11: Addition of digits (★★★✩✩) .................. 3487.3.12 Solution 12: Compound Key (★★✩✩✩) ................... 3527.3.13 Solution 13: List Merge (★★✩✩✩) ....................... 3547.3.14 Solution 14: Excel Magic Select (★★✩✩✩)................ 356Inhaltsverzeichnis xiII More advanced and tricky topics 3618 Advanced recursion ......................................... 3638.1 Memoization ................................................. 3638.1.1 Memoization for Fibonacci numbers ...................... 3638.1.2 Memoization for Pascal’s triangle ......................... 3658.2 Backtracking ................................................. 3688.2.1 n-queens problem ...................................... 3688.3 Exercises ................................................... 3728.3.1 Exercise 1: Towers of Hanoi (★★★✩✩) ................... 3728.3.2 Exercise 2: Edit Distance (★★★★✩) ..................... 3738.3.3 Exercise 3: Longest Common Subsequence (★★★✩✩) ..... 3738.3.4 Exercise 4: Way out of labyrinth (★★★✩✩) ................ 3748.3.5 Exercise 5: Sudoku Solver (★★★★✩) .................... 3758.3.6 Exercise 6: Math Operator Checker (★★★★✩) ............ 3768.3.7 Exercise 7: Water Bucket Problem (★★★✩✩) ............. 3778.3.8 Exercise 8: All palindrome substrings (★★★★✩) ........... 3788.3.9 Exercise 9: n-queens problem (★★★✩✩) ................. 3788.4 Solutions .................................................... 3798.4.1 Solution 1: Towers of Hanoi (★★★✩✩) ................... 3798.4.2 Solution 2: Edit Distance (★★★★✩) ...................... 3858.4.3 Solution 3: Longest Common Subsequence (★★★✩✩) ..... 3918.4.4 Solution 4: Way out of labyrinth (★★★✩✩) ................ 3948.4.5 Solution 5: Sudoku Solver (★★★★✩) ..................... 3978.4.6 Solution 6: Math Operator Checker (★★★★✩) ............. 4058.4.7 Solution 7: Water Bucket Problem (★★★✩✩) .............. 4108.4.8 Solution 8: All palindrome substrings (★★★★✩) ........... 4138.4.9 Solution 9: n-queens problem (★★★✩✩).................. 4179 Binary trees ................................................ 4259.1 Introduction.................................................. 4259.1.1 Structure, terminology and examples of use ............... 4259.1.2 Binary trees ........................................... 4269.1.3 Binary trees with order: binary search trees ............... 4279.1.4 Traversals ............................................. 4299.1.5 Balanced trees and other properties ...................... 4329.1.6 Trees for the examples and exercises ..................... 4349.2 Exercises ................................................... 4369.2.1 Exercise 1: Tree Traversal (★★✩✩✩) ..................... 4369.2.2 Exercise 2: In-, Pre- und Postorder iterative (★★★★✩)...... 4369.2.3 Exercise 3: Tree Height (★★✩✩✩) ....................... 4369.2.4 Exercise 4: Lowest Common Ancestor (★★★✩✩) .......... 4379.2.5 Exercise 5: Breadth-First (★★★✩✩) ...................... 437xii Inhaltsverzeichnis9.2.6 Exercise 6: Level Sum (★★★★✩) ........................ 4389.2.7 Exercise 7: Tree Rotate (★★★✩✩) ....................... 4389.2.8 Exercise 8: Reconstruction (★★★✩✩) .................... 4399.2.9 Exercise 9: Math Evaluation (★★✩✩✩) ................... 4399.2.10 Exercsie 10: Symmetry (★★✩✩✩) ....................... 4409.2.11 Exercise 11: Check Binary Search Tree (★★✩✩✩) ......... 4419.2.12 Exercise 12: Completeness (★★★★★) ................... 4419.2.13 Exercise 13: Tree Printer (★★★★★) ...................... 4439.3 Solutions .................................................... 4469.3.1 Solution 1: Tree Traversal (★★✩✩✩) ..................... 4469.3.2 Solution 2: In-, Pre- und Postorder iterative (★★★★✩) ...... 4489.3.3 Solution 3: Tree Height (★★✩✩✩) ....................... 4569.3.4 Solution 4: Lowest Common Ancestor (★★★✩✩) .......... 4579.3.5 Solution 5: Breadth-First (★★★✩✩) ...................... 4619.3.6 Solution 6: Level Sum (★★★★✩) ........................ 4639.3.7 Solution 7: Tree Rotate (★★★✩✩) ....................... 4679.3.8 Solution 8: Reconstruction (★★★✩✩) .................... 4709.3.9 Solution 9: Math Evaluation (★★✩✩✩) ................... 4769.3.10 Solution 10: Symmetry (★★✩✩✩) ....................... 4779.3.11 Solution 11: Check Binary Search Tree (★★✩✩✩) ......... 4819.3.12 Solution 12: Completeness (★★★★★) .................... 4839.3.13 Solution 13: Tree Printer (★★★★★) ...................... 49310 Searching and sorting ....................................... 50310.1 Introduction Search ........................................... 50310.1.1 Searching in Collections and Arrays ...................... 50310.1.2 Binary search with binarySearch() .................... 50510.2 Introduction Sort ............................................. 50610.2.1 Insertion Sort .......................................... 50610.2.2 Selection Sort ......................................... 50810.2.3 Merge Sort ............................................ 51010.2.4 Quick Sort ............................................ 51110.2.5 Bucket Sort ........................................... 51410.2.6 Final Thoughts ........................................ 51510.3 Exercises ................................................... 51610.3.1 Exercise 1: Contains All (★★✩✩✩)....................... 51610.3.2 Exercise 2: Partitioning (★★★✩✩) ....................... 51610.3.3 Exercise 3: Binary Search (★★✩✩✩)..................... 51710.3.4 Exercise 4: Insertion Sort (★★✩✩✩) ..................... 51710.3.5 Exercise 5: Selection Sort (★★✩✩✩) ..................... 51810.3.6 Exercise 6: Quick Sort (★★★✩✩) ........................ 51810.3.7 Exercise 7: Bucket Sort (★★✩✩✩) ....................... 51910.3.8 Exercise 8: Search in rotated data (★★★★✩).............. 519Inhaltsverzeichnis xiii10.4 Solutions .................................................... 52110.4.1 Solution 1: Contains All (★★✩✩✩) ....................... 52110.4.2 Solution 2: Partitioning (★★★✩✩) ........................ 52210.4.3 Solution 3: Binary Search (★★✩✩✩) ..................... 52410.4.4 Solution 4: Insertion Sort (★★✩✩✩)...................... 52810.4.5 Solution 5: Selection Sort (★★✩✩✩) ..................... 52910.4.6 Solution 6: Quick Sort (★★★✩✩) ........................ 53010.4.7 Solution 7: Bucket Sort (★★✩✩✩) ....................... 53210.4.8 Solution 8: Search in rotated data (★★★★✩) .............. 53411 Conclusion and supplementary literature ..................... 54111.1 Conclusion .................................................. 54111.1.1 Lessons learned per chapter ............................ 54111.1.2 Noteworthy ............................................ 54311.2 Puzzles ..................................................... 54411.2.1 Gold bags – detect the fake ............................. 54511.2.2 Horse race – determine fastest three horses ............... 54611.3 Supplementary literature ...................................... 549III Appendix 553A Quick start JShell ........................................... 555A.1 Java + REPL => jshell ...................................... 555B Short introduction JUnit 5 ................................... 561B.1 Writing and running tests ...................................... 561B.1.1 Example: A first unit test ................................ 561B.1.2 Fundamentals of writing and running tests................. 562B.1.3 Handling expected exceptions with assertThrows() ...... 565B.2 Parameterized tests with JUnit 5 ............................... 566C Quick start O-notation ....................................... 569C.1 Estimations with the O-notation ................................ 569C.1.1 Complexity classes ..................................... 570C.1.2 Complexity and program running time .................... 572
Python Unit Test Automation
Learn how to automate unit tests of Python 3 with automation libraries, such as doctest, unittest, nose, nose2, pytest, and selenium. This book explores important concepts in software test automation and demonstrates how to automate, organize, and execute unit tests with Python. It also introduces readers to the concepts of web browser automation and logging.This new edition starts with an introduction to Python 3. Next, it covers doctest and pydoc. This is followed by a discussion on unittest, a framework that comes packaged with Python 3 itself. There is a dedicated section on creating test suites, followed by an explanation of how nose2 provides automatic test module discovery. Moving forward, you will learn about pytest, the most popular third-party library and testrunner for Python. You will see how to write and execute tests with pytest. You’ll also learn to discover tests automatically with pytest.This edition features two brand new chapters, the first of which focuses on the basics of web browser automation with Selenium. You’ll learn how to use Selenium with unittest to write test cases for browser automation and use the Selenium IDE with web browsers such as Chrome and Firefox. You’ll then explore logging frameworks such as Python’s built-in logger and the third-party framework loguru.The book concludes with an exploration of test-driven development with pytest, during which you will execute a small project using TDD methodology.WHAT YOU WILL LEARN* Start testing with doctest and unittest* Understand the idea of unit testing* Get started with nose 2 and pytest* Learn how to use logger and loguru* Work with Selenium and test driven developmentWHO THIS BOOK IS FORPython developers, software testers, open source enthusiasts, and contributors to the Python community. Ashwin Pajankar holds a Master of Technology from IIIT Hyderabad, and has over 25 years of programming experience. He started his journey in programming and electronics with BASIC programming language and is now proficient in Assembly programming, C, C++, Java, Shell Scripting, and Python. Other technical experience includes single board computers such as Raspberry Pi and Banana Pro, and Arduino. He is currently a freelance online instructor teaching programming bootcamps to more than 60,000 students from tech companies and colleges. His Youtube channel has an audience of 10000 subscribers and he has published more than 15 books on programming and electronics with many international publications.Chapter 1: Introduction to PythonChapter Goal: Brief intro into Python 3No of pagesSub -Topics1. History of Python2. Features3. Python 34. Installation5. Running a Python program6. IDEsChapter 2: GettingSstarted with Unit TestingChapter Goal: Brief acquaintance with the subject of the book and some hands onNo of pages:Sub - Topics:1. Software Testing concepts2. Docstrings3. pydoc4. DoctestChapter 3: UnittestChapter Goal: Getting to understand the Unittest frameworkNo of pages:Sub - Topics:1. xUnit2. Using unittest3. Test discovery4. Coding conventions for unittest5. Assertions in unittest6. Other useful methods7. Failing a test8. Advanced functionalitya) More command line optionsb) Test suitec) AssertRaisesWarnChapter 4: Nose and Nose 2Chapter Goal: Concepts of Nose and Nose 2No of pages:Sub - Topics:1. Introduction to nose2. Fixtures3. Testing Tools4. Reports5. Running unittests and doctests6. Advantages and disadvantages7. Introduction to nose 28. Advanced topics in nose 2a) Running tests and conventionsb) Parameterized testsc) Generating reportChapter 5: pytestChapter Goal: work with pytest1. Introduction to pytest2. Fixtures3. Command line optionsChapter 6: TestifyChapter Goal: work with testify1. Fixtures2. Advanced featuresChapter 7: Logging in PythonChapter Goal: work with logging1. Logger2. LoguruChapter 8: Additional TopicsChapter Goal: work with testify1. Naming conventions2. TDD with Python3. Selenium with pytest and logger
More Java 17
Work with the essential and advanced features of the Java 17 release. This book covers features such as annotations, reflection, and generics. These topics are then complemented by details of how to use lambda expressions, allowing you to build powerful and efficient Java programs. Furthermore, added to this edition you'll find topics on network programming, Java RMI, the process API, and custom runtime images. The authors provide a multitude of diagrams and complete programs to help you visualize and better understand the topics covered in this book.More Java 17, Third Edition starts with a series of chapters on the essential language features provided by Java before moving on to Java module development and packaging, and improved interop with other languages. After reading this book, you'll have the know-how of a professional Java programmer and be able to tackle most projects with confidence.This book's source code can be accessed at github.com/Apress/more-java-17.WHAT YOU WILL LEARN* Use essential and advanced features of the Java language* Code Java annotations* Work with reflection and generics* Manage streams with the Stream APIWHO THIS BOOK IS FORThose new to Java programming who are continuing the Java learning journey; it is recommended that you read an introductory Java programming book first, such as Java 17 for Absolute Beginners, from Apress.KISHORI SHARAN has earned a master of science in computer information systems degree from Troy State University, Alabama. He is a Sun Certified Java 2 programmer. He has vast experience in providing training to professional developers in Java, JSP, EJB, and web technology. He possesses over ten years of experience in implementing enterprise-level Java applications.PETER SPÄTH graduated in 2002 as a physicist and soon afterward became an IT consultant, mainly for Java-related projects. In 2016, he decided to concentrate on writing books on various aspects, but with a main focus on software development. With two books about graphics and sound processing, three books on Android app development, and a beginner’s book on Jakarta EE development, the author continues his effort in writing software development-related literature.1. Annotations2. Inner Classes3. Reflection4. Generics5. Lambda Expressions6. Threads7. Input Output8. Working with Archive Files9. New Input Output NIO10. New Input Output 2.011. Garbage Collection12. Collections13. Streams14. Implementing Services15. The Module API16. Breaking Module Encapsulation17. Reactive Streams18. Stack Walking19. Network Programming20. JDBC API21. Java Remote Method Invocation22. Java Native Interface23. Process API24. Packaging Modules25. Custom Runtime Images
API Marketplace Engineering
This is your hands-on guide to designing, building, and operating an API Marketplace to allow your organization to expose internal services and customer data securely for use by external developers. The book shows the mutual nature of a relationship in which organizations benefit from revenue and the reach of a new digital channel and third-party developers benefit from leveraging APIs to build unique applications.Providing open access is a regulatory requirement in some sectors, such as financial services, and this book helps you to build a platform to comply with regulatory requirements while at the same time encouraging and supporting use by external development teams. The book provides the blueprints for assembling teams and systems to build and support an API ecosystem. It offers insight into how the Marketplace can be constructed in a way to allow agility and flexibility to meet aggressive startup developer timelines while balancing established enterprise requirements of stability, reliability, and governance. The goal of this book is to provide engineering teams with a view of the operational requirements and how to meet and exceed these by establishing foundational elements at design time.An API Marketplace presents a unique challenge as organizations have to share internal capability and customer data with external developers. Security practices and industry standards are contrasted and discussed in this book. Practical approaches are provided to build and support a third-party developer ecosystem, manage sandbox environments hosting APIs of varying complexities, and cover monetization strategies that are yielding positive results to achieve self-sustainability.WHAT YOU WILL LEARN* Understand the motivation and objectives for an API economy* Build key technical components of an API platform* Comply with regulatory requirements such as Open Banking* Secure APIs and customer data from external attack* Deliver APIs quickly while satisfying governance requirements* Get insight into a real-world API Marketplace implementationWHO THIS BOOK IS FORSolution architects, API product owners, delivery and development leads, and developers; anyone developing APIs for consumption by external business partners; API developers who want more insight into regulatory complianceRENNAY DORASAMY has spent the last 20 years in various technology roles, ranging from development to operations to architecture, across a number of industries. He has worked in telecoms, with government, and most recently in financial services. He has considerable hands-on integration experience working on middleware platforms from C-based messaging to Java Enterprise Edition. He is experienced in both core enterprise and digital contexts. As a full-stack engineer, he is intimately familiar with technologies such as containerization, cloud, and serverless technology for building and deploying mission-critical solutions. He is currently the Engineering Lead of an API Marketplace implementation, the first of its kind in financial services on the African continent. 1. API Engineering2. Regulation3. Consumption4. Monetization5. Platform Architecture6. Security7. API Design8. API Development9. Sandbox10. API Operations11. Conclusion
Coole Spiele mit Scratch 3 (2. Auflg.)
Mit Videospielen programmieren lernen – ohne Code zu schreiben! 2. überarbeitete und aktualisierte Auflage.Scratch, die farbenfrohe Drag-and-drop-Programmiersprache, wird auf der ganzen Welt von Millionen von Anfängern verwendet, und die zweite Ausgabe von »Coole Spiele mit Scratch« wurde jetzt vollständig aktualisiert. Die Verwendung mit Scratch 3 macht es einfacher denn je, deine Programmierfähigkeiten Block für Block aufzubauen. Du lernst spielerisch zu programmieren, indem du Videospiele erschaffst, in denen beim Katzenwerfen ins Schwarze getroffen, Asteroiden zerstört und ein KI-Feind überlistet werden können. Mit Scratch 3 geht das jetzt auch auf Mobilgeräten und dem Raspberry Pi – und immer ganz ohne Installation.»Coole Spiele mit Scratch 3« leitet Kinder und Programmierneulinge zum Programmieren an. Beispiele und Sprache des Buches sind leichtverständlich gehalten; für Kinder in den ersten Grundschulklassen wird empfohlen, die Kapitel gemeinsam mit Älteren durchzugehen.In jeden Kapitel wirst du ein Spiel erstellen und dabei die wichtigsten Programmierkonzepte kennenlernen und direkt anwenden. Von einer Skizze, die festlegt, wie das Spiel aussehen soll, führt eine Schritt-für-Schritt-Anleitung zum funktionierenden Videospiel. Diese Spiele kannst du nach eigenen Vorstellungen gestalten, indem du spezielle Funktionen, zusätzliche Level und sogar Cheat-Modi hinzufügst.Zu den Programmierbeispielen gehören Spiele wie z.B.:Maze Runner, mit acht verschiedenen Levels, durch die man entkommen mussKörbewerfen unter Schwerkraftbedingungen (und mit Katzen!), inklusive realistischer FlugbahnEin Brick-Breaker-Spiel mit Animationen und Soundeffekten von simpel bis edelAsteroidenknacker, ein Klon des klassischen Asteroids-Spiels mit einem tastaturgesteuertem RaumschiffEin Mario-Bros.-ähnliches Jump-&-Run-Spiel mit viel Action und KI-gesteuerten FeindenEs ist nie zu früh (oder zu spät), mit dem Programmieren anzufangen, und »Coole Spiele mit Scratch 3« macht den Lernprozess nicht nur lustig – es lässt die Programmiererinnen und Coder in spe auch ein Spiel daraus machen!Über den Autor:Al Sweigart ist Softwareentwickler und vermittelt Coding-Kenntnisse an Erwachsene und Kinder. Er hat mehrere Programmierlehrbücher für Einsteiger (und auch solche für Fortgeschrittene) geschrieben, unter anderem Routineaufgaben mit Python automatisieren, das ebenfalls bei dpunkt erschienen ist.
Agile Visualization with Pharo
Use the Pharo interactive development environment to significantly reduce the cost of creating interactive visualizations. This book shows how Pharo leverages visualization development against traditional frameworks and toolkits.Agile Visualization with Pharo focuses on the Roassal visualization engine and first presents the basic and necessary tools to visualize data, including an introduction to the Pharo programming language. Once you’ve grasped the basics, you’ll learn all about the development environment offered by Roassal. The book provides numerous ready-to-use examples. You’ll work on several applications, including visualizing the training phase of reinforcement learning (a powerful machine learning algorithm) and generating software visualizations from GitHub.This book covers aspects that are relevant for engineers and academics to successfully design and implement interactive visualizations.WHAT YOU WILL LEARN* Implement agile data visualization using the Pharo programming language* Chart, plot, and curve using Grapher* Build and draw graphs using Mondrian* Implement reinforcement learning (Q-Learning, from scratch) and use visualizations to monitor learning and state exploration* Use GitHub Action to generate software visualizations (UML class diagram, test coverage) at each commit WHO THIS BOOK IS FORProgrammers with some prior exposure to data visualization and computer vision who may be new to the Pharo programming language. This book is also for those with some Pharo experience looking to apply it to data visualization.ALEXANDRE BERGEL is a contributor to the Pharo programming language and an assistant professor at the University of Chile. He does research in software engineering and programming using Pharo and other programming languages with applications in data visualization, agile methodology, and more.1: Introduction.-2: Quick Start.-3: Pharo in a Nutshell.-4: Agile Visualization.-5: Overview of Rossal.-6: The Rossal Canvas.-7: Shapes.-8: Line Builder.-9: Shape Composition.-10: Normalizing and Scaling Values.-11: Interactions.-12: Layouts.-13: Integration in the Inspector.-14: Reinforcement Learning.-15: Generating Visualizations from GitHub.-
Beginning Java 17 Fundamentals
Learn the fundamentals of the Java 17 LTS or Java Standard Edition version 17 Long Term Support release, including basic programming concepts and the object-oriented fundamentals necessary at all levels of Java development. Authors Kishori Sharan and Adam L. Davis walk you through writing your first Java program step-by-step. Armed with that practical experience, you'll be ready to learn the core of the Java language. Beginning Java 17 Fundamentals provides over 90 diagrams and 240 complete programs to help you learn the topics faster.While this book teaches you the basics, it also has been revised to include the latest from Java 17 including the following: value types (records), immutable objects with an efficient memory layout; local variable type inference (var); pattern matching, a mechanism for testing and deconstructing values; sealed types, a mechanism for declaring all possible subclasses of a class; multiline text values; and switch expressions.The book continues with a series of foundation topics, including using data types, working with operators, and writing statements in Java. These basics lead onto the heart of the Java language: object-oriented programming. By learning topics such as classes, objects, interfaces, and inheritance you'll have a good understanding of Java's object-oriented model. The final collection of topics takes what you've learned and turns you into a real Java programmer.You'll see how to take the power of object-oriented programming and write programs that can handle errors and exceptions, process strings and dates, format data, and work with arrays to manipulate data.WHAT YOU WILL LEARN* Write your first Java programs with emphasis on learning object-oriented programming* How to work with switch expressions, value types (records), local variable type inference, pattern matching switch and more from Java 17* Handle exceptions, assertions, strings and dates, and object formatting* Learn about how to define and use modules* Dive in depth into classes, interfaces, and inheritance in Java* Use regular expressions* Take advantage of the JShell REPL toolWHO THIS BOOK IS FORThose who are new to Java programming, who may have some or even no prior programming experience.KISHORI SHARAN has earned a Master of Science in Computer Information Systems degree from Troy State University, Alabama. He is a Sun Certified Java 2 programmer. He has vast experience in providing training to professional developers in Java, JSP, EJB, and Web technology. He possesses over ten years of experience in implementing enterprise level Java application.ADAM L. DAVIS makes software. He’s spent many years developing in Java (since Java 1.2) and has enjoyed using Spring and Hibernate for more than a decade. Since 2006 he’s been using Groovy, Grails, HTML, CSS, and JavaScript, in addition to Java, to create SaaS web applications that help track finances for large institutions (among other things). Adam has a master’s and a bachelor’s degree in Computer Science from Georgia Tech. He is also the author of Reactive Streams in Java (Apress, 2019), Learning Groovy 3, Second Edition (Apress, 2019) and Modern Programming Made Easy, Second Edition (Apress, 2020).1. Programming Concepts2. Setting Up the Environment3. Writing Java Programs4. Data Types5. Operators6. Statements7. Classes and Objects8. Methods9. Constructors10. Modules11. Object and Objects Classes12. Wrapper Classes13. Execution Handling14. Assertions15. Strings16. Dates and Times17. Formatting Data18. Regular Expressions19. Arrays20. Inheritance21. Interfaces22. Enum Types23. Java ShellAppendix A: Character EncodingsAppendix B: Documentation Comments
Hands-on Matplotlib
Learn the core aspects of NumPy, Matplotlib, and Pandas, and use them to write programs with Python 3. This book focuses heavily on various data visualization techniques and will help you acquire expert-level knowledge of working with Matplotlib, a MATLAB-style plotting library for Python programming language that provides an object-oriented API for embedding plots into applications.You'll begin with an introduction to Python 3 and the scientific Python ecosystem. Next, you'll explore NumPy and ndarray data structures, creation routines, and data visualization. You'll examine useful concepts related to style sheets, legends, and layouts, followed by line, bar, and scatter plots. Chapters then cover recipes of histograms, contours, streamplots, and heatmaps, and how to visualize images and audio with pie and polar charts.Moving forward, you'll learn how to visualize with pcolor, pcolormesh, and colorbar, and how to visualize in 3D in Matplotlib, create simple animations, and embed Matplotlib with different frameworks. The concluding chapters cover how to visualize data with Pandas and Matplotlib, Seaborn, and how to work with the real-life data and visualize it. After reading Hands-on Matplotlib you'll be proficient with Matplotlib and able to comfortably work with ndarrays in NumPy and data frames in Pandas.WHAT YOU'LL LEARN* Understand Data Visualization and Python using Matplotlib* Review the fundamental data structures in NumPy and Pandas * Work with 3D plotting, visualizations, and animations* Visualize images and audio dataWHO THIS BOOK IS FORData scientists, machine learning engineers and software professionals with basic programming skills.Ashwin Pajankar holds a Master of Technology from IIIT Hyderabad, and has over 25 years of programming experience. He started his journey in programming and electronics with BASIC programming language and is now proficient in Assembly programming, C, C++, Java, Shell Scripting, and Python. Other technical experience includes single board computers such as Raspberry Pi and Banana Pro, and Arduino.Chapter 1: Getting Started with Python and Jupyter NotebookChapter Goal: Introduce the reader to the basics of Python programming language, philosophy, and installation. We will also learn how to install it on various platforms. This chapter also introduces the readers to Python programming with Jupyter notebook. In the end, we will also have a brief overview of the constituent libraries of SciPy stack.No of pages - 26Sub -Topics• Python Programming Language• Installing Python on various platforms• Python Modes• Python IDEs• Scientific Python Ecosystem• Overview of Jupyter Notebook• Setting up Jupyter Notebook• Running Code in Jupyter NotebookChapter 2: Getting Started with NumPyChapter Goal: Get started with NumPy Ndarrays and basics of NumPy library. The chapter covers the instructions for installation and basic usage of NumPy.No of pages: 9Sub - Topics:· Introduction to the NumPy Ndarrays· Ndarray Properties· NumPy ConstantsChapter 3 : NumPy Routines and Getting started with MatplotlibChapter goal – In this chapter, we will discuss the various Ndarray creation routines available in NumPy. We will also get started with visualizations with Matplotlib. We will learn how to visualize the various numerical ranges with Matplotlib.No of pages: 15Sub - Topics:· Routines for creating Ndarrays· Matplotlib· Visualization with NumPy and MatplotlibChapter 4 : Revisiting Matplotlib VisualizationsChapter goal – This chapter is focused on learning the details of Matplotlib styles for visualizing NumPy Ndarrays.No of pages: 24Sub - Topics:• Single Line Plots• Multiline plots• Grid, Axes, and Labels• Colors, Lines, and Markers• Subplots• Object Oriented Style• Working with the textChapter 5 : Styles and LayoutsChapter goal – This chapter is focused on learning the details of Matplotlib styles and layouts.No of pages: 12Sub - Topics:1. Styles2. layoutsChapter 6 : Line, Bar, and Scatter PlotsChapter goal – In this chapter, we will learn how to create nice visualizations with lines, bars, and scatter.No of pages: 14Sub - Topics:· Lines and Logs· Errorbar· Bar Graphs· Scatter PlotChapter 7 : Histograms, Contours, and StreamplotsChapter goal – In this chapter, we will learn how to create nice visualizations histograms, contours, and streamplots.No of pages: 15Sub - Topics:• Histograms• Contours• Plot vector entities with streamplotsChapter 8 : Image and Audio VisualizationChapter goal – Learn to work with Image Processing using NumPy and Matplotlib. Also learn how to process and visualize audio data as waveforms.No of pages: 15Sub - Topics:• Visualizing images• Interpolation Methods• Audio Visualization• Audio ProcessingChapter 9 : Pie and Polar ChartsChapter goal – Learn to work with Pie and Polar charts.No of pages: 12Sub - Topics:1. Pie charts2. Polar chartsChapter 10 : PColor, Pcolormesh, and ColorbarChapter goal – In this chapter, we will learn Pcolor, Pcolormesh, and colorbar.No of pages: 10Sub - Topics:1. PColor2. Pcolormesh3. ColorbarChapter 11 : 3D Visualizations in MatplotlibChapter goal – In this chapter, we will learn how to create 3D visualizations.No of pages: 17Sub - Topics:• Getting Ready• Plotting 3D Line• 3D Scatter plot• 3D Contours• Wireframe, Surface, and Sample Data• Bar graphs• Quiver and Stemplot• 3D VolumesChapter 12 : Animations with MatplotlibChapter goal – In this chapter, we will learn how to create simple animations with Matplotlib.No of pages: 8Sub - Topics:• Animation Basics• Celluloid libraryChapter 13 : More Recipes of Visualizations with MatplotlibChapter goal – In this chapter, we will learn more types of visualizations with Matplotlib.No of pages: 14Sub - Topics:· Visualizing Function as an image and a contour· 3D Vignette· Decorated Scatter Plots· Time plots and Signals· Filled Plots· Step Plots· Hexbins· XKCD StyleChapter 14 : Introduction to PandasChapter goal – Get started with Pandas data structuresNo of pages: 10Sub - Topics:• Introduction to Pandas• Series in Pandas• Dataframe in PandasChapter 15 : Data AcquisitionChapter goal – Read the data from various sourcesNo of pages: 18Sub - Topics:• Plain Text File Handling• Handling CSV with Python• Python and Excel• Writing and reading files with NumPy• Reading the data from a CSV file with NumPy• Matplotlib CBook• Reading data from a CSV• Reading data from an Excel• Reading data from JSON• Reading data from Pickle• Reading data from Web• Reading data from Relation databases• Reading Data from the clipboardChapter 16 : Visualizing Data with Pandas and MatplotlibChapter goal – Get started with Data Visualization with MatplotlibNo of pages: 25• Simple Plots• Bar Graphs• Histogram• Box Plot• Area Plots• Scatter Plot• Hexagonal Bin Plot• Pie ChartsChapter 17 : Introduction to Data Visualization with SeabornChapter goal – Get started with Pandas and seabornNo of pages: 20Sub - Topics:• What is Seaborn?• Plotting statistical Relationships• Plotting Lines• Visualizing the distribution of dataChapter 18 : Visualizing real-life Data with Matplotlib and SeabornChapter goal – Get started with COVID and Animal disease datasets and Visualize themNo of pages: 20Sub - Topics:• COVID-19 Pandemic Data• Fetching the Pandemic Data Programmatically• Preparing the data for visualization• Visualization with Matplotlib and Seaborn• Visualization of Animal Disease Data
Spring REST
Design and develop Java-based RESTful APIs using the latest versions of the Spring MVC and Spring Boot frameworks. This book walks you through the process of designing and building a REST application while delving into design principles and best practices for versioning, security, documentation, error handling, paging, and sorting.Spring REST provides a brief introduction to REST, HTTP, and web infrastructure. You will learn about several Spring projects such as Spring Boot, Spring MVC, Spring Data JPA, and Spring Security, and the role they play in simplifying REST application development. You will learn how to build clients that consume REST services. Finally, you will learn how to use the Spring MVC test framework to unit test and integration test your REST API.After reading this book, you will come away with all the skills to build sophisticated REST applications using Spring technologies.WHAT YOU WILL LEARN* Build Java-based microservices, native cloud, or any applications using Spring REST* Employ Spring MVC and RESTful Spring* Build a QuickPoll application example* Document REST services, as well as versioning, paging, and sorting* Test, handle errors and secure your applicationWHO THIS BOOK IS FORIntermediate Java programmers with at least some prior experience with Spring and web/cloud application development.BALAJI VARANASI is a software development manager and technology entrepreneur. He has over 13 years of experience architecting and developing Java/.Net applications and, more recently, iPhone apps. During this period he has worked in the areas of security, web accessibility, search, and enterprise portals. He has a Master s Degree in Computer Science and serves as adjunct faculty, teaching programming and information system courses. When not programming, he enjoys spending time with his lovely wife in Salt Lake City, Utah.MAXIM BARTKOV is a staff engineer with more than seven years of commercial experience in Java. Maxim specializes in building architecture for high-load systems. He is skilled in the development of Distributed High-Load Systems, Microservice architecture, Spring Framework, System Architecture, and In-Memory Data Grid (IMDG). In his spare time, he writes articles for the Java community.1. Introduction to REST2. Spring MVC & Spring Boot Primer3. RESTful Spring4. Beginning the QuickPoll Application5. Error Handling6. Documenting REST Services7. Versioning, Paging, and Sorting8. Security9. Clients and Testing10. HATEOASA. Installing cURL on Windows
Practical Docker with Python
Learn the fundamentals of containerization and get acquainted with Docker. This second edition builds upon the foundation of the first book by revising all the chapters, updating the commands, code, and examples to meet the changes in Docker. It also introduces a new chapter on setting up your application for production deployment and breaks down terminologies like Dockerfile and Docker volumes while taking you on a guided tour of building a telegram bot using Python.You'll start with a brief history of how containerization has changed over the years. Next, we look at how to install (including using the new WSL2 mode) and get started with Docker. The next couple of chapters will focus on understanding the Dockerfile, including the structure and the core instructions used in building a Docker image. You'll also see how to distribute Docker images using Docker hub and other private registries. From there, you'll look at using Docker volumes for persisting data. Then learn how to run multi-container applications with Docker compose and learn inter-container networking works with Docker networks. Finally, you'll look at how to prepare a containerized application for production deployments.Throughout the book you'll apply the techniques learned through the chapters by building a Telegram messenger Chatbot and see how much easier Docker makes it possible to build, release, contribute and distribute an application. In addition, the book shows how optimize the Docker images for production servers by using multi-stage builds and improve the reliability of your services by using health checks and restart policies. Practical Docker with Python will break down terminologies like Dockerfile and Docker volumes, and take you on a guided tour of building a telegram bot using Python.WHAT YOU'LL LEARN* Compare the difference between containerization and virtualization* Understand the Dockerfile and converting your application to Docker image* Define and run multi-container applications with Docker compose* Review data persistency with Docker volumesWHO THIS BOOK IS FORBeginner and intermediate developers, DevOps practitioners who are looking improving their build and release workflow by containerizing applications as well as system administrators learning to implement DevOps principles.Sathyajith Bhat is a seasoned DevOps/SRE professional currently working as a DevOps Engineer on Adobe I/O, which is Adobe’s developer ecosystem and community. Prior to this, he was the lead Ops/SRE at Styletag.com. He transitioned to Ops/SRE after being a lead analyst at CGI, working primarily on Oracle Fusion stack (Oracle DB/PL/SQL/Oracle Forms and other related middleware) designing, architecting, and implementing complete end-to-end solutions for a major insurance provider in the Nordics.In his free time, Sathya is part of the Barcamp Bangalore planning team, handling DevOps and Social Media for BCB. He is also a volunteer Community Moderator at Super User and Web Apps Stack Exchange, keeps the servers for Indian Video Gamer forums up and running, and was previously a Moderator for Chip-India and Tech 2 forums.Chapter 1: Introduction to Containerization & DockerChapter Goal: Brief intro into containerization, how they compare to virtual machines, Intro to Docker and getting the reader ready for the practical aspects of the bookNo of pagesSub -Topics1. What are containers2. Containers vs Virtual machines3. Introduction to Docker4. CONTAINER RUNTIMES (OCI, CRI-O, CONTAINERD)Chapter 2: Docker 101Chapter Goal: Getting started with Docker, running a sample containerNo of pages:Sub - Topics:1. INSTALLING DOCKER (INCLUDING CHANGES FOR INSTALLING DOCKER FOR WINDOWS USING THE WSL2 ENGINE)2. Checking if Docker is ready3. Docker client4. Understanding Jargon around Docker (INCLUDING DOCKER REGISTRIES, REPOSITORIES, TAGS)5. Running/stopping/ connecting a docker container6. Dockerfile brief7. Practical: Running a simple container, hands-on some common Docker commandsChapter 3: Building the Python AppChapter Goal: Getting to understand the project, APIs involved, pre-requisitesNo of pages:Sub - Topics:1. Project description (delivering latest content from Reddit to Telegram messenger)2. Setting up the Python workspace (installing the required libraries, setting up virtualenv)3. Creating a Telegram bot4. Running the Python application and confirming bot worksChapter 4: Understanding DockerfileChapter Goal: Getting to know Dockerfile, the different constructs and conceptsNo of pages:Sub - Topics:1. Dockerfile, dockerignore2. Base image & using them with “from …”3. RUN/CMD/Environment variables4. HOW AND WHY TO TAG DOCKER IMAGES5. WHY TO AVOID THE ‘LATEST’ TAG6. Practical: Modifying sample Dockerfile to run our ProjectChapter 5: Understanding Docker VolumesChapter Goal: Containers are meant for stateless applications. Chapter explains steps needed to persist data1. Problem of stateful applications in containers2. Docker volumes3. Practical: Show how data in containers is lost when container is killed and how Docker volumes avoid this4. Practical: Modifying our project Dockerfile to add Docker volumesChapter 6: Docker NetworkingChapter Goal: Overview of Docker networking, linking containers1. Docker bridged network2. User defined networks3. Practical: Create a Database container and link it with our project application server containerChapter 7: Multi Container ApplicationsChapter Goal: Building multi-container applications with Docker compose1. A LOOK AT DOCKER-COMPOSE VERSUS DOCKER COMPOSE2. Docker Compose file reference3. Linking/establishing dependencies across containers4. Environment variables across linked containers5. Practical: Moving our project from separate linked containers to Docker Compose projectCHAPTER 8: PREPARING FOR PRODUCTION DEPLOYMENTS1. WHAT IS ORCHESTRATION AND WHY DO WE NEED ORCHESTRATION2. SETTING UP CI WITH GITHUB ACTIONS TO BUILD A NEW IMAGE ON EVERY COMMIT3. TIPS TO SETUP YOUR PRODUCTION DOCKER HOSTS AND CONTAINERS4. DEPLOYING YOUR CONTAINER IMAGE TO KUBERNETES
Robo Wunderkind für Kids
Roboter bauen und programmieren lernen - die spannende Erstauflage.Ein Roboter, der Nachrichten überbringen kann? Oder ein Roboter-Tier, das man selbst steuert und das genau das macht, was man möchte? Mit Robo Wunderkind und diesem Buch kannst man in die spannende Welt der Robotik eintauchen und selbst entworfenen Roboter nach eigenen Vorstellungen programmieren. Die Autorin führt einen Schritt für Schritt in die Welt von Robo ein. Egal, ob man die ersten Schritte in der Programmierung macht oder etwas komplexere Aufgaben programmieren möchte, in diesem Buch findet man für jedes Level Ideen und Anleitungen. Im ersten Teil des Buchs stellt die Autorin die einzelnen Robo-Sets und Blöcke vor: Manche Blöcke können Sounds abspielen, andere senden Lichtsignale oder schreiben Textnachrichten. Man kann die Blöcke beliebig kombinieren und so der eigenen Fantasie freien Lauf lassen.Im zweiten Teil lernst man die Coding-App kennen. Für jedes der drei Level »Robo Live«, »Robo Code« oder »Robo Blockly« findest man Ideen für die verschiedenen Sets: zum Beispiel die Musikmaschine für Robo Live, den Postboten-Robo für Robo Code und den Mondforscher-Robo für Robo Blockly. Die Autorin erklärt leicht verständlich die Befehle und verschiedenen Optionen der Coding-App – und man findet im Buch ganz viele tolle Robo-Projekte, mit denen man sich austoben und alles ausprobieren kann.Aus dem Inhalt:Die verschiedenen Blöcke und SetsVorstellung der drei Programmierlevels: Robo Live, Robo Code, Robo BlocklyProjekte für jedes Set und Level:Mars-RoverAngst-Hasen-RoboLichtweckerPostboteLinienfolgeru.v.m.Erklärungen zu allen Befehlen:den Robo flitzen oder sein LED-Licht leuchten lassenHupen- oder Lasergeräusche erzeugenHindernisse erkennen und ausweichenNachrichten in einem Display anzeigenOft verwendete Begriffe in der ProgrammierungAnregungen zu eigenen IdeenFragen und Antworten in jedem KapitelInhalt & Leseprobe (PDF-Link)
PHP & MySQL Schnelleinstieg
* PHP PROGRAMMIEREN LERNEN OHNE VORKENNTNISSE* ALLE GRUNDLAGEN FÜR DEN PROFESSIONELLEN EINSATZ* EINFACHE PRAXISBEISPIELE UND ÜBUNGSAUFGABENMit diesem Buch gelingt Ihnen der einfache Einstieg in die Webentwicklung mit PHP und MySQL.Alle Grundlagen werden in 14 Kapiteln anschaulich und leicht nachvollziehbar anhand von Codebeispielen erläutert. Übungsaufgaben am Ende der Kapitel helfen Ihnen, das neu gewonnene Wissen schnell praktisch anzuwenden und zu vertiefen.Der Autor führt Sie Schritt für Schritt in die Welt der Programmierung mit PHP ein: von den Grundlagen über Objektorientierung bis zur Entwicklung dynamischer Webseiten mit MySQL-Datenbanken. Dabei lernen Sie ebenfalls, was guten Programmierstil ausmacht und wie sich Fehler von vornherein vermeiden lassen.So sind Sie perfekt auf die Webentwicklung mit PHP und MySQL im professionellen Umfeld vorbereitet.* Alle Grundlagen einfach erläutert* Dynamische Webseiten und Formulare* Webseiten im Internet veröffentlichen* Anbindung einer Webschnittstelle (API)* Cookies und Sessions* Objektorientierte* Programmierung* Einsatz mit MySQL-Datenbanken* Abschlussprojekt:* Programmierung eines Blogs* Programmcode, Lösungen und Glossar zum DownloadFÜR WINDOWS, LINUX UND MACOSPhilipp Rieber entwickelt seit über 20 Jahren Internet-Anwendungen und begeistert gerne andere für die Webentwicklung. Als Software-Architekt gestaltet er seit ihrer Gründung die erste digitale Krankenversicherung Deutschlands.
C and Python Applications
Solve problems by embedding Python code in a C programs, SQL methods, Python sockets. This book uses rudimentary mathematics and basic programming to create practical Python applications for embedding.You'll start with an introduction to C and Python, assuming a fundamental understanding of what programming is. You will also review the basics of the database management language, SQL. You will learn how to use SQL from a C program and from a Python program. C and Python have different programming strengths, and you will learn how to write a Python program embedded within a C program to profit from the strength of each, in one program. Finally, you will explore how socket programs enable two computers to communicate with each other. Here the book covers basic server-client, basic threaded, and basic chat programs.WHAT YOU WILL LEARN* Review basic Python and C coding * Understand the methods of embedding Python code within a C program* Create typical programs in Python and C using SDK* Work with socket applications in PythonWHO THIS BOOK IS FORProgrammers and computational modelers with at least some prior experience with programming in C and Python as well as programming in general. Philip Joyce has 28 years experience as a software engineer – working on control of steel production, control of oil refineries, communications software (pre-Internet), office products (server software), and computer control of airports. Programming in Assembler, COBOL, Coral66, C, and C++. Mentor to new graduates in the company. He also has a MSc in computational physics (including augmented matrix techniques and Monte Carlo techniques using Fortran) - Salford University 1996. Chartered scientist, chartered physicist, member of the Institute of Physics (member of the higher education group). Chapter 1 :Review of C and PythonChapter goal: Load up all of the software eg sqlite3, C, Python etc1.1 : Pythona. Defining different types of variablesb. Reading in data from command linec. Arithmetic operationsd. Switches (user-written)e. If-then-elsef. Arraysg. For loopsh. Stringsi. Math functionsj. User-written functionsk. Dictionariesl. File usem. Use of Matplotlibn. Create typical programs in Python using SDK1.2 : Ca. Read and write charactersb. Arithmetic operationsc. Switchesd. If-then-elsee. Arraysf. For loops and Do loopsg. Stringsh. Data arraysi. Structuresj. Math functionsk. User-written functionsl. File usem. Create typical programs in C using SDKExercisesChapter 2: SQL in CChapter goal: Load up all of the software eg sqlite3, C compiler, Python etc. Demonstrate using SQL in C by writing separate C programs to:-a) create a tableb) insert a row of data into the tablec) select a row or rows of data in the tabled) amend a row of data in the tablee) delete a row of data from the tableExercisesChapter 3 :SQL in PythonChapter goal: Load up appropriate eg sqlite3, Python etc. Demonstrate using SQL in Python by writing separate Python programs to:-a) create a tableb) insert a row of data into the tablec) select a row or rows of data in the tabled) amend a row of data in the tablee) delete a row of data from the tableExercisesChapter 4 : Embedded Python in Ca. Introduction to why you might want to embed python in cb. Basic example “hello”c. Plot a graph with preset points in python programd. Plot a graph with user-entered points in pythone. Print from a dictionaryExercisesChapter 5: Sockets in Pythona. Show basic server-client programsb. Show basic threaded programsc. Show basic chat programsExercisesAppendicesC Programming Code GuidePython Programming Code Guide