Programming Bootcamp for Scientist

Scientist don't need to become programmers, but they need to use computers and need to use programming languages. In this bootcamp you'll get an overview how computers and programming environment work You'll have an understanding about Open Source Software vs Closed Source Software. You'll learn why and how to use version control system to make experiments safe. You'll learn to use Python and some of its the scientific extensions, such as Numpy and Pandas. This course is similar to the one I gave in the Weizmann Institute of Science in the fall of 2018 that will also run in the fall of 2019.

Target Audience

Prerequisites

Objectives

Course Format

Language

Syllabus

  1. Introduction to Computers and Programming
    • The parts of a computer and a mobile phone
    • Different types of programming languages: Compiled vs. Interpreted
    • Programming paradigms: imperative, procedural, oop, declarative, functional, logic, mathematical.
    • Software licensing model (Closed Source, Share-ware, Open Source, Free Software)
    • Software distribution model (packaged, service, application).
    • Single core, multi core, cluster
    • Complexity - run time, memory usage
    • What is the Internet?
    • What is the Cloud?
  2. Development and runtime environment in Python and elsewhere
    • Notepad++ and the command line.
    • PyCharm
    • Jupyter notebook
    • Spider
    • Running from the IDE vs. the command line vs. on a server vs. in a cluster.
    • Compare the above with Matlab.
  3. The Scientific libraries
    • NumPy
    • Pandas
    • SciPy
    • Matplotlib
    • Seaborn
    • Comparing with Matlab and R
  4. Introduction to Python
    • Installing Python
    • Where and why to use Python
    • Using the Python interactive interpreter
    • Documentation and how to get help?
    • Indentation
  5. Types and operators
    • Strings
    • Numbers
    • Lists (arrays)
    • Tuples
    • Dictionaries (hashes)
    • Sorting
  6. Functions subroutines
    • Function parameters
    • Positional parameters
    • Named parameters
    • Default values
    • Optional parameters
    • Return values
    • Function documentation
    • Lambda functions
  7. Control flow
    • For loops
    • While loops
    • Loop controls
    • Conditionals
    • Chained comparison
    • Enumerate
    • Boolean and logical operators
  8. IO
    • print
    • print formatting
    • read/write files
  9. Regular expression (pattern matching)
    • Matching all
    • Searching for a single match
    • Meta characters
    • Character classes
    • Special character classes
    • Quantifiers
    • Alternatives
    • Modifier flags
    • Anchors
    • Back-references
    • Substitution
  10. The Python standard library
    • Filesystem related functions
    • Running external processes
  11. Creating modules
    • Loading a module
    • Finding a module in a private directory
    • Changing the search path to a relative directory
    • Importing selected functions
    • Namespaces
    • Creating executable module
  12. Exception handling
    • Creating non-fatal warnings
    • Catching exceptions
    • Handling exceptions
    • Throwing a new exception
    • The final block
    • Creating your own exception
  13. Object Oriented Programming
    • Defining classes
    • Initializing objects
    • Methods
    • Attributes or members
    • The self
    • Inheritance
  14. Additional uses
    • Installing and using 3rd party modules
    • Writing simple web scraping program
    • Writing simple Web application
    • Accessing SQL databases
    • Reading and writing Excel files
  15. Version control using Git
    • The manual (home made) version control systems.
    • The advantages of a real version control system
    • Setting up Git on Windows, Linux, and Mac.
    • Adding files and directories
    • Looking at the history of changes
    • Going back in the history
    • Using GitHub and BitBucket.

Contact

Contact: Gabor Szabo gabor@hostlocal.com
Phone: +972-54-4624648