Programming Level-up Course - Overview
Dr. Jay Paul Morgan
Bâtiment XUniversité de Toulon
Campus de La Garde
83041 - TOULON
FRANCE
jay.morgan@univ-tln.fr
Google Scholar
Github
Welcome!
Welcome to the Programming Level-up Course. In this series of lectures, we will cover everything we need to be able to program in a Linux-based environment, and use the high performance computers (also called cluster/supercomputers) to run experiments.
Contact information
You can find my personal page over at: https://pageperso.lis-lab.fr/jay.morgan/
As we progress through the lectures, I will also make the course publicly available. These lectures will be hosted at: https://pageperso.lis-lab.fr/jay.morgan/teaching.html in a variety of formats (i.e. PDF, HTML).
If you have any questions please email me directly. My email address is
jay.morgan@lis-lab.fr
. Other modes of contact can be found on my personal website
listed above.
Delivery
- 2/3-hour sessions
- Each session will be conducted in a computer lab and will be combination of a lecture and exercises
- The course is intended to get everyone up-to-speed with the various facets of programming you will need in other courses.
- If time allows, each lecture will have an exercise – though this is not a strict requirement. These exercises are not marked but serve to get you thinking about what you've learnt in the lecture.
Resources
This course aims to deliver everything you need. If you attend each lecture, you will know what you need for the following lectures. Despite this design, however, I have included a list of additional resources below. These resources are optional, but they will take you beyond what you're taught in these sessions and enable you to become a Programming Master!
Books
There is nothing like a good book to learn from. They are usually rich in content, but also provide reasonable enough depth to the subject matter to not only learn how things work, but also why they work the way they do.
- Think Python: An Introduction to Software Design - Livre d'Allen B. Downey
- Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib - Livre de Robert Johansson.
- Classic Shell Scripting - Livre de Arnold Robbins, Nelson H F Beebe
Online resources
For other, more niche, subject matters, online resources provide the most reasonable information to learn from.
Software used in this course
After we're introduced to the Python programming language, and we're comfortable creating the most basic scripts, we'll be using a programming environment to make programming easier. When we're ready, we'll discuss both Jupyter notebooks and the PyCharm IDE.
What will be taught
The course will cover a broad spectrum of skills used when programming for scientific research. This includes the programming and scripting itself (in our case, Python programming), managing the environment in which we work (i.e. working in a Linux-based environment and managing our projects with version control), and interacting with the supercomputers to perform intensive computations.
Python programming
- Basic syntax
- Data structures
- Advanced syntax
- Modules
- Anaconda and Pip
- Different programming development environments
- PyCharm
- Jupyter Notebooks
- Numerical computing in python
- Introduction to numpy
- Pandas
- Scipy
- Visualisation using Matplotlib/seaborn/altair.
GNU/Linux
- Basics of GNU/Linux and terminal
- Creating bash scripts
- Using the university proxy
- Git version control
Using High Performance/Cloud Computing
- GPU management (CUDA, CuDNN, nvidia-smi)
- SLURM
- Google Cloud, AWS
- Singularity
Reporting Results
- Markdown
- LaTeX
A rough timeline
I have included below a rough indication of whats going to be taught and when. Of course, this is subject to change based upon scheduling constraints and rate of progression.
Week | Topic | Description |
---|---|---|
1 | Introduction | - Course introduction |
- Basic Python programming | ||
2 | Python classes | |
3 | Project management | - Creating/importing modules |
- Anaconda/pip | ||
4 | Programming environments | - PyCharm |
- Jupyter notebooks | ||
5 | Numerical computing | - Numpy |
- Scipy | ||
6 | Numerical computing | - Pandas |
- Visualisations | ||
7 | Basics of GNU/Linux | - Using the terminal |
8 | Bash scripting | |
9 | High performance computing | - SLURM |
- Singularity | ||
10 | Reporting | - LaTeX |
- Markdown |