Handbook of Computer ­Programming with Python This handbook provides a hands-on experience based on the underlying topics, and assists students and faculty members in developing their algorithmic thought process and programs for given computational problems. It can also be used by professionals who possess the necessary theoretical and computational thinking background but are presently making their transition to Python. Key Features: • Discusses concepts such as basic programming principles, OOP principles, database programming, GUI programming, application development, data analytics and visualization, statistical analysis, virtual reality, data structures and algorithms, machine learning, and deep learning. • Provides the code and the output for all the concepts discussed. • Includes a case study at the end of each chapter. This handbook will benefit students of computer science, information systems, and information technology, or anyone who is involved in computer programming (entry-to-intermediate level), data analytics, HCI-GUI, and related disciplines. Handbook of Computer ­Programming with Python Edited by Dimitrios Xanthidis Christos Manolas Ourania K. Xanthidou Han-I Wang First edition published 2023 by CRC Press 6000 Broken Sound Parkway NW, Suite 300, Boca Raton, FL 33487-2742 and by CRC Press 4 Park Square, Milton Park, Abingdon, Oxon, OX14 4RN CRC Press is an imprint of Taylor & Francis Group, LLC © 2023 selection and editorial matter, Dimitrios Xanthidis, Christos Manolas, Ourania K. Xanthidou, Han-I Wang; individual chapters, the contributors Reasonable efforts have been made to publish reliable data and information, but the author and publisher cannot ­ ublishers assume responsibility for the validity of all materials or the consequences of their use. The authors and p have attempted to trace the copyright holders of all material reproduced in this publication and apologize to ­copyright ­holders if permission to publish in this form has not been obtained. If any copyright material has not been ­acknowledged please write and let us know so we may rectify in any future reprint. Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, ­including ­photocopying, microfilming, and recording, or in any information storage or retrieval system, without written ­permission from the publishers. For permission to photocopy or use material electronically from this work, access www.copyright.com or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. For works that are not available on CCC please contact mpkbookspermissions@tandf.co.uk Trademark notice: Product or corporate names may be trademarks or registered trademarks and are used only for identification and explanation without intent to infringe. ISBN: 978-0-367-68777-9 (hbk) ISBN: 978-0-367-68778-6 (pbk) ISBN: 978-1-003-13901-0 (ebk) DOI: 10.1201/9781003139010 Typeset in Times by codeMantra Access the Support Material: https://www.routledge.com/9780367687779 Contents Editors...............................................................................................................................................vii Contributors.......................................................................................................................................ix Chapter 1 Introduction...................................................................................................................1 Dimitrios Xanthidis, Christos Manolas, Ourania K. Xanthidou, and Han-I Wang Chapter 2 Introduction to Programming with Python...................................................................9 Ameur Bensefia, Muath Alrammal, and Ourania K. Xanthidou Chapter 3 Object-Oriented Programming in Python................................................................... 59 Ghazala Bilquise, Thaeer Kobbaey, and Ourania K. Xanthidou Chapter 4 Graphical User Interface Programming with Python............................................... 107 Ourania K. Xanthidou, Dimitrios Xanthidis, and Sujni Paul Chapter 5 Application Development with Python..................................................................... 161 Dimitrios Xanthidis, Christos Manolas, and Hanêne Ben-Abdallah Chapter 6 Data Structures and Algorithms with Python...........................................................207 Thaeer Kobbaey, Dimitrios Xanthidis, and Ghazala Bilquise Chapter 7 Database Programming with Python........................................................................ 273 Dimitrios Xanthidis, Christos Manolas, and Tareq Alhousary Chapter 8 Data Analytics and Data Visualization with Python................................................ 319 Dimitrios Xanthidis, Han-­I Wang, and Christos Manolas Chapter 9 Statistical Analysis with Python............................................................................... 373 Han-­I Wang, Christos Manolas, and Dimitrios Xanthidis Chapter 10 Machine Learning with Python................................................................................409 Muath Alrammal, Dimitrios Xanthidis, and Munir Naveed Chapter 11 Introduction to Neural Networks and Deep Learning..............................................449 Dimitrios Xanthidis, Muhammad Fahim, and Han-I Wang v vi Contents Chapter 12 Virtual Reality Application Development with Python............................................ 485 Christos Manolas, Ourania K. Xanthidou, and Dimitrios Xanthidis Appendix: Case Studies Solutions............................................................................................... 527 Index............................................................................................................................................... 617 Editors Dimitrios Xanthidis holds a PhD in Information Systems from University College London. For the past 25 years, he has been teaching computer science subjects with a focus on programming and software development, and data structures and databases in various tertiary education institutions. Currently, he is working in Higher Colleges of Technology in Dubai, U.A.E. Dimitrios’ research interests and work revolve around the topics of data science, machine learning/deep ­learning, ­virtual/augmented reality, and emerging technologies. Christos Manolas holds a PhD in Stereoscopic 3D Media (University of York, UK), and degrees and qualifications in Postproduction (MA), Music Technology (MSc), Music Performance, Software Development, and Media Production. Christos’ career includes work as a software developer, musician, audio producer, and educator for over 20 years. His research interests include multimodal (audiovisual) perception, spatial audio, interactive and immersive media (VR/AR/XR), and generally the impact and role of digital technologies on media production. Ourania K. Xanthidou is a PhD researcher at Brunel University, London. She holds an MSc in Computer Science from the University of Malaya, Kuala Lumpur, Malaysia. She has more than 15 years of involvement with the IT industry in the form of supporting IT departments of SMEs and more than 5 years of teaching experience in tertiary education. Ourania’s research interests are in the areas of eHealth, smart health, databases, web application development, and object-oriented programming with a focus on application development for VR/AR/XR. Han-I Wang holds a PhD in Health Economics from the University of York, UK. Han-I has been working as a research fellow for over 10 years, starting at the Epidemiology & Cancer Statistics Group (ECSG) before joining the Mental Health and Addiction Research Group (MHARG) at the University of York, UK. Her area of expertise spans across cost analysis, health outcome research, and decision modeling using complex patient-level data, and her main research interests are related with the exploration of different decision-modeling techniques and their application to predict healthcare expenditure, patients’ quality of life, and life expectancy. vii Contributors Tareq Alhousary Business Information Systems University of Salford Manchester, United Kingdom and Department of Management Information Systems Dhofar University, College of Commerce and Business Administration Salalah, Oman Muath Alrammal Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates and LACL (Laboratoire d’Algorithmique, Complexité et Logique) University Paris-Est (UPEC) Créteil, France Hanêne Ben-Abdallah Computer and Information Science University of Pennsylvania Philadelphia, PA Ameur Bensefia Department of Genie Informatique University of Rouen Normandy Laboratoire d’Informatique de Traitement de l’Information et des Systèmes (LITIS) Rouen, France and Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Ghazala Bilquise Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Muhammad Fahim Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Thaeer Kobbaey Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Christos Manolas Department of Theatre, Film, Television and Interactive Media The University of York York, United Kingdom and Department of Media Works Ravensbourne University London London, United Kingdom Munir Naveed Department of Computer Science University of Huddersfield Huddersfield, United Kingdom and Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Sujni Paul Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Han-I Wang Department of Health Sciences The University of York York, United Kingdom ix x Dimitrios Xanthidis School of Library, Archives, and Information Sciences University College London London, United Kingdom and Department of Computer and Information Sciences Higher Colleges of Technology Abu Dhabi, United Arab Emirates Contributors Ourania K. Xanthidou Department of Computer Science Brunel University of London Uxbridge, United Kingdom 1 Introduction Dimitrios Xanthidis University College London Higher Colleges of Technology Christos Manolas The University of York Ravensbourne University London Ourania K. Xanthidou Brunel University of London Han-I Wang The University of York CONTENTS 1.1 Introduction...............................................................................................................................1 1.2 Audience....................................................................................................................................2 1.3 Getting Started with Jupyter Notebook.....................................................................................2 1.4 Creating Standalone, Executable Files......................................................................................4 1.5 Structure of this Book................................................................................................................6 References...........................................................................................................................................6 1.1 INTRODUCTION Undoubtedly, at the time of writing, Python is among the most popular computer programming languages. Alongside other common languages like C# and Java, it belongs to the broader family of C/C++-based languages, from which it naturally borrows a large number of packages and modules. While Python is the youngest member in this family, it is widely adopted as the platform of choice by academic and corporate institutions and organizations on a global scale. As a C++-based language, Python follows the structured programming paradigm, and the associated programming principles of sequence, selection, and repetition, as well as the concepts of functions and arrays (as lists). A thorough presentation of such concepts is both beyond the scope of this book and possibly unnecessary, as this was the subject of the seminal works of computer science giants like Knuth, Stroustrup, and Aho (Aho Alfred et al., 1983; Knuth, 1997; Stroustrup, 2013). Readers interested in an in-depth understanding of these concepts on a theoretical basis are encouraged to refer to such works that form the backbone of modern programming. As an ObjectOriented Programming (OOP) platform, it provides all the facilities and tools to support the OOP paradigm. Unlike its counterparts (i.e., C++, C#, and Java), Python does not provide a streamlined, centralized IDE to support GUI programming, but it does offer a significant number of related modules that cover most, if not all, of the various GUI requirements one may encounter. It includes a number of modules that allow for the implementation of database programming, web development, DOI: 10.1201/9781003139010-1 1 2 Handbook of Computer Programming with Python and mobile development projects, as well as platforms, modules, and methods that can be used for machine and deep learning applications and even virtual and augmented reality project development. Nevertheless, one of the main reasons that made Python such a popular option among computer science professionals and academics is the wealth of modules and packages it offers for data science tasks, including a large variety of libraries and tools specifically designed for data analytics, data visualization, and statistical analysis tasks. Arguably, there is an abundance of online resources and tutorials and printed books that address most of the aforementioned topics in great detail. On the technical side, such resources may seem too complicated for someone who is currently studying the subject or approaches it without prior programming knowledge and experience. In other cases, resources may be structured more like reference books that may focus on particular topics without covering the introductory parts of computing with Python that some readers may find useful. This book aims at covering this gap by exploring how Python can be used to address various computational tasks of introductory to intermediate difficulty level, while also providing a basic theoretical introduction to the underlying concepts. 1.2 AUDIENCE This book focuses on students of computer science, information systems, and information technology, or anyone who is involved in computer programming, data analytics, HCI-GUI, and related disciplines, at an entry-to-intermediate level. This book aims to provide a hands-on experience based on the underlying topics, and assist students and faculty members in developing their algorithmic thought process and programs for given computational problems. It can also be used by professionals who possess the necessary theoretical and computational thinking background but are presently making their transition to Python. Considering the above, this book includes a wealth of examples and the associated Python code and output, presented in a context that also discusses the underlying concepts and their applications. It also provides key concepts in the form of quick access observations, so that the reader can skim through the various topics. Observations can be used as a reference and navigation tool, or as reminders for points for discussion and in-class presentation in the case of using this book as a teaching resource. Chapters are also accompanied by related exercises and case studies that can be used in this context, and their solutions are provided in the Appendix at the end of this book. 1.3 GETTING STARTED WITH JUPYTER NOTEBOOK Ample information and support are available through online community channels and the ­official documentation and guides in terms of installing and running Python programming environments. Nevertheless, this section provides a brief and straightforward guide on how to use Anaconda Navigator and Jupyter Notebook in order to interpret and execute Python code, as the majority of examples in this book have been implemented and tested using this particular configuration. Once Anaconda Navigator is launched, a number of different editors and environments are ­presented in the home page (Figure 1.1). Launching the Jupyter Notebook (i.e., clicking the Launch button) initiates a web interface based on the file directory of the local machine (Figure 1.1). To create a new Python program, the user can select New from the top right corner and the Python 3 notebook menu option (Figure 1.2). This action will launch a new Python file under Jupyter with a default name. This can be changed by clicking on the file name. 3 Introduction FIGURE 1.1 Anaconda IDE homepage. FIGURE 1.2 Create a new Python file in Jupyter Notebook. Jupyter editor is organized in cells. The user can add each line of code to a separate cell or add multiple lines to the same cell (Figure 1.3). The Run button in the main toolbar is used to execute the code in the selected cell. If the code is free from errors, the interpreter moves to the next cell; otherwise, an error message is displayed immediately after the cell where the error occurred (Figure 1.4). 4 Handbook of Computer Programming with Python FIGURE 1.3 Jupyter’s editor. FIGURE 1.4 Run a Python program on Jupyter. 1.4 CREATING STANDALONE, EXECUTABLE FILES With the exception of Chapter 12: Virtual Reality Application Development with Python that discusses applications that demand specific and highly specialized development platforms, the Python scripts and examples presented in this book were implemented and tested natively in the Anaconda Jupyter environment. In this context, the process of developing and testing software solutions is a rather straightforward and intuitive process. However, when it comes to the actual deployment of applications in more realistic scenarios, things become slightly more complex. This is mainly due to the fact that the Python code one develops is usually dependent on a number of external libraries, packages, and files of various formats. These are automatically provided in the background when working within the Anaconda environment, but this is not necessarily the case when scripts are exported as standalone files. The required libraries and resources may be located on numerous different places within the file structures of the computer and/or network systems used during development. In the context of application deployment, references to such external files and objects are generally referred to as application dependencies. Dependencies form a crucial and essential part of the developed application, and the underlying files must be provided alongside the final deliverable program (e.g., a standalone, executable application), as their absence will prevent the program from Introduction 5 running correctly in machines lacking the necessary libraries and file structures. Fortunately, the latter are automatically selected and packaged by special routines and processes during the deployment phase of the development cycle. This way, once the final deployment package is created, one can run the application on other computers, irrespectively of whether these include the necessary files and libraries or not. Many SDKs and programming environments provide built-in routines (i.e., wizards) for the generation of the deployment packages and standalone executable files. In the case of Anaconda Jupyter, although there is no automated, built-in wizard for such tasks, one can resort to a number of external helper applications. A detailed, step-by-step tutorial of this process is beyond the scope of this book. However, some basic, introductory examples are provided below, in order to assist readers with minimal or no previous experience with command line environments in familiarizing with such tasks. At the moment of writing, two of the most widely used third-party applications for generating standalone executable files from Python scripts are PyInstaller for Windows (PyInstaller Development Team, 2019) and Py2app for Windows/Mac OS (Oussoren & Ippolito, 2010). Both applications can handle dependencies and linking, and the decision on which one should be used comes down to the operating system at hand and personal preference. In broad terms, the steps one needs to follow when creating standalone executable files are summarized below: • Step 1: Irrespectively of what program and procedure one choses to generate the standalone application, the original script(s) must be firstly exported from Anaconda Jupyter, as one or more Python.py file(s). This will be the file(s) used as input to the deployment application. • Step 2: Another essential task is to ensure that the application is installed on the system. This can be achieved in a number of ways that are detailed in the numerous a­ ssociated online guides and tutorials (Apple Inc, 2021; Cortesi, 2021; Microsoft, 2021a, 2021b; Oussoren & Ippolito, 2010; PyInstaller Development Team, 2019). For the purposes of this example, one possibility is to install PyInstaller using a Command Prompt/PowerShell window (Microsoft, 2021a, b) using the following command: • pip install pyinstaller • Step 3a (Windows): Once PyInstaller is installed, and given that the associated files and the command line environment are set up appropriately, the generation of the standalone file could be as simple as the following command: • pyinstaller yourprogram.py Alternatively, the user can refer to the PyInstaller official documentation, in order to execute more specific and complex commands with appropriate parameters and flags, as necessary. For instance, using the same command with the --onefile flag would force the generated executable file to be packaged in a single file rather than in a folder structure containing multiple files: • pyinstaller --onefile yourprogram.py • Step 3b (Mac OS): The same basic idea also applies when using the Py2app (Oussoren & Ippolito, 2010), although the procedure and commands may be slightly different. For instance, when used on a Mac OS system, Py2app generates application bundles instead of an executable file. As an example, users of Mac OS systems can use the Terminal window (Apple Inc, 2021) to firstly install Py2app: • pip install -U py2app Py2app can be then used to create a setup file: • py2applet --make-setup yourprogram.py Finally, the setup file can be used to generate the standalone application bundle: • python setup.py py2app In both cases, the standalone application is usually placed at a specified directory structure according to the settings and parameters used. 6 Handbook of Computer Programming with Python In order to be able to successfully execute the example commands provided here, the reader may have to execute a number of other necessary commands and set up tasks and navigate to the correct ­directories using the command line environment. Detailed information on how to use both PyInstaller and Py2app can be found on the official documentation pages (Cortesi, 2021; Oussoren & Ippolito, 2010) and on the large variety of associated online resources. It must be noted that the third-party applications mentioned here are just two of the tools one may choose to use for creating standalone executable files based on Python scripts, and they are not the only way of dealing with such tasks. The development and deployment processes vary depending on the characteristics of the developed application, the chosen development platform, and the targeted operating system(s). As most chapters of this book utilize the Anaconda Jupyter environment, most of the examples and programming scripts can be developed and tested within the development platform (or even other platforms) without the need to generate standalone executable files. However, the information provided here can be used as a general guide for the deployment procedure and the necessary conversions, should the reader choose to create standalone versions of the various examples. 1.5 STRUCTURE OF THIS BOOK This book is divided into three main parts, based on the knowledge field, character, and objective of the presented topics. The first part (Chapters 2–5) covers classic computer programming topics like introduction to programming, Object-Oriented Programming, Graphical User Interface (GUI) programming, and application development. It is meant to assist readers with little or no prior programming experience to start learning computer programming using Python and the Anaconda Jupyter platform. The related concepts, techniques, and algorithms are discussed and explained with examples of the necessary code and the expected output. The second part (Chapters 6–9) covers concepts related to data structures and organization, the algorithms used to manipulate these structures, database programming (SQL), data analysis and visualization, and the basics of statistical analysis. These concepts cover most of the topics, algorithms, and applications that make up what is collectively referred to as data science. The structure of this part of this book provides a potential entry point for readers with no prior knowledge in data science, as well as a reference point for those who would like to focus on the implementation of specific data science tasks using Python. The third part (Chapters 10–12) covers machine and deep learning concepts, while also providing a brief introduction to using Python in contexts not traditionally linked with the language like virtual reality (VR) application development. This part introduces concepts that are potentially more advanced from a contextual perspective, but not necessarily more challenging when it comes to their implementation using Python. For instance, while a deeper understanding of the principles and algorithms behind machine and deep learning may be out of scope for many of the readers of this book, the development of applications using the various related modules and methods provided by Python may be something that is of interest. Similarly, while video game and VR/AR application development is certainly a topic that falls outside the scope of a Python textbook in the strict sense, a basic understanding of how such applications could be developed using the Python language may provide a useful insight to the most adventurous of the readers. All the scripts and case studies presented in this book, as well as the related data and files necessary for their execution, are included as supplementary material in Appendix A. REFERENCES Aho, A.V., Hopcroft, J.E., Ullman, J.D., Aho, A.V., Bracht, G.H., Hopkin, K.D., Stanley, J.C., Jean-Pierre, B., Samler, B.A., & Peter, B.A. (1983). Data Structures and Algorithms. USA: Addison-Wesley. Introduction 7 Apple Inc. (2021). Terminal User Guide. Support.Apple.Com. https://support.apple.com/en-gb/guide/terminal/ welcome/mac/. Cortesi, D. (2021). PyInstaller Documentation. PyInstaller 4.5. https://pyinstaller.readthedocs.io/_/downloads/ en/stable/pdf/. Knuth, D.E. (1997). The Art of Computer Programming (Vol. 3). Pearson Education. Microsoft. (2021a). Installing Windows PowerShell. https://docs.microsoft.com/en-us/powershell/scripting/ windows-powershell/install/installing-windows-powershell?view=powershell–7.1. Microsoft. (2021b). Windows Command Line. https://www.microsoft.com/en-gb/p/windows-command-line/9 nblggh4xtkq?activetab=pivot:overviewtab. Oussoren, R., & Ippolito, B. (2010). py2app – Create Standalone Mac OS X Applications with Python. https:// py2app.readthedocs.io/en/latest/. PyInstaller Development Team. (2019). PyInstaller Quickstart. https://www.pyinstaller.org/. Stroustrup, B. (2013). The C++ Programming Language. India: Pearson Education. Introduction Aho, A.V. , Hopcroft, J.E. , Ullman, J.D. , Aho, A.V. , Bracht, G.H. , Hopkin, K.D. , Stanley, J.C. , Jean-Pierre, B. , Samler, B.A. , & Peter, B.A. (1983). Data Structures and Algorithms. USA: Addison-Wesley. Apple Inc . (2021). Terminal User Guide. Support.Apple.Com. https://support.apple.com/engb/guide/terminal/welcome/mac/. Cortesi, D. (2021). PyInstaller Documentation. PyInstaller 4.5. https://pyinstaller.readthedocs.io/_/downloads/en/stable/pdf/. Knuth, D.E. (1997). The Art of Computer Programming (Vol. 3). Pearson Education. Microsoft . (2021a). Installing Windows PowerShell. https://docs.microsoft.com/enus/powershell/scripting/windows-powershell/install/installing-windows-powershell?view=powershell–7.1. Microsoft . (2021b). Windows Command Line. https://www.microsoft.com/en-gb/p/windows-commandline/9nblggh4xtkq?activetab=pivot:overviewtab. Oussoren, R. , & Ippolito, B. (2010). py2app – Create Standalone Mac OS X Applications with Python. https://py2app.readthedocs.io/en/latest/. PyInstaller Development Team . (2019). PyInstaller Quickstart. https://www.pyinstaller.org/. Stroustrup, B. (2013). The C++ Programming Language. India: Pearson Education. Introduction to Programming with Python Dijkstra, E. W. , Dijkstra, E. W. , Dijkstra, E. W. , & Dijkstra, E. W. (1976). A Discipline of Programming (Vol. 613924118). New Jersey: Prentice-Hall Englewood Cliffs. Jaiswal, S. (2017). Python Data Structures Tutorial. DataCamp. https://www.datacamp.com/community/tutorials/data-structures-python. Knuth, D. E. (1997). The Art of Computer Programming (Vol. 3). Pearson Education. Stroustrup, B. (2013). The C++ Programming Language. India: Pearson Education. Data Structures and Algorithms with Python Dijkstra, E. W. , Dijkstra, E. W. , Dijkstra, E. W. , & Dijkstra, E. W. (1976). A Discipline of Programming (Vol. 613924118). Prentice-Hall: Englewood Cliffs. Hoare, C. A. R. (1961). Algorithm 64: Quicksort. Communications of the ACM, 4(7), 321. Knuth, D. E. (1997). The Art of Computer Programming (Vol. 3). Pearson Education. Stroustrup, B. (2013). The C++ Programming Language. India: Pearson Education. Database Programming with Python APACHE . (2021). APACHE Software Foundation. https://apache.org. Elmasri, R. , & Navathe, S. (2017). Fundamentals of Database Systems (Vol. 7). Pearson, Hoboken, NJ. MAMP . (2021). Download MAMP & MAMP PRO. https://www.mamp.info/en/downloads. MySQL . (2021). Oracle Corporation. https://www.mysql.com. Oracle . (2021a). MySQL Documentation. https://dev.mysql.com/doc. Oracle . (2021b). Oracle.com. Data Analytics and Data Visualization with Python American Diabetes Association . (2018). Economic costs of diabetes in the US in 2017. Diabetes Care, 41(5), 917–928. https://doi.org/https://doi.org/10.2337/dci18-0007. Freedman, D. , Pisani, R. , & Purves, R. (1998). Statistics (3rd ed.). New York: WW Norton & Company. McEwen, L. N. , & Herman, W. H. (2018). Health care utilization and costs of diabetes. Diabetes in America (3rd ed.), 40-1–40-78. NIDDK. Pandas . (2021a). pandas.DataFrame.boxplot. Version: 1.2.5. https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.boxplot.html. Pandas . (2021b). pandas.DataFrame.plot.pie. https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.pie.html. Statistics — Mathematical statistics functions . (2021). Python. https://docs.python.org/3/library/statistics.html. Statistical Analysis with Python Anaconda Inc . (2020). Anaconda Distribution Starter Guide. https://docs.anaconda.com/_downloads/9ee215ff15fde24bf01791d719084950/Anaconda-Starter-Guide.pdf. De Winter, J. F. C. , & Dodou, D. (2010). Five-point likert items: t test versus Mann-Whitney-Wilcoxon (Addendum added October 2012). Practical Assessment, Research, and Evaluation, 15(1), 11. Diabetes UK . (2019). Number of People with Diabetes Reaches 4.7 Million. https://www.diabetes.org.uk/about_us/news/new-stats-people-living-with-diabetes. Fagerland, M. W. , & Sandvik, L. (2009). The Wilcoxon–Mann–Whitney test under scrutiny. Statistics in Medicine, 28(10), 1487–1497. Kim, H.-Y. (2017). Statistical notes for clinical researchers: Chi-squared test and Fisher’s exact test. Restorative Dentistry & Endodontics, 42(2), 152–155. Koehrsen, W. (2018). Histograms and Density Plots in Python. Towardsdatascience.com, https://towardsdatascience.com/histograms-and …. https://towardsdatascience.com/histograms-and-densityplots-in-python-f6bda88f5ac0. McDonald, J. H. (2014). Correlation and linear regression. In Handbook of Biological Statistics (3rd ed.). Baltimore, MD: Sparky House Publishing. https://www.biostathandbook.com/HandbookBioStatThird.pdf. McKinney, W. , & Team, P. D. (2020). Pandas-Powerful python data analysis toolkit. Pandas—Powerful Python Data Analysis Toolkit, 1625. https://pandas.pydata.org/docs/pandas.pdf. McLntire, G. , Martin, B. , & Washington, L. (2019). Python Pandas Tutorial: A Complete Introduction for Beginners. Learn Data Science-Tutorials, Books, Courses, and More. https://www.learndatasci.com/tutorials/python-pandas-tutorial-complete-introduction-for-beginners/. Minitab . (2015). Choosing between a nonparametric test and a parametric test. State College: The Minitab Blog. https://blog.minitab.com/blog/adventures-in-statistics-2/choosing-between-a-nonparametric-test-and-aparametric-test. Pandas Development Team . (2020). pandas.read_excel. https://pandas.pydata.org/pandasdocs/stable/reference/api/pandas.read_excel.html. Scikit-posthocs . (2020). The Scikit Posthocs Test. https://scikit-posthocs.readthedocs.io/en/latest/. SciPy Community . (2020). scipy.stats.ttest_ind. https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html. Sharma, A. (2019). Importing Data into Pandas. https://www.datacamp.com/community/tutorials/importing-datainto-pandas#::targetText=ToreadanHTMLfile, to read the HTML document. Tavares, E. (2017). Counting and Basic Frequency Plots. https://etav.github.io/python/count_basic_freq_plot.html. WorldCoinIndex . (2021). WorldCoinIndex. https://www.worldcoinindex.com/. Machine Learning with Python Andrade, E. de O. , Viterbo, J. , Vasconcelos, C. N. , Guérin, J. , & Bernardini, F. C. (2019). A model based on lstm neural networks to identify five different types of malware. Procedia Computer Science, 159, 182–191. Keshari, K. (2021). Top 10 Applications of Machine Learning: Machine Learning Applications in Daily Life. https://www.edureka.co/blog/machine-learning-applications/. Kwon, B. J. , Mondal, J. , Jang, J. , Bilge, L. , & Dumitraş, T. (2015). The dropper effect: Insights into malware distribution with downloader graph analytics. Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (1118–1129), Denver, Colorado. Mitchell, T. M. (1997). Machine Learning (1st ed.). New York: McGraw-Hill. Mola, F. (1998). Classification and Regression Trees Software and New Developments BT – Advances in Data Science and Classification ( A. Rizzi , M. Vichi , & H.-H. Bock eds.; pp. 311–318). Berlin Heidelberg: Springer. Naveed, M. , & Alrammal, M. (2017). Reinforcement learning model for classification of Youtube movie. Journal of Engineering and Applied Science, 12(9), 1–7. Naveed, M. , Alrammal, M. , & Bensefia, A. (2020). HGM: A Novel Monte-Carlo simulations based model for malware detection. IOP Conference Series: Materials Science and Engineering, 946(1), 12003. https://doi.org/10.1088/1757-899x/946/1/012003. Quinlan, J. R. (1986). Induction of decision trees. Machine Learning, 1(1), 81–106. https://doi.org/10.1007/BF00116251. Raghupathi, K. (2018). 10 Interesting Use Cases for the K-Means Algorithm. DZone AI Zone. https://dzone.com/articles/10-interesting-use-cases-for-the-k-means-algorithm. Salzberg, S. L. (1994). C4.5: Programs for machine learning by J. Ross Quinlan. Morgan Kaufmann Publishers, Inc., 1993. Machine Learning, 16(3), 235–240. https://doi.org/10.1007/BF00993309. Sharma, P. (2020). 4 Types of Distance Metrics in Machine Learning. Analytics Vidhya. https://www.analyticsvidhya.com/blog/2020/02/4-types-of-distance-metrics-in-machine-learning/. Introduction to Neural Networks and Deep Learning Hardesty, L. (2017). Explained: Neural Networks – Ballyhooed Artificial-Intelligence Technique Known as “Deep Learning” Revives 70-Year-Old Idea. MIT News Office. https://news.mit.edu/2017/explained-neural-networksdeep-learning–0414. IBM Cloud Education . (2020). Neural Networks. IBM. ibm.https://wwwcom/cloud/learn/neural-networks. Virtual Reality Application Development with Python Ardakani, H. A. , & Bridges, T. J. (2010). Review of the 3-2-1 euler angles: a yaw-pitch-roll sequence. Tech. Rep. Guildford: University of Surrey. Ascher, D. , & Lutz, M. (1999). Learning Python. Sebastopol, CA: O’Reilly. Autodesk . (2020). 3DS Max -3D modelling and rendering software for design visualisation, games and animation. https://www.autodesk.co.uk/products/3ds-max/overview?plc=3DSMAX&term=1YEAR&support=ADVANCED&quantity=1. Blender . (2020). Our mission. https://www.blender.org/about/. Carlson, W. E. (2017). Computer graphics and computer animation: a retrospective overview. Columbus: Ohio State University. Dq, N. (2019). Cartesian coordinates. http://mathinsight.org/cartesian_coordinates. Dunn, F. , & Parberry, I. (2011). 3D Math Primer for Graphics and Game Development. Boca Raton, FL: Taylor and Francis. Epic Games . (2019). What is Unreal Engine 4? https://www.unrealengine.com/en-US/what-is-unreal-engine-4. Glover, J. , & Linowes, J. (2019). Complete Virtual Reality and Augmented Reality Development with Unity: Leverage the Power of Unity and Become a Pro at Creating Mixed Reality Applications. Birmingham: Packt Publishing Ltd. Mendiburu, B. (2012). 3D Movie Making: Stereoscopic Digital Cinema from Script to Screen. New York: Routledge. Microsoft . (2019). Visual studio: best in-class tools for any developer. https://visualstudio.microsoft.com/. Rosen, K. R. (2008). The history of medical simulation. Journal of Critical Care, 23(2), 157–166. Sherman, W. R. , & Craig, A. B. (2018). Understanding Virtual Reality: Interface, Application, and Design. Cambridge, MA: Morgan Kaufmann. Smith, R. (2010). The long history of gaming in military training. Simulation & Gaming, 41(1), 6–19. Unity Technologies . (2019). Unity 3D. https://unity3d.com/unity. WorldViz . (2019). Vizard 6 (64-bit). https://www.worldviz.com/vizard-virtual-reality-software. Zone, R. (2007). Stereoscopic cinema and the origins of 3-D film, 1838–1952. Lexington: University Press of Kentucky.