Ns-3-Manual.Pdf

Total Page:16

File Type:pdf, Size:1020Kb

Ns-3-Manual.Pdf ns-3 Manual Release ns-3-dev ns-3 project Sep 26, 2021 CONTENTS 1 Organization 3 2 Working with git as a user 5 2.1 ns-3’s Git workflow in a nutshell.....................................5 2.2 Setup of a personal repository......................................6 2.3 Add the official ns-3 repository as remote upstream...........................7 2.4 Add your forked repository as remote..................................7 2.5 Keep in sync your repository with latest ns-3-dev updates.......................8 2.6 Start a new branch to do some work...................................8 2.7 Edit and commit the modifications....................................9 2.8 Rebase your branch on top of master.................................. 10 2.9 Pushing your changes to origin..................................... 10 2.10 Submit work for review......................................... 10 2.11 Porting patches from mercurial repositories to git............................ 10 3 Working with git as a maintainer 11 3.1 Pushing your own work......................................... 11 3.2 Review and merge someone else’s work................................. 11 3.3 Making a release............................................. 11 4 Random Variables 17 4.1 Quick Overview............................................. 17 4.2 Background................................................ 17 4.3 Creating random variables........................................ 18 4.4 Seeding and independent replications.................................. 18 4.5 Class RandomVariableStream...................................... 19 4.6 Base class public API.......................................... 20 4.7 Types of RandomVariables........................................ 20 4.8 Semantics of RandomVariableStream objects.............................. 20 4.9 Using other PRNG............................................ 21 4.10 Setting the stream number........................................ 21 4.11 Publishing your results.......................................... 22 4.12 Summary................................................. 22 5 Hash Functions 23 5.1 Basic Usage............................................... 23 5.2 Incremental Hashing........................................... 23 5.3 Using an Alternative Hash Function................................... 24 5.4 Adding New Hash Function Implementations.............................. 24 5.5 Sources for Hash Functions....................................... 24 i 6 Events and Simulator 27 6.1 Event................................................... 27 6.2 Simulator................................................. 27 6.3 Time................................................... 29 6.4 Scheduler................................................. 29 7 Callbacks 31 7.1 Callbacks Motivation........................................... 31 7.2 Callbacks Background.......................................... 32 7.3 Using the Callback API......................................... 35 7.4 Bound Callbacks............................................. 38 7.5 Traced Callbacks............................................. 39 7.6 Callback locations in ns-3........................................ 39 7.7 Implementation details.......................................... 40 8 Object model 41 8.1 Object-oriented behavior......................................... 41 8.2 Object base classes............................................ 41 8.3 Memory management and class Ptr................................... 42 8.4 CreateObject and Create......................................... 42 8.5 Aggregation............................................... 43 8.6 Examples................................................. 43 8.7 Object factories.............................................. 44 8.8 Downcasting............................................... 45 9 Configuration and Attributes 47 9.1 Object Overview............................................. 47 9.2 Attributes................................................. 50 9.3 Implementation Details......................................... 56 9.4 ConfigStore................................................ 60 10 Object names 69 11 Logging 71 11.1 Overview................................................. 71 11.2 How to add logging to your code.................................... 75 11.3 Controlling timestamp precision..................................... 76 12 Tracing 79 12.1 Tracing Motivation............................................ 79 12.2 Overview................................................. 80 12.3 Using the Tracing API.......................................... 83 12.4 Using Trace Helpers........................................... 83 12.5 Tracing implementation details..................................... 95 13 Data Collection 97 13.1 Design.................................................. 97 13.2 Data Collection Helpers......................................... 99 13.3 Probes.................................................. 108 13.4 Collectors................................................. 115 13.5 Aggregators............................................... 115 13.6 Adaptors................................................. 122 13.7 Scope/Limitations............................................ 122 14 Statistical Framework 125 ii 14.1 Goals................................................... 125 14.2 Overview................................................. 125 14.3 To-Do................................................... 126 14.4 Approach................................................. 126 14.5 Example................................................. 127 15 RealTime 135 15.1 Behavior................................................. 135 15.2 Usage................................................... 135 15.3 Implementation.............................................. 136 16 Helpers 137 17 Utilities 139 17.1 Print-introspected-doxygen....................................... 139 17.2 Bench-simulator............................................. 140 18 Making Plots using the Gnuplot Class 143 18.1 Creating Plots Using the Gnuplot Class................................. 143 18.2 An Example Program that Uses the Gnuplot Class........................... 143 18.3 An Example 2-Dimensional Plot..................................... 144 18.4 An Example 2-Dimensional Plot with Error Bars............................ 146 18.5 An Example 3-Dimensional Plot..................................... 147 19 Using Python to Run ns-3 151 19.1 Introduction............................................... 151 19.2 An Example Python Script that Runs ns-3 ................................ 151 19.3 Running Python Scripts......................................... 152 19.4 Caveats.................................................. 153 19.5 Working with Python Bindings..................................... 154 19.6 Historical Information.......................................... 159 20 Tests 161 20.1 Overview................................................. 161 20.2 Background................................................ 161 20.3 Testing framework............................................ 164 20.4 How to write tests............................................ 175 21 Support 179 21.1 Creating a new ns-3 model........................................ 179 21.2 Adding a New Module to ns-3 ...................................... 187 21.3 Creating Documentation......................................... 193 21.4 Enabling Subsets of ns-3 Modules.................................... 202 21.5 Enabling/disabling ns-3 Tests and Examples.............................. 205 21.6 Troubleshooting............................................. 207 Bibliography 209 Index 211 iii iv ns-3 Manual, Release ns-3-dev This is the ns-3 Manual. Primary documentation for the ns-3 project is available in five forms: • ns-3 Doxygen: Documentation of the public APIs of the simulator • Tutorial, Manual (this document), and Model Library for the latest release and development tree • ns-3 wiki This document is written in reStructuredText for Sphinx and is maintained in the doc/manual directory of ns-3’s source code. CONTENTS 1 ns-3 Manual, Release ns-3-dev 2 CONTENTS CHAPTER ONE ORGANIZATION This chapter describes the overall ns-3 software organization and the corresponding organization of this manual. ns-3 is a discrete-event network simulator in which the simulation core and models are implemented in C++. ns-3 is built as a library which may be statically or dynamically linked to a C++ main program that defines the simulation topology and starts the simulator. ns-3 also exports nearly all of its API to Python, allowing Python programs to import an “ns3” module in much the same way as the ns-3 library is linked by executables in C++. Fig. 1: Software organization of ns-3 The source code for ns-3 is mostly organized in the src directory and can be described by the diagram in Software organization of ns-3. We will work our way from the bottom up; in general, modules only have dependencies on modules beneath them in the figure. We first describe the core of the simulator; those components that are common across all protocol, hardware, and environmental models. The simulation core is implemented in src/core. Packets are fundamental objects in a network simulator and are implemented in src/network. These two simulation modules by themselves are intended to comprise a generic simulation core that can be used by different kinds of networks, not just Internet-based networks. The above modules of ns-3 are independent of
Recommended publications
  • Wireshark User's Guide
    Wireshark User’s Guide For Wireshark 2.1 Ulf Lamping <ulf.lamping[AT]web.de> Richard Sharpe, NS Computer Software and Services P/L <rsharpe[AT]ns.aus.com> Ed Warnicke <hagbard[AT]physics.rutgers.edu> Wireshark User’s Guide: For Wireshark 2.1 by Ulf Lamping, Richard Sharpe, and Ed Warnicke Copyright © 2004-2014 Ulf Lamping, Richard Sharpe, Ed Warnicke Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. All logos and trademarks in this document are property of their respective owner. Preface ...................................................................................................................... viii 1. Foreword ....................................................................................................... viii 2. Who should read this document? ....................................................................... viii 3. Acknowledgements .......................................................................................... viii 4. About this document ......................................................................................... ix 5. Where to get the latest copy of this document? ....................................................... ix 6. Providing feedback about this document ............................................................... ix 1. Introduction .............................................................................................................
    [Show full text]
  • Virtualization of the RIOT Operating System
    Computer Systems and Telematics — Distributed, Embedded Systems Diploma Thesis Virtualization of the RIOT Operating System Ludwig Ortmann Matr. 3914103 Supervisor: Dr. Emmanuel Baccelli Assisting Supervisor: Prof. Dr.-Ing. Jochen Schiller Institute of Computer Science, Freie Universität Berlin, Germany March 2, 2015 iii I hereby declare to have written this thesis on my own. I have used no other literature and resources than the ones referenced. All text passages that are literal or logical copies from other publications have been marked accordingly. All figures and pictures have been created by me or their sources are referenced accordingly. This thesis has not been submitted in the same or a similar version to any other examination board. Berlin, March 2, 2015 (Ludwig Ortmann) Abstract Abstract Software developers in the growing field of the Internet of Things face many hurdles which arise from the limitations of embedded systems and wireless networking. The employment of hardware and network virtualization promises to allow developers to test and debug hard- ware independent code without being affected by these limitations. This thesis presents RIOT native, a hardware and network emulation implementation for the RIOT operating system, which enables developers to compile and run RIOT as a process in their host operat- ing system. Running the operating system as a process allows for the use of debugging tools and techniques only available on desktop computers otherwise, the integration of common network analysis tools, and the emulation of arbitrary network topologies. By enabling the use of these tools and techniques for the development of software for distributed embedded systems, the hurdles they impose on the development process are significantly reduced.
    [Show full text]
  • NS-3 Advanced Tutorial: Visualization and Data Collection
    NS-3 Advanced Tutorial: Visualization and Data Collection Tom Henderson (University of Washington and Boeing Research & Technology) L. Felipe Perrone (Bucknell University) March 2013 NS-3 Consortium Meeting 1 March 2013 Outline Getting visualization and raw data from ns-3 • Tracing and packet traces • Gnuplot and Matplotlib • Flow Monitor • PyViz • NetAnim • Statistics • Data Collection Framework 2 NS-3 Consortium Meeting March 2013 Tracing requirements • Tracing is a structured form of simulation output • Example (from ns-2): + 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610 - 1.84375 0 2 cbr 210 ------- 0 0.0 3.1 225 610 r 1.84471 2 1 cbr 210 ------- 1 3.0 1.0 195 600 r 1.84566 2 0 ack 40 ------- 2 3.2 0.1 82 602 + 1.84566 0 2 tcp 1000 ------- 2 0.1 3.2 102 611 Problem: Tracing needs vary widely – would like to change tracing output without editing the core – would like to support multiple outputs 3 NS-3 Consortium Meeting March 2013 Tracing in ns-3 • ns-3 configures multiple 'TraceSource' objects (TracedValue, TracedCallback) • Multiple types of 'TraceSink' objects can be hooked to these sources • A special configuration namespace helps to manage access to trace sources TracedValue Config::Connect ("/path/to/traced/value", callback1); TraceSource Config::Connect ("/path/to/trace/source", callback2); TraceSource unattached NS-3 Consortium Meeting March 2013 NetDevice trace hooks • Example: CsmaNetDevice NetDevice:: CsmaNetDevice::Send () ReceiveCallback MacTx MacRx MacDrop queue Sniffer PromiscSniffer MacTxBackoff PhyTxBegin PhyRxEnd
    [Show full text]
  • Automated Multi-Platform OS Testing with External Reference Devices
    1 PHiLIP on the HiL: Automated Multi-platform OS Testing with External Reference Devices KEVIN WEISS, Hamburg University of Applied Sciences, Germany MICHEL ROTTLEUTHNER, Hamburg University of Applied Sciences, Germany THOMAS C. SCHMIDT, Hamburg University of Applied Sciences, Germany MATTHIAS WÄHLISCH, Freie Universität Berlin, Germany Developing an operating system (OS) for low-end embedded devices requires continuous adaptation to new hardware architectures and components, while serviceability of features needs to be assured for each individual platform under tight resource constraints. It is challenging to design a versatile and accurate heterogeneous test environment that is agile enough to cover a continuous evolution of the code base and platforms. This mission is even more challenging when organized in an agile open-source community process with many contributors such as for the RIOT OS. Hardware in the Loop (HiL) testing and Continuous Integration (CI) are automatable approaches to verify functionality, prevent regressions, and improve the overall quality at development speed in large community projects. In this paper, we present PHiLIP (Primitive Hardware in the Loop Integration Product), an open-source external reference device together with tools that validate the system software while it controls hardware and interprets physical signals. Instead of focusing on a specific test setting, PHiLIP takes the approach ofa tool-assisted agile HiL test process, designed for continuous evolution and deployment cycles. We explain its design, describe how it supports HiL tests, evaluate performance metrics, and report on practical experiences of employing PHiLIP in an automated CI test infrastructure. Our initial deployment comprises 22 unique platforms, each of which executes 98 peripheral tests every night.
    [Show full text]
  • Appendix a a Quick Introduction to Python
    Appendix A A Quick Introduction to Python A.1 General Information about the Language Python is an interpreted programming language which we can use both: interac- tively, by putting commands and getting immediate results, and in a batch mode, by processing the whole program stored in a text file. An open-source implementation of the Python programming language1 with its documentation can be downloaded from ironpython.net. It is common to use py as the file name extension for Python source files. To start an interactive session we type ipy in the command line console (please notice that so as to use some modules one is obligated to invoke IronPython with the -X:Frames parameter), whereas to run a program stored in a file name.py we type ipy name.py. Using Python, programmers are allowed to follow procedural as well as object- oriented programming language paradigms. The structure of a typical program is almost the same as in most programming languages: loading necessary modules (by means of the instruction import or from), the definition of procedures, functions, classes, and the main computational part. We will not present this in a formal way, because in Python we have broad discretion over the program framework; for exam- ple, instructions can be put between subroutines, and module import—in the body of a function. An interpreter executes the code of a program from the top of a file downward to the last line. It is also worth to emphasize the following features that distinguish Python in the realm of programming languages: • Dynamic type-checking: the type of a variable can not be explicitly shown.
    [Show full text]
  • A Simulation Framework for Modeling the Behaviour of Iot and Edge Computing Environments
    1 IoTSim-Edge: A Simulation Framework for Modeling the Behaviour of IoT and Edge Computing Environments Devki Nandan Jha∗, Khaled Alwasel∗, Areeb Alshoshan∗, Xianghua Huang∗, Ranesh Kumar Naha†, Sudheer Kumar Battula†, Saurabh Garg†, Deepak Puthal∗, Philip James∗, Albert Zomaya‡, § Schahram Dustdar , Rajiv Ranjan∗ ∗Newcastle University, United Kingdom. † University of Tasmania, Australia. ‡The University of Sydney, Australia. §TU Wien, Austria. Abstract— With the proliferation of Internet of Things (IoT) and edge computing paradigms, billions of IoT devices are being networked to support data-driven and real-time decision making across numerous application domains including smart homes, smart transport, and smart buildings. These ubiquitously distributed IoT devices send the raw data to their respective edge device (e.g. IoT gateways) or the cloud directly. The wide spectrum of possible application use cases make the design and networking of IoT and edge computing layers a very tedious process due to the: (i) complexity and heterogeneity of end-point networks (e.g. wifi, 4G, Bluetooth); (ii) heterogeneity of edge and IoT hardware resources and software stack; (iv) mobility of IoT devices; and (iii) the complex interplay between the IoT and edge layers. Unlike cloud computing, where researchers and developers seeking to test capacity planning, resource selection, network configuration, computation placement and security management strategies had access to public cloud infrastructure (e.g. Amazon and Azure), establishing an IoT and edge computing testbed which offers a high degree of verisimilitude is not only complex, costly and resource intensive but also time-intensive. Moreover, testing in real IoT and edge computing environments is not feasible due to the high cost and diverse domain knowledge required in order to reason about their diversity, scalability and usability.
    [Show full text]
  • A Unix Primer
    A UNIX PRIMER David A. Clarke Department of Astronomy and Physics Saint Mary’s University Halifax, NS, Canada September, 2002 Revised December, 2005 i TABLE OF CONTENTS I Overview . 1 II History . 4 III The Basics . 5 3.1 Your account . 5 3.2 Script files . 5 3.3 Directory trees . 6 3.4 Listing files (the ls command) and the Unix prompt . 7 3.5 The “Man” pages . 8 IV Common Unix Commands . 9 4.1 passwd ...............................9 4.2 mkdir <directory name> .......................9 4.3 rmdir <directory name> .......................9 4.4 ln -s <disc> <link> .........................9 4.5 rm <file or link> ..........................9 4.6 Creating text files . 10 4.7 File names . 10 4.8 pwd ................................ 10 4.9 cd <directory name> ........................ 10 4.10 mv <origin file> <target file> . 11 4.11 cp <origin file> <target file> . 11 4.12 lp -d <printer> <file name> ................... 11 4.13 enscript -d <printer> <file name> . 12 4.14 chmod ............................... 12 4.15 gnuplot .............................. 13 4.16 logout .............................. 14 V Unix Practise Session . 15 5.1 Accessing the A&P Unix environment . 15 5.2 The Common Desktop Environment (CDE) . 15 5.3 Practise session on Unix, including GNUPLOT . 16 5.4 Logging off, and a warning... ..................... 20 ii A UNIX PRIMER I OVERVIEW As an instructor teaching second and third-year physics students, teaching computing pro- gramming poses a unique challenge. While some of you may already be sophisticated com- puter programmers (and quite possibly much more sophisticated than your instructor!), others of you may be blown away by the idea that the keyboard can be used for something other than entering your ID and password, and composing text for e-mail and assignments.
    [Show full text]
  • Ns-3 Tutorial Release Ns-3.29
    ns-3 Tutorial Release ns-3.29 ns-3 project Jan 08, 2019 CONTENTS 1 Introduction 3 1.1 About ns-3................................................3 1.2 For ns-2 Users..............................................4 1.3 Contributing...............................................4 1.4 Tutorial Organization...........................................5 2 Resources 7 2.1 The Web.................................................7 2.2 Git....................................................7 2.3 Waf....................................................7 2.4 Development Environment........................................8 2.5 Socket Programming...........................................8 3 Getting Started 9 3.1 Overview.................................................9 3.2 Prerequisites...............................................9 3.3 Downloading ns-3 using Git....................................... 10 3.4 Building ns-3............................................... 13 3.5 Testing ns-3............................................... 21 3.6 Running a Script............................................. 22 4 Conceptual Overview 25 4.1 Key Abstractions............................................. 25 4.2 A First ns-3 Script............................................ 27 4.3 Ns-3 Source Code............................................ 36 5 Tweaking 39 5.1 Using the Logging Module........................................ 39 5.2 Using Command Line Arguments.................................... 44 5.3 Using the Tracing System.......................................
    [Show full text]
  • Deploying RIOT Operating System on a Reconfigurable Internet of Things End-Device
    Ângelo André Oliveira Ribeiro Deploying RIOT Operating System on a Reconfigurable Internet of Things End-device Guimarães, Outubro de 2017 Ângelo André Oliveira Ribeiro Deploying RIOT Operating System on a Reconfigurable Internet of Things End-device Dissertação de Mestrado Mestrado Integrado em Engenharia Eletrónica Industrial e Computadores Trabalho efetuado sob a orientação do Professor Doutor Tiago Gomes Guimarães, Outubro de 2017 Acknowledgments First of all, I express my gratitude to the best advisor Dr. Tiago Gomes, for his friendship, patience, priceless motivation and for the huge transmission of knowledge in such an adventure through IoT. I also wish to express my gratitude to the most challenging, motivational and inspiring professors Dr. Adriano Tavares and Dr. Jorge Cabral that were fundamental in my development of knowledge in the embedded systems field. To all the companions in this journey Hugo Araujo, Ailton Lopes, Sérgio Pereira, Nuno Silva, José Silva, Pedro Machado, Pedro Ribeiro, Francisco Petrucci and Ricardo Roriz I express my deepest gratitude for all the friendship, craziness and company on those long days and nights of work. I present also my gratitude to Cristiano Rodrigues and Ivo Marques for the collaboration and help in the development of the XIoT. A special thank you to Guilherme Raimundo, Barbara Rodrigues, João Torre and Tiago Ribeiro. To my family, specially to my mother, for all the support during these course, for never let me give-up, for making the impossible possible, and for sure, if I wright this words is thanks to you. Last but not least to my grandmother for such an example of perseverance and love.
    [Show full text]
  • Ns-3 Direct Code Execution (DCE) Manual Release 1.11
    ns-3 Direct Code Execution (DCE) Manual Release 1.11 Direct Code Execution project Sep 08, 2021 CONTENTS 1 Introduction 3 2 Quick Start 5 3 User’s Guide 11 4 Developer’s Guide 45 5 How It Works 61 6 Subprojects of DCE 69 7 About 71 i ii ns-3 Direct Code Execution (DCE) Manual, Release 1.11 This is the manual of Direct Code Execution (DCE). • Doxygen: Documentation of the public APIs of the DCE • Manual (this document) for the latest release and development tree This document is written in reStructuredText for Sphinx and is maintained in the doc/ directory of ns-3-dce’s source code. CONTENTS 1 ns-3 Direct Code Execution (DCE) Manual, Release 1.11 2 CONTENTS CHAPTER ONE INTRODUCTION 1.1 Overview Direct Code Execution (DCE) is a module for ns-3 that provides facilities to execute, within ns-3, existing implemen- tations of userspace and kernelspace network protocols or applications without source code changes. For example instead of using the pseudo application provided by ns-3 V4PingHelper you can use the true ping. If you wish to cite DCE in your academic work, please reference this paper. 1.2 Maintainers DCE is maintained by Hajime Tazaki, Matthieu Coudron, Tom Henderson, and Parth Pratim Chatterjee. 1.3 Manual Structure This document consists of the following parts: 0. Quick Start: The document describes a quick instruction of DCE. 1. User’s Guide: The document is for people who will use DCE to experiment. 1.4 DCE Outlook • To run an application using DCE, it is usually not necessary to change its sources.
    [Show full text]
  • Bsctools Hands-On 3 Virtual Institute – High Productivity Supercomputing
    VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING BSC Tools Extrae & Paraver Hands-On Germán Llort, Judit Giménez Barcelona Supercomputing Center VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING Getting a trace with Extrae 2 VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING Extrae features . Platforms . Intel, Cray, BlueGene, Intel MIC, ARM, Android, Fujitsu Sparc… . Parallel programming model . MPI, OpenMP, pthreads, OmpSs, CUDA, OpenCL, Java, Python... No need . Performance Counters . Using PAPI interface to . Link to source code recompile . Callstack at MPI routines / relink! . OpenMP outlined routines . Selected user functions . Periodic sampling . User events (Extrae API) BSCTOOLS HANDS-ON 3 VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING Extrae overheads Average values Stampede2 (KNL) Stampede2 (SKX) Event 150 – 200 ns 450 ns 110 ns Event + PAPI 750 – 1000 ns 6.3 us 1000 ns Event + callstack (1 level) 600 ns 8.7 us 2.3 us Event + callstack (6 levels) 1.9 us 20 us 5.6 us BSCTOOLS HANDS-ON 4 VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING How does Extrae work? . Symbol substitution through LD_PRELOAD . Specific libraries for each combination of runtimes . MPI Recommended . OpenMP . OpenMP+MPI . … . Dynamic instrumentation . Based on DynInst (developed by U.Wisconsin/U.Maryland) . Instrumentation in memory . Binary rewriting . Static link (i.e., PMPI, Extrae API) BSCTOOLS HANDS-ON 5 VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING Using Extrae in 3 steps 1. Adapt your job submission script 2. Configure what to trace . XML configuration file . Example configurations at $EXTRAE_HOME/share/example 3. Run it! . For further reference check the Extrae User Guide: . https://tools.bsc.es/doc/html/extrae/index.html . Also distributed with Extrae at $EXTRAE_HOME/share/doc BSCTOOLS HANDS-ON 6 VIRTUAL INSTITUTE – HIGH PRODUCTIVITY SUPERCOMPUTING Login to Stampede2 and copy the examples laptop> ssh –Y <USER>@stampede2.tacc.xsede.org stampede2> cp –r ~tg856590/tools-material $WORK stampede2> ls $WORK/tools-material ..
    [Show full text]
  • Quantecon-Python-Programming.Pdf
    Python Programming for Economics and Finance Thomas J. Sargent & John Stachurski Sep 17, 2021 CONTENTS I Introduction to Python 3 1 About Python 5 1.1 Overview ................................................. 5 1.2 What’s Python? .............................................. 5 1.3 Scientific Programming .......................................... 7 1.4 Learn More ................................................ 15 2 Setting up Your Python Environment 17 2.1 Overview ................................................. 17 2.2 Anaconda ................................................. 17 2.3 Jupyter Notebooks ............................................ 18 2.4 Installing Libraries ............................................ 30 2.5 Working with Python Files ........................................ 31 2.6 Exercises ................................................. 32 3 An Introductory Example 35 3.1 Overview ................................................. 35 3.2 The Task: Plotting a White Noise Process ................................ 35 3.3 Version 1 ................................................. 36 3.4 Alternative Implementations ....................................... 40 3.5 Another Application ........................................... 44 3.6 Exercises ................................................. 45 3.7 Solutions ................................................. 47 4 Functions 53 4.1 Overview ................................................. 53 4.2 Function Basics .............................................. 54 4.3 Defining
    [Show full text]