Programming Bootcamp for ScientistThis, along with the other courses can be given either on-site in the offices of the client or on-line via Zoom or other means. Contact Gabor Szabo for more details.
OverviewScientist 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.
- Have a basic understand of what software can do and what it cannot.
- Have an understanding of the differences between environments like Matlab, R, and Python.
- To be able to write programs in Python.
- To master the rich set of Python libraries and modules.
- Understand procedural control flow in Python
- This is a beginner course suitable for anyone wanting to process scientific data. It is especially suitable for students and people working in scientific environments.
- Basic programming background. (e.g., R, Matlab)
- Scientific background (at least Bsc in a science subject).
- Understanding of files and directories.
- Duration of the course is 40 academic hours. (Usually 5 full days).
- The course includes approximately 40% hands on lab work.
- The course can be followed either using Python 2 or Python 3.
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?
Development and runtime environment in Python and elsewhere
- Notepad++ and the command line.
- Jupyter notebook
- Running from the IDE vs. the command line vs. on a server vs. in a cluster.
- Compare the above with Matlab.
The Scientific libraries
- Comparing with Matlab and R
Introduction to Python
- Installing Python
- Where and why to use Python
- Using the Python interactive interpreter
- Documentation and how to get help?
Types and operators
- Lists (arrays)
- Dictionaries (hashes)
- Function parameters
- Positional parameters
- Named parameters
- Default values
- Optional parameters
- Return values
- Function documentation
- Lambda functions
- For loops
- While loops
- Loop controls
- Chained comparison
- Boolean and logical operators
- print formatting
- read/write files
Regular expression (pattern matching)
- Matching all
- Searching for a single match
- Meta characters
- Character classes
- Special character classes
- Modifier flags
The Python standard library
- Filesystem related functions
- Running external processes
- Loading a module
- Finding a module in a private directory
- Changing the search path to a relative directory
- Importing selected functions
- Creating executable module
- Creating non-fatal warnings
- Catching exceptions
- Handling exceptions
- Throwing a new exception
- The final block
- Creating your own exception
Object Oriented Programming
- Defining classes
- Initializing objects
- Attributes or members
- The self
- Installing and using 3rd party modules
- Writing simple web scraping program
- Writing simple Web application
- Accessing SQL databases
- Reading and writing Excel files
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.
If you are interested in this course, contact Gabor Szabo for more details.